diff options
Diffstat (limited to 'chimere/models.py')
| -rw-r--r-- | chimere/models.py | 53 |
1 files changed, 32 insertions, 21 deletions
diff --git a/chimere/models.py b/chimere/models.py index 9ff442b..dabe9fd 100644 --- a/chimere/models.py +++ b/chimere/models.py @@ -71,13 +71,37 @@ def page_post_save(sender, **kwargs): page.save() post_save.connect(page_post_save, sender=Page) +def shortify(text): + if not text: + return '' + if len(text) <= settings.CHIMERE_SHORT_DESC_LENGTH: + return text + desc = text[:settings.CHIMERE_SHORT_DESC_LENGTH] + short_desc = "" + # find a correct opportunity to cut + for idx, c in enumerate(reversed(desc)): + if c == '>': + break + if c == '<': + short_desc = desc[:-(idx+1)] + break + if not short_desc: + for idx, c in enumerate(reversed(desc)): + if c == ' ' or c == '\n': + short_desc = desc[:-(idx+1)] + break + return BeautifulSoup(short_desc).prettify() + class News(models.Model): """News of the site """ title = models.CharField(_(u"Name"), max_length=150) available = models.BooleanField(_(u"Available")) + is_front_page = models.NullBooleanField(_(u"Is front page"), blank=True, + null=True) date = models.DateField(_(u"Date"), auto_now_add=True) content = models.TextField() + url = models.URLField(_(u"Url"), max_length=200, blank=True, null=True) def __unicode__(self): ordering = ["-date"] return self.title @@ -85,6 +109,10 @@ class News(models.Model): verbose_name = _(u"News") verbose_name_plural = _(u"News") + @property + def short_desc(self): + return shortify(self.content) + class TinyUrl(models.Model): """Tinyfied version of permalink parameters """ @@ -336,6 +364,8 @@ class Marker(GeographicItem): route = models.ForeignKey(u"Route", blank=True, null=True, related_name='associated_marker') description = models.TextField(_(u"Description"), blank=True, null=True) + is_front_page = models.NullBooleanField(_(u"Is front page"), blank=True, + null=True) objects = models.GeoManager() def __unicode__(self): @@ -382,27 +412,8 @@ class Marker(GeographicItem): return self.start_date @property - def description_short(self): - if not self.description: - return '' - if len(self.description) <= settings.CHIMERE_SHORT_DESC_LENGTH: - return self.description - desc = self.description[:settings.CHIMERE_SHORT_DESC_LENGTH] - short_desc = "" - # find a correct opportunity to cut - for idx, c in enumerate(reversed(desc)): - if c == '>': - break - if c == '<': - short_desc = desc[:-(idx+1)] - break - if not short_desc: - for idx, c in enumerate(reversed(desc)): - if c == ' ' or c == '\n': - short_desc = desc[:-(idx+1)] - break - short_desc += "..." - return BeautifulSoup(short_desc).prettify() + def short_desc(self): + return shortify(self.description) class Meta: ordering = ('status', 'name') |
