added rbac for viewing objects
diff --git a/planetstack/core/models/reservation.py b/planetstack/core/models/reservation.py
index e445228..e89b4c8 100644
--- a/planetstack/core/models/reservation.py
+++ b/planetstack/core/models/reservation.py
@@ -19,6 +19,22 @@
def endTime(self):
return self.startTime + datetime.timedelta(hours=self.duration)
+ def can_update(self, user):
+ return self.slice.can_update(user)
+
+ def save_by_user(self, user, *args, **kwds):
+ if self.can_update(user):
+ super(Reservation, self).save(*args, **kwds)
+
+ @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 +46,20 @@
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)
+ def save_by_user(self, user, *args, **kwds):
+ if self.can_update(user):
+ super(ReservedResource, self).save(*args, **kwds)
+
+ @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