Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class GalleryProgram(models.Model):
- name = models.CharField(max_length=255, unique=True)
- start_time = models.DateTimeField()
- description = models.TextField(null=True, blank=True, default='', max_length=1024)
- gallery = models.ForeignKey(Gallery, limit_choices_to={'gallery_type': Gallery.TYPE_RADIO}, related_name='playlist', default=None)
- class Meta:
- ordering = ['start_time']
- def __unicode__(self):
- return u'%s' % (self.name)
- class GalleryPlaylist(models.Model):
- program = models.ForeignKey(GalleryProgram, related_name="program", default=None, null=True, blank=True)
- item = models.ForeignKey(GalleryItem)
- start_time = models.TimeField()
- class Meta:
- ordering = ['start_time']
- def __unicode__(self):
- return u'%s %s %s' % (self.program, self.start_time, self.item)
- class GalleryRadioManager(models.Manager):
- def get_queryset(self):
- return super(GalleryRadioManager, self).get_queryset().filter(gallery_type=Gallery.TYPE_RADIO)
- class GalleryRadio(Gallery):
- objects = GalleryRadioManager()
- class Meta:
- proxy = True
- def get_current_item(self):
- try:
- cur = self.playlist.filter(start_time__lte=timezone.now().time()).earliest('-start_time')
- except GalleryPlaylist.DoesNotExist:
- # if there is now item before current time, return last from the playlist
- cur = self.playlist.last()
- return cur
- def get_next_item(self):
- next = self.playlist.filter(start_time__gt=timezone.now().time()).first()
- if not next:
- next = self.playlist.first()
- return next
- def get_previous_item(self):
- cur_item = self.get_current_item()
- try:
- prev = self.playlist.filter(start_time__lt=cur_item.start_time).earliest('-start_time')
- except GalleryPlaylist.DoesNotExist:
- # if there is now item before item start_time, return last from the playlist
- prev = self.playlist.last()
- return prev
- def get_previous_items(self):
- cur_item = self.get_current_item()
- try:
- prev_items = self.playlist.filter(start_time__lt=cur_item.start_time)
- print prev_items
- except GalleryPlaylist.DoesNotExist:
- # if there is no item before item start_time, return last from the playlist
- prev_items = self.playlist.last()
- return prev_items
- def get_current_duration(self):
- """
- get time duration until next item
- """
- now = timezone.now().time()
- nowtd = timedelta(hours=now.hour, minutes=now.minute, seconds=now.second)
- next = self.get_next_item()
- nextd = timedelta(hours=next.start_time.hour, minutes=next.start_time.minute, seconds=next.start_time.second)
- return (nextd - nowtd).seconds
- def to_user(self):
- return {
- 'current_item': self.get_current_item().item.to_user(),
- 'recently_played': [i.item.to_user() for i in self.get_previous_items()]
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement