3 from django.db import models
4 from core.models import PlCoreBase
5 from core.models import Sliver
6 from core.models import Slice
7 from core.models import ServiceResource
9 # Create your models here.
11 class Reservation(PlCoreBase):
12 startTime = models.DateTimeField()
13 slice = models.ForeignKey(Slice, related_name="reservations")
14 duration = models.IntegerField(default=1)
16 def __unicode__(self): return u'%s to %s' % (self.startTime, self.endTime)
20 return self.startTime + datetime.timedelta(hours=self.duration)
22 def can_update(self, user):
23 return self.slice.can_update(user)
25 def save_by_user(self, user, *args, **kwds):
26 if self.can_update(user):
27 super(Reservation, self).save(*args, **kwds)
30 def select_by_user(user):
32 qs = Reservation.objects.all()
34 slice_ids = [s.id for s in Slice.select_by_user(user)]
35 qs = Reservation.objects.filter(id__in=slice_ids)
38 class ReservedResource(PlCoreBase):
39 sliver = models.ForeignKey(Sliver, related_name="reservedResourrces")
40 resource = models.ForeignKey(ServiceResource, related_name="reservedResources")
41 quantity = models.IntegerField(default=1)
42 reservationSet = models.ForeignKey(Reservation, related_name="reservedResources")
44 class Meta(PlCoreBase.Meta):
45 verbose_name_plural = "Reserved Resources"
47 def __unicode__(self): return u'%d %s on %s' % (self.quantity, self.resource, self.sliver)
49 def can_update(self, user):
50 return self.sliver.slice.can_update(user)
52 def save_by_user(self, user, *args, **kwds):
53 if self.can_update(user):
54 super(ReservedResource, self).save(*args, **kwds)
57 def select_by_user(user):
59 qs = ReservedResource.objects.all()
61 sliver_ids = [s.id for s in Sliver.select_by_user(user)]
62 qs = ReservedResource.objects.filter(id__in=sliver_ids)