X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fmodels%2Freservation.py;h=db3769f7168083402d11f48607ed0291abd7263b;hb=9345a58c0458447b5444e925367459b79df206f5;hp=4aeaaddd291bcdba99ec5ce1903ed166b7c4a796;hpb=e444a00934e7e1f15d29bd3f02c110a4f944719e;p=plstackapi.git diff --git a/planetstack/core/models/reservation.py b/planetstack/core/models/reservation.py index 4aeaadd..db3769f 100644 --- a/planetstack/core/models/reservation.py +++ b/planetstack/core/models/reservation.py @@ -13,12 +13,24 @@ class Reservation(PlCoreBase): slice = models.ForeignKey(Slice, related_name="reservations") duration = models.IntegerField(default=1) - def __unicode__(self): return u'%s duration %d' % (self.startTime, self.duration) + def __unicode__(self): return u'%s to %s' % (self.startTime, self.endTime) @property def endTime(self): return self.startTime + datetime.timedelta(hours=self.duration) + def can_update(self, user): + return self.slice.can_update(user) + + @staticmethod + def select_by_user(user): + if user.is_admin: + qs = Reservation.objects.all() + else: + slice_ids = [s.id for s in Slice.select_by_user(user)] + qs = Reservation.objects.filter(id__in=slice_ids) + return qs + class ReservedResource(PlCoreBase): sliver = models.ForeignKey(Sliver, related_name="reservedResourrces") resource = models.ForeignKey(ServiceResource, related_name="reservedResources") @@ -30,6 +42,16 @@ class ReservedResource(PlCoreBase): def __unicode__(self): return u'%d %s on %s' % (self.quantity, self.resource, self.sliver) - + def can_update(self, user): + return self.sliver.slice.can_update(user) + + @staticmethod + def select_by_user(user): + if user.is_admin: + qs = ReservedResource.objects.all() + else: + sliver_ids = [s.id for s in Sliver.select_by_user(user)] + qs = ReservedResource.objects.filter(id__in=sliver_ids) + return qs