Merge branch 'master' of ssh://git.planet-lab.org/git/plstackapi
[plstackapi.git] / planetstack / core / models / reservation.py
index 4aeaadd..db3769f 100644 (file)
@@ -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