diff options
Diffstat (limited to 'app/photos/models.py')
-rw-r--r-- | app/photos/models.py | 131 |
1 files changed, 67 insertions, 64 deletions
diff --git a/app/photos/models.py b/app/photos/models.py index 7daae94..9916085 100644 --- a/app/photos/models.py +++ b/app/photos/models.py @@ -1,16 +1,15 @@ +import os.path import datetime from PIL import Image -import os.path + from django.contrib.gis.db import models from django.contrib.sitemaps import Sitemap -from django.contrib.syndication.views import Feed from django.utils.encoding import force_text from django.conf import settings +from taggit.managers import TaggableManager +from locations.models import Location, Region -from taggit.managers import TaggableManager - -from locations.models import Location,Region class Photo(models.Model): description = models.TextField(blank=True, null=True) @@ -26,14 +25,15 @@ class Photo(models.Model): exif_lens = models.CharField(max_length=50, blank=True, null=True) exif_date = models.DateTimeField() """Flickr Specific Stuff""" - flickr_id = models.CharField(max_length=300) #varchar since Flickr ids are larger than than integerfield can handle and BigIntegerField gets weird in Postgres. + # Vlickr id is varchar since Flickr ids are larger than than integerfield can handle and BigIntegerField gets weird in Postgres. + flickr_id = models.CharField(max_length=300) flickr_owner = models.CharField(max_length=20) flickr_server = models.IntegerField() flickr_farm = models.IntegerField() flickr_secret = models.CharField(max_length=50) flickr_originalsecret = models.CharField(max_length=50) - lon = models.FloatField('Longitude',help_text="Longitude of centerpoint",null=True) - lat = models.FloatField('Latitude',help_text="Latitude of centerpoint",null=True) + lon = models.FloatField('Longitude', help_text="Longitude of centerpoint", null=True) + lat = models.FloatField('Latitude', help_text="Latitude of centerpoint", null=True) location = models.ForeignKey(Location, null=True) region = models.ForeignKey(Region, null=True) slideshowimage_width = models.CharField(max_length=4, blank=True, null=True) @@ -42,89 +42,96 @@ class Photo(models.Model): slideshowimage_marginleft = models.CharField(max_length=4, blank=True, null=True) is_public = models.BooleanField(default=True) - class Meta: ordering = ('-pub_date',) - def admin_thumbnail(self): - return force_text('<a href="%s"><img src="%s"></a>' % \ - (self.get_absolute_url(), self.get_small_square_url())) + return force_text('<a href="%s"><img src="%s"></a>' % + (self.get_absolute_url(), self.get_small_square_url())) admin_thumbnail.allow_tags = True admin_thumbnail.short_description = 'Thumbnail' - + def get_local_medium_url(self): - return '%sflickr/med/%s/%s.jpg' %(settings.IMAGES_URL,self.pub_date.strftime("%Y"),self.flickr_id) - + return '%sflickr/med/%s/%s.jpg' % (settings.IMAGES_URL, self.pub_date.strftime("%Y"), self.flickr_id) + def get_local_orig_url(self): - return '%sflickr/full/%s/%s.jpg' %(settings.IMAGES_URL,self.pub_date.strftime("%Y"),self.flickr_id) - + return '%sflickr/full/%s/%s.jpg' % (settings.IMAGES_URL, self.pub_date.strftime("%Y"), self.flickr_id) + def get_local_slideshow_url(self): - return '%sslideshow/%s/%s.jpg' %(settings.IMAGES_URL,self.pub_date.strftime("%Y"),self.flickr_id) - def __unicode__(self): + return '%sslideshow/%s/%s.jpg' % (settings.IMAGES_URL, self.pub_date.strftime("%Y"), self.flickr_id) + + def __str__(self): return self.title - + def get_absolute_url(self): return "/photo/%s/" % (self.id) - + def get_model_name(self): return 'photo' - + def get_small_square_url(self): return self.get_pic_url(size="small_square") - + def get_large_url(self): return self.get_pic_url(size="large") - + def get_small_url(self): return self.get_pic_url(size="small") - + def get_medium_url(self): return self.get_pic_url(size="medium") - + def get_original_url(self): #return self.get_pic_url(size="original") return "http://farm%s.static.flickr.com/%s/%s_%s_o.jpg" % (self.flickr_farm, self.flickr_server, self.flickr_id, self.flickr_originalsecret) + def get_retina_slideshow_url(self): - return '%sslideshow/%s/%sx2.jpg' %(settings.IMAGES_URL,self.pub_date.strftime("%Y"),self.flickr_id) - + return '%sslideshow/%s/%sx2.jpg' % (settings.IMAGES_URL, self.pub_date.strftime("%Y"), self.flickr_id) + def has_retina(self): - return os.path.isfile('%s/slideshow/%s/%sx2.jpg' %(settings.IMAGES_ROOT,self.pub_date.strftime("%Y"),self.flickr_id)) + return os.path.isfile('%s/slideshow/%s/%sx2.jpg' % (settings.IMAGES_ROOT, self.pub_date.strftime("%Y"), self.flickr_id)) + @property def get_height(self): - im = Image.open('%s/slideshow/%s/%s.jpg' %(settings.IMAGES_ROOT,self.pub_date.strftime("%Y"),self.flickr_id)) + im = Image.open('%s/slideshow/%s/%s.jpg' % (settings.IMAGES_ROOT, + self.pub_date.strftime("%Y"), self.flickr_id)) xsize, ysize = im.size return ysize + @property def get_width(self): - im = Image.open('%s/slideshow/%s/%s.jpg' %(settings.IMAGES_ROOT,self.pub_date.strftime("%Y"),self.flickr_id)) + im = Image.open('%s/slideshow/%s/%s.jpg' % (settings.IMAGES_ROOT, + self.pub_date.strftime("%Y"), self.flickr_id)) xsize, ysize = im.size - cal = xsize-120 return xsize + @property def get_margin_top(self): - im = Image.open('%s/slideshow/%s/%s.jpg' %(settings.IMAGES_ROOT,self.pub_date.strftime("%Y"),self.flickr_id)) + im = Image.open('%s/slideshow/%s/%s.jpg' % (settings.IMAGES_ROOT, + self.pub_date.strftime("%Y"), self.flickr_id)) xsize, ysize = im.size - mtop = 340-(ysize/2) + mtop = 340 - (ysize / 2) return mtop - + @property def get_margin_left(self): - im = Image.open('%s/slideshow/%s/%s.jpg' %(settings.IMAGES_ROOT,self.pub_date.strftime("%Y"),self.flickr_id)) + im = Image.open('%s/slideshow/%s/%s.jpg' % (settings.IMAGES_ROOT, + self.pub_date.strftime("%Y"), self.flickr_id)) xsize, ysize = im.size - mtop = 500-(xsize/2) + mtop = 500 - (xsize / 2) return mtop - + @property def flickr_link(self): - return '%s%s/' %('http://www.flickr.com/photos/luxagraf/', self.flickr_id) - + return '%s%s/' % ('http://www.flickr.com/photos/luxagraf/', self.flickr_id) + @property def is_portait(self): if int(self.slideshowimage_height) > int(self.slideshowimage_width): return True else: return False + def get_pic_url(self, size='small'): # small_square=75x75 # thumb=100 on longest side @@ -132,41 +139,39 @@ class Photo(models.Model): # medium=500 on longest side # large=1024 on longest side # original=duh - base_url = "http://static.flickr.com" - size_char='s' # default to small_square - + size_char = 's' # default to small_square if size == 'small_square': - size_char='_s' + size_char = '_s' elif size == 'thumb': - size_char='_t' + size_char = '_t' elif size == 'small': - size_char='_m' + size_char = '_m' elif size == 'medium': - size_char='' + size_char = '' elif size == 'large': - size_char='_b' + size_char = '_b' elif size == 'original': - size_char='_o' - + size_char = '_o' + return "http://farm%s.static.flickr.com/%s/%s_%s%s.jpg" % (self.flickr_farm, self.flickr_server, self.flickr_id, self.flickr_secret, size_char) - + def get_tumble_image(self): - return "%s/crops/%s/%s.jpg" %(settings.IMAGES_URL, self.pub_date.strftime("%Y/%b").lower(), self.id) + return "%s/crops/%s/%s.jpg" % (settings.IMAGES_URL, self.pub_date.strftime("%Y/%b").lower(), self.id) - def get_previous_published(self): return self.get_previous_by_pub_date() - + def get_next_published(self): return self.get_next_by_pub_date() - + def comment_period_open(self): return self.enable_comments and datetime.datetime.today() - datetime.timedelta(30) <= self.pub_date def save(self, *args, **kwargs): super(Photo, self).save() + class PhotoGallery(models.Model): set_id = models.CharField(blank=True, max_length=300) set_title = models.CharField(blank=True, max_length=300) @@ -177,23 +182,22 @@ class PhotoGallery(models.Model): location = models.ForeignKey(Location, null=True) region = models.ForeignKey(Region, null=True) pub_date = models.DateTimeField(null=True) - + class Meta: - ordering = ('-pub_date','id') + ordering = ('-pub_date', 'id') verbose_name_plural = 'Photo Galleries' get_latest_by = 'pub_date' - - def __unicode__(self): + def __str__(self): return self.set_title - + def get_main_image(self): return "%sgallery_thumbs/%s.jpg" % (settings.IMAGES_URL, self.id) - + def get_absolute_url(self): return "/photos/galleries/%s/" % (self.set_slug) - - + + class PhotoGallerySitemap(Sitemap): changefreq = "never" priority = 0.7 @@ -203,4 +207,3 @@ class PhotoGallerySitemap(Sitemap): def lastmod(self, obj): return obj.pub_date - |