Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 23rd, 2012  |  syntax: None  |  size: 2.39 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. import os
  2. import settings
  3.  
  4. from django.db import models
  5.  
  6. from datetime import date, datetime
  7.  
  8. from undermythumb.renderers import ResizeRenderer, CropRenderer
  9. from undermythumb.fields import ImageWithThumbnailsField, ImageFallbackField
  10.  
  11. from autoslug.fields import AutoSlugField
  12.  
  13.  
  14. def photo_path(instance, filename):
  15.     fn, ext = os.path.splitext(filename)
  16.     return 'festivals/%s/%s%s' % (instance.festival.slug, fn, ext)
  17.  
  18. def edition_slug(instance):
  19.     slug = '%s-%s' % (instance.festival.slug, instance.start.strftime('%Y'))
  20.     return slug
  21.  
  22.  
  23. class Festival(models.Model):
  24.     name = models.CharField(max_length=100,
  25.                             help_text="e.g. Coachella")
  26.     display_name = models.CharField(max_length = 100,
  27.                                     help_text = "Pitchfork Music Festival Chicago")
  28.     slug = AutoSlugField(max_length=40, populate_from='name')
  29.  
  30.     def __unicode__(self):
  31.         return self.name
  32.  
  33.  
  34.  
  35. class FestivalEdition(models.Model):
  36.     festival = models.ForeignKey(Festival, related_name='editions')
  37.     slug = AutoSlugField(populate_from=edition_slug)
  38.     start = models.DateField()
  39.     end = models.DateField()
  40.  
  41.     def __unicode__(self):
  42.         return '%s: %s' % (self.festival.display_name, self.start.strftime('%Y'))
  43.    
  44.  
  45.  
  46. class Photo(models.Model):
  47.     image = ImageWithThumbnailsField(upload_to=photo_path, thumbnails = [
  48.                                     ('thumb', CropRenderer(width=151, height=151, quality=100)),
  49.                                     ])
  50.     date_taken = models.DateField()
  51.     created_date = models.DateField(default=datetime.now)
  52.     photographer = models.CharField(max_length=60, blank=True, null=True)
  53.  
  54.     class Meta:
  55.         abstract = True
  56.  
  57.     def __unicode__(self):
  58.         return '%s: %s' % (self.festival, self.date_taken.strftime('%A'))
  59.  
  60.  
  61. class PitchforkPhoto(Photo):
  62.     festival = models.ForeignKey(FestivalEdition, related_name='pitchfork_photos')
  63.     caption = models.CharField(max_length=140, blank=True, null=True)
  64.  
  65.  
  66. class HTCPhoto(Photo):
  67.     festival = models.ForeignKey(FestivalEdition, related_name='htc_photos')
  68.     from_photog = models.BooleanField(default=True,
  69.                                  help_text='Leave this checked if this image was taken by a p4k photog')
  70.     from_personality = models.BooleanField(default=False,
  71.                                            help_text='Check this box if photo is from an HTC personality, like Elijah Wood')