summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py53
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')