X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fmodels%2Freservation.py;h=db3769f7168083402d11f48607ed0291abd7263b;hb=fdde90f7ec7632a82686f84f8a47886c34fe13dd;hp=1a41ee520986a21ea0ade4f9aaa53cdd5aeecc31;hpb=ea03c931d5862f76aa7002b982bca0e600ea2db4;p=plstackapi.git diff --git a/planetstack/core/models/reservation.py b/planetstack/core/models/reservation.py index 1a41ee5..db3769f 100644 --- a/planetstack/core/models/reservation.py +++ b/planetstack/core/models/reservation.py @@ -1,4 +1,5 @@ import os +import datetime from django.db import models from core.models import PlCoreBase from core.models import Sliver @@ -12,7 +13,23 @@ 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") @@ -25,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