Ver código fonte

Backport perf improvements to web edition

Colin Powell 5 anos atrás
pai
commit
dbd1c5e6fd
2 arquivos alterados com 60 adições e 21 exclusões
  1. 4 1
      apps/newsroom/admin.py
  2. 56 20
      apps/newsroom/models.py

+ 4 - 1
apps/newsroom/admin.py

@@ -183,6 +183,9 @@ admin.site.register(Paper)
 
 
 class WebEditionAdmin(admin.ModelAdmin):
+    list_display = ('paper', 'published_on', 'published', 'site')
+    list_filter = ('paper', 'published', 'site')
+    list_per_page = 12
     raw_id_fields = ["featured_story", "featured_photo"]
     filter_horizontal = (
         "stories",
@@ -212,7 +215,7 @@ class WebEditionAdmin(admin.ModelAdmin):
             "Multimedia",
             {
                 "classes": ["collapse"],
-                "fields": ["photos", "galleries", "movies", "slideshows"],
+                "fields": ["photos", "galleries"],
             },
         ),
         (

+ 56 - 20
apps/newsroom/models.py

@@ -1,4 +1,4 @@
-from datetime import datetime
+from datetime import datetime, timedelta
 
 from taggit.managers import TaggableManager
 from taggit.models import Tag
@@ -523,25 +523,61 @@ class PaperEdition(TimeStampedModel):
         return u'%s published %s' % (self.paper, self.published_on)
 
 class WebEdition(TimeStampedModel):
-    paper=models.ForeignKey(Paper)
-    published_on=models.DateField(_('publish on'))
-    published=models.BooleanField(_('published'), default=False)
-    site=models.ForeignKey(Site) 
-    featured_photo=models.ForeignKey(Photo, null=True, blank=True, related_name="featured_photo")
-    featured_story=models.ForeignKey(Story, related_name="featured_story", null=True, blank=True)
-    stories=models.ManyToManyField(Story, blank=True, null=True, help_text="Include the featured story in this list of all stories in this edition.")
-    photos=models.ManyToManyField(Photo, blank=True, null=True, related_name="photos")
-    galleries=models.ManyToManyField(Gallery, blank=True, null=True)
-    movies=models.ManyToManyField(Movie, blank=True, null=True)
-    slideshows=models.ManyToManyField(Slideshow, blank=True, null=True)
-    editorials=models.ManyToManyField(Editorial, blank=True, null=True)
-    pdfdocuments=models.ManyToManyField(PDFDocument, blank=True, null=True)
-    remembrances=models.ManyToManyField(Remembrance, blank=True, null=True)
-    death_announcements=models.ManyToManyField(Announcement, blank=True, null=True)
-    memorial_services=models.ManyToManyField(Service, blank=True, null=True)
-    inmemoriams=models.ManyToManyField(InMemoriam, blank=True, null=True)
-#    historicarticles=models.ManyToManyField(HistoricArticle, blank=True, null=True)
-    
+    paper = models.ForeignKey(Paper)
+    published_on = models.DateField(_('publish on'))
+    published = models.BooleanField(_('published'), default=False)
+    site = models.ForeignKey(Site)
+    featured_photo = models.ForeignKey(Photo, null=True, blank=True, related_name="featured_photo")
+    featured_story = models.ForeignKey(Story, related_name="featured_story", null=True, blank=True)
+    stories = models.ManyToManyField(
+        Story,
+        blank=True,
+        null=True,
+        help_text="Include the featured story in this list of all stories in this edition.",
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+    photos = models.ManyToManyField(
+        Photo,
+        blank=True,
+        null=True,
+        related_name="photos",
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+    galleries = models.ManyToManyField(
+        Gallery,
+        blank=True,
+        null=True,
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+    movies = models.ManyToManyField(Movie, blank=True, null=True)
+    slideshows = models.ManyToManyField(Slideshow, blank=True, null=True)
+    editorials = models.ManyToManyField(Editorial, blank=True, null=True)
+    pdfdocuments = models.ManyToManyField(PDFDocument, blank=True, null=True)
+    remembrances = models.ManyToManyField(
+        Remembrance,
+        blank=True,
+        null=True,
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+    death_announcements = models.ManyToManyField(
+        Announcement,
+        blank=True,
+        null=True,
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+    memorial_servicesl = models.ManyToManyField(
+        Service,
+        blank=True,
+        null=True,
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+    inmemoriams = models.ManyToManyField(
+        InMemoriam,
+        blank=True,
+        null=True,
+        limit_choices_to={'published_on__gte': datetime.today()-timedelta(days = 45)},
+    )
+
     objects=EditionManager()
     on_site = CurrentSiteManager('site')