qrurls/models.py
changeset 7 8202196630d3
parent 6 e821a59bf3a7
child 9 ccb1736fba1a
equal deleted inserted replaced
6:e821a59bf3a7 7:8202196630d3
    26         )
    26         )
    27 
    27 
    28     def get_absolute_url (self) :
    28     def get_absolute_url (self) :
    29         return reverse('shorturl', args=[self.shorturl])
    29         return reverse('shorturl', args=[self.shorturl])
    30 
    30 
    31     def get_item (self, now=None) :
    31     def active_item(self, now=None) :
       
    32         """Currently published URLItem."""
    32         if now is None :
    33         if now is None :
    33             now = timezone.now()
    34             now = timezone.now()
    34 
    35 
    35         return URLItem.objects.filter(shorturl=self, published__lt=now).order_by('-published')[0]
    36         return URLItem.objects.filter(shorturl=self, published__lt=now).order_by('-published')[0]
       
    37 
       
    38     def upcoming_item(self, now=None) :
       
    39         """Following published URLItem."""
       
    40         if now is None :
       
    41             now = timezone.now()
       
    42 
       
    43         return URLItem.objects.filter(shorturl=self, published__lt=now).order_by('published')[0]
    36 
    44 
    37     def __unicode__ (self) :
    45     def __unicode__ (self) :
    38         return self.shorturl
    46         return self.shorturl
    39 
    47 
    40 class URLItem(models.Model):
    48 class URLItem(models.Model):
    48         ordering = ['published']
    56         ordering = ['published']
    49 
    57 
    50     def get_absolute_url (self) :
    58     def get_absolute_url (self) :
    51         return self.url
    59         return self.url
    52     
    60     
    53     def published_state (self) :
    61     def published_age (self) :
    54         now = timezone.now()
    62         now = timezone.now()
    55 
       
    56         publish_date = self.published.strftime("%Y-%m-%d")
       
    57 
    63 
    58         if now > self.published:
    64         if now > self.published:
    59             td = now - self.published
    65             td = now - self.published
    60         else :
    66         else :
    61             td = self.published - now
    67             td = self.published - now
    62 
    68 
    63         print now, self.published, td
       
    64 
       
    65         days, seconds = td.days, td.seconds
    69         days, seconds = td.days, td.seconds
    66         m, s = divmod(seconds, 60)
    70         m, s = divmod(seconds, 60)
    67         h, m = divmod(m, 60)
    71         h, m = divmod(m, 60)
    68         age = "{h}h {m}m {s}s".format(h=h, m=m, s=s)
    72 
       
    73         return days, "{h}h {m}m {s}s".format(h=h, m=m, s=s)
       
    74 
       
    75     def published_state (self) :
       
    76         now = timezone.now()
       
    77 
       
    78         publish_date = self.published.strftime("%Y-%m-%d")
       
    79 
       
    80         days, age = self.published_age()
    69 
    81 
    70         if self.published < now and days :
    82         if self.published < now and days :
    71             return "Published ({date})".format(date=publish_date)
    83             return "Published ({date})".format(date=publish_date)
    72         elif self.published < now :
    84         elif self.published < now :
    73             return "Published ({age})".format(age=age)
    85             return "Published ({age})".format(age=age)
    75             return "Scheduled ({when})".format(when=publish_date)
    87             return "Scheduled ({when})".format(when=publish_date)
    76         else :
    88         else :
    77             return "Scheduled ({age})".format(age=age)
    89             return "Scheduled ({age})".format(age=age)
    78 
    90 
    79     def __unicode__ (self) :
    91     def __unicode__ (self) :
    80         return self.url
    92         days, age = self.published_age()
       
    93 
       
    94         return u"[{days}d {age}] {url}".format(
       
    95                 url=self.get_absolute_url(),
       
    96                 days=days,
       
    97                 age=age,
       
    98         )