Changeset f3dcf5a for asadb/forms/models.py
- Timestamp:
- May 23, 2010, 6:38:40 AM (15 years ago)
- Branches:
- master, fysm-4-1, space-access, stable, stage, test-hooks
- Children:
- 0265c6d
- Parents:
- 595915c
- git-author:
- Alex Dehnert <adehnert@…> (05/23/10 06:38:40)
- git-committer:
- Alex Dehnert <adehnert@…> (05/23/10 06:38:40)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asadb/forms/models.py
rf55ccfd rf3dcf5a 2 2 3 3 import datetime 4 import os, errno 4 5 5 6 import settings 6 7 import groups.models 7 from util.misc import log_and_ignore_failures 8 from util.misc import log_and_ignore_failures, mkdir_p 8 9 9 10 class FYSM(models.Model): … … 18 19 tags = models.CharField(max_length=100, blank=True, help_text="Specify some free-form, comma-delimited tags for your group", ) 19 20 categories = models.ManyToManyField('FYSMCategory', blank=True, help_text="Put your group into whichever of our categories seem applicable.", ) 21 join_preview = models.ForeignKey('PagePreview', null=True, ) 22 23 def save(self, *args, **kwargs): 24 if self.join_preview is None or self.join_url != self.join_preview.url: 25 self.join_preview = PagePreview.allocate_page_preview( 26 filename='fysm/%d/group%d'%(self.year, self.group.pk, ), 27 url=self.join_url, 28 ) 29 super(FYSM, self).save(*args, **kwargs) # Call the "real" save() method. 20 30 21 31 class Meta: … … 57 67 record.source_user = request.user.username 58 68 record.save() 69 70 class PagePreview(models.Model): 71 update_time = models.DateTimeField(default=datetime.datetime.utcfromtimestamp(0)) 72 url = models.URLField() 73 image = models.ImageField(upload_to='page-previews', blank=True, ) 74 75 @classmethod 76 def allocate_page_preview(cls, filename, url, ): 77 preview = PagePreview() 78 preview.update_time = datetime.datetime.utcfromtimestamp(0) # Never updated 79 preview.url = url 80 preview.image = 'page-previews/%s.png' % (filename, ) 81 image_filename = os.path.join(settings.MEDIA_ROOT, preview.image.name) 82 mkdir_p(os.path.dirname(image_filename)) 83 try: 84 os.symlink('no-preview.png', image_filename) 85 except OSError as exc: 86 if exc.errno == errno.EEXIST: 87 pass 88 else: raise 89 preview.save() 90 return preview 91 92 def update_preview(self, ): 93 pass 94 95 @classmethod 96 def previews_needing_updates(cls, interval=None, ): 97 if interval is None: 98 interval = datetime.timedelta(days=1) 99 before = datetime.datetime.now() - interval 100 return cls.objects.filter(update_time__le=before)
Note: See TracChangeset
for help on using the changeset viewer.