Changeset 0265c6d for asadb/forms/models.py
- Timestamp:
- May 23, 2010, 7:25:20 PM (16 years ago)
- Branches:
- master, fysm-4-1, space-access, stable, stage, test-hooks
- Children:
- 1fbe127
- Parents:
- f3dcf5a
- git-author:
- Alex Dehnert <adehnert@…> (05/23/10 19:25:20)
- git-committer:
- Alex Dehnert <adehnert@…> (05/23/10 19:25:20)
- File:
-
- 1 edited
-
asadb/forms/models.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
asadb/forms/models.py
rf3dcf5a r0265c6d 7 7 import groups.models 8 8 from util.misc import log_and_ignore_failures, mkdir_p 9 import util.previews 9 10 10 11 class FYSM(models.Model): … … 73 74 image = models.ImageField(upload_to='page-previews', blank=True, ) 74 75 76 never_updated = datetime.datetime.utcfromtimestamp(0) # Never updated 77 update_interval = datetime.timedelta(hours=23) 78 79 def image_filename(self, ): 80 return os.path.join(settings.MEDIA_ROOT, self.image.name) 81 82 75 83 @classmethod 76 84 def allocate_page_preview(cls, filename, url, ): 77 85 preview = PagePreview() 78 preview.update_time = datetime.datetime.utcfromtimestamp(0) # Neverupdated86 preview.update_time = cls.never_updated 79 87 preview.url = url 80 preview.image = 'page-previews/%s. png' % (filename, )81 image_filename = os.path.join(settings.MEDIA_ROOT, preview.image.name)88 preview.image = 'page-previews/%s.jpg' % (filename, ) 89 image_filename = preview.image_filename() 82 90 mkdir_p(os.path.dirname(image_filename)) 83 91 try: 84 os.symlink('no-preview. png', image_filename)92 os.symlink('no-preview.jpg', image_filename) 85 93 except OSError as exc: 86 94 if exc.errno == errno.EEXIST: … … 91 99 92 100 def update_preview(self, ): 93 pass 101 self.update_time = datetime.datetime.now() 102 self.save() 103 failure = util.previews.generate_webpage_preview(self.url, self.image_filename(), ) 104 if failure: 105 self.update_time = self.never_updated 106 self.save() 94 107 95 108 @classmethod 96 109 def previews_needing_updates(cls, interval=None, ): 97 110 if interval is None: 98 interval = datetime.timedelta(days=1)111 interval = cls.update_interval 99 112 before = datetime.datetime.now() - interval 100 return cls.objects.filter(update_time__le=before) 113 return cls.objects.filter(update_time__lte=before) 114 115 @classmethod 116 def update_outdated_previews(cls, interval=None, ): 117 previews = cls.previews_needing_updates(interval) 118 now = datetime.datetime.now() 119 update_list = [] 120 previews_dict = {} 121 for preview in previews: 122 update_list.append((preview.url, preview.image_filename(), )) 123 previews_dict[preview.url] = preview 124 preview.update_time = now 125 preview.save() 126 failures = util.previews.generate_webpage_previews(update_list) 127 for url, msg in failures: 128 print "%s: %s" % (url, msg, ) 129 preview = previews_dict[url] 130 preview.update_time = cls.never_updated 131 preview.save()
Note: See TracChangeset
for help on using the changeset viewer.