Quellcode durchsuchen

Fix auto slugs in rememberance app

Colin Powell vor 5 Jahren
Ursprung
Commit
14af86e311
1 geänderte Dateien mit 48 neuen und 53 gelöschten Zeilen
  1. 48 53
      apps/remember/models.py

+ 48 - 53
apps/remember/models.py

@@ -1,19 +1,21 @@
 from datetime import datetime, timedelta
-from dateutil.relativedelta import relativedelta
 
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
+from dateutil.relativedelta import relativedelta
+from django.contrib.auth.models import User
 from django.core.urlresolvers import reverse
+from django.db import models
 from django.template.defaultfilters import slugify
-
-from django.contrib.auth.models import User
+from django.utils.translation import ugettext_lazy as _
+from django_extensions.db.fields import AutoSlugField
 from django_extensions.db.models import TimeStampedModel
+
 from remember.managers import PublishedManager
 
+
 class PublishExpiringModel(TimeStampedModel):
-    expires_on=models.DateTimeField(_('Expires on'), default=datetime.today()+timedelta(days=7), blank=True, null=True)
-    published=models.BooleanField(_('Published'), default=False)
-    published_on=models.DateTimeField(_('Published on'))
+    expires_on = models.DateTimeField(_('Expires on'), default=datetime.today()+timedelta(days=7), blank=True, null=True)
+    published = models.BooleanField(_('Published'), default=False)
+    published_on = models.DateTimeField(_('Published on'))
 
     objects = PublishedManager()
 
@@ -21,8 +23,8 @@ class PublishExpiringModel(TimeStampedModel):
         abstract=True
 
 class RemembrancePhoto(PublishExpiringModel):
-    name=models.CharField(_('Name'), max_length=100)
-    image=models.ImageField(_('Image'), upload_to='remember/photos/')
+    name = models.CharField(_('Name'), max_length=100)
+    image = models.ImageField(_('Image'), upload_to='remember/photos/')
 
     class Meta:
 	ordering = ('-published_on',)
@@ -34,13 +36,13 @@ class RemembrancePhoto(PublishExpiringModel):
 class InMemoriam(PublishExpiringModel):
     '''In Memorum model.
     Effectively an anniversary obit. Runs anytime, not just at TOD.'''
-    title=models.CharField(_('Title'), max_length=140)
-    slug=models.SlugField(_('Slug'), unique=True)
-    dateline=models.CharField(_('Dateline'), blank=True, null=True, max_length=100)
-    name=models.CharField(_('Name'), max_length=70, blank=True, null=True)
-    copy=models.TextField(_('Copy'))
-    photos=models.ManyToManyField(RemembrancePhoto, blank=True, null=True)
-    military=models.BooleanField(_('Military service?'), default=False)
+    title = models.CharField(_('Title'), max_length=140)
+    slug = AutoSlugField(_('slug'), populate_from='title', editable=True)
+    dateline = models.CharField(_('Dateline'), blank=True, null=True, max_length=100)
+    name = models.CharField(_('Name'), max_length=70, blank=True, null=True)
+    copy = models.TextField(_('Copy'))
+    photos = models.ManyToManyField(RemembrancePhoto, blank=True, null=True)
+    military = models.BooleanField(_('Military service?'), default=False)
 
     class Meta:
 	ordering = ('-published_on',)
@@ -57,12 +59,12 @@ class InMemoriam(PublishExpiringModel):
 class Remembrance(PublishExpiringModel):
     '''Remembrance model.
        An obituary by any other name.'''
-    name=models.CharField(_('Name'), max_length=100)
-    slug=models.SlugField(_('Slug'), unique=True)
-    dateline=models.CharField(_('Dateline'), blank=True, null=True, max_length=100)
-    body=models.TextField(_('Body'))
-    photos=models.ManyToManyField(RemembrancePhoto, blank=True, null=True)
-    military=models.BooleanField(_('Military service?'), default=False)
+    name = models.CharField(_('Name'), max_length=100)
+    slug = AutoSlugField(_('slug'), populate_from='name', editable=True)
+    dateline = models.CharField(_('Dateline'), blank=True, null=True, max_length=100)
+    body = models.TextField(_('Body'))
+    photos = models.ManyToManyField(RemembrancePhoto, blank=True, null=True)
+    military = models.BooleanField(_('Military service?'), default=False)
         
     class Meta:
 	ordering = ('-published_on',)
@@ -80,24 +82,24 @@ class Remembrance(PublishExpiringModel):
 class Announcement(PublishExpiringModel):
     '''Announcement model.
     A simple announcement of a death.'''
-    first_name=models.CharField(_('First name'), max_length=70)
-    middle_name=models.CharField(_('Middle name'), max_length=70, blank=True, null=True)
-    last_name=models.CharField(_('Last name'), max_length=70)
-    slug=models.SlugField(_('Slug'), unique=True)
-    copy=models.TextField(_('Copy'))
+    first_name = models.CharField(_('First name'), max_length=70)
+    middle_name = models.CharField(_('Middle name'), max_length=70, blank=True, null=True)
+    last_name = models.CharField(_('Last name'), max_length=70)
+    slug = AutoSlugField(_('slug'), populate_from='name', editable=True)
+    copy = models.TextField(_('Copy'))
     '''
-    nickname=models.CharField(_('Nickname'), blank=True, null=True, max_length=100)
-    residence=models.CharField(_('Residence'), blank=True, null=True, max_length=100)
-    fixed_age=models.IntegerField(_('Age'), max_length=3, blank=True, null=True)
-    birth_year=models.IntegerField(max_length=4, blank=True, null=True)
-    birth_date=models.DateField(blank=True, null=True)
-    death_date=models.DateField(blank=True, null=True)
-    death_location=models.CharField(_('Death location'), blank=True, null=True, max_length=200)
-    remembrance=models.ForeignKey(Remembrance, blank=True, null=True)
-    service_date=models.DateTimeField(blank=True, null=True)
-    service_location=models.CharField(blank=True, null=True, max_length=200)
-    armed_service=models.BooleanField(_('Armed service'), default=False)
-    service_branch=models.CharField(_('Service branch'), blank=True, null=True, max_length=20)'''
+    nickname = models.CharField(_('Nickname'), blank=True, null=True, max_length=100)
+    residence = models.CharField(_('Residence'), blank=True, null=True, max_length=100)
+    fixed_age = models.IntegerField(_('Age'), max_length=3, blank=True, null=True)
+    birth_year = models.IntegerField(max_length=4, blank=True, null=True)
+    birth_date = models.DateField(blank=True, null=True)
+    death_date = models.DateField(blank=True, null=True)
+    death_location = models.CharField(_('Death location'), blank=True, null=True, max_length=200)
+    remembrance = models.ForeignKey(Remembrance, blank=True, null=True)
+    service_date = models.DateTimeField(blank=True, null=True)
+    service_location = models.CharField(blank=True, null=True, max_length=200)
+    armed_service = models.BooleanField(_('Armed service'), default=False)
+    service_branch = models.CharField(_('Service branch'), blank=True, null=True, max_length=20)'''
         
     class Meta:
 	ordering = ('-published_on',)
@@ -134,12 +136,12 @@ class Announcement(PublishExpiringModel):
 
 class Service(PublishExpiringModel):
     '''Service model.'''
-    announcement=models.ForeignKey(Announcement, blank=True, null=True)
-    name=models.CharField(_('Title'), max_length=100, blank=True, null=True)
-    slug=models.SlugField(_('Slug'), unique=True, blank=True)
-    location=models.CharField(_('Location'), max_length=200, blank=True, null=True)
-    date=models.DateTimeField(_('Date and time'), blank=True, null=True)
-    body=models.TextField(_('Body'))
+    announcement = models.ForeignKey(Announcement, blank=True, null=True)
+    name = models.CharField(_('Title'), max_length=100, blank=True, null=True)
+    slug = AutoSlugField(_('slug'), populate_from='name', editable=True)
+    location = models.CharField(_('Location'), max_length=200, blank=True, null=True)
+    date = models.DateTimeField(_('Date and time'), blank=True, null=True)
+    body = models.TextField(_('Body'))
         
     class Meta:
         verbose_name = _('sevice')
@@ -150,13 +152,6 @@ class Service(PublishExpiringModel):
             return self.announcement.slug + " memorial service"
         else:
             return u'%s' % self.name
-        
-    def save(self):
-        if not self.slug and self.announcement:
-            self.slug = self.announcement.slug
-        else:
-            self.slug = slugify(self.name)
-        super(TimeStampedModel, self).save()
 
     #@models.permalink
     #def get_absolute_url(self):