from django.contrib.gis.db import models from PIL import Image from blog.models import Entry from photos.models import PhotoGallery from locations.models import State PUB_STATUS = ( (0, 'Draft'), (1, 'Published'), ) import datetime def get_upload_path(self, filename): return "images/projects/np/%s/%s" %(datetime.datetime.today().strftime("%Y"), filename) class NationalParks(models.Model): type = models.CharField(max_length=50) name = models.CharField(max_length=254) state = models.ForeignKey(State, null=True) size = models.CharField(max_length=10, null=True) fee = models.CharField(max_length=5, null=True) camping_fee = models.CharField(max_length=10, null=True) url = models.CharField(max_length=250, null=True) code= models.CharField(max_length=16) unit_name= models.CharField(max_length=254) date_visited_begin = models.DateField('Date Visited',null=True) date_visited_end = models.DateField('Date Visited',null=True) date_park_created = models.DateField('Date Park Created',null=True) zoom= models.IntegerField(null=True) mpoly = models.MultiPolygonField(null=True) visited = models.BooleanField(default=False) dek = models.TextField(null=True, blank=True) tag_line = models.CharField(max_length=254, null=True) post = models.ForeignKey(Entry, null=True) gallery = models.ForeignKey(PhotoGallery, blank=True, null=True, verbose_name='photo set') image = models.FileField(upload_to=get_upload_path, null=True,blank=True,help_text="width: 980px, height: > 450px") image_height = models.CharField(max_length=20, null=True,blank=True) image_width = models.CharField(max_length=20, null=True,blank=True) objects = models.GeoManager() class Meta: verbose_name_plural = "National Parks" app_label = 'projects' ordering = ('-visited','unit_name',) # Returns the string representation of the model. def __unicode__(self): return self.unit_name def save(self): #get image dimensions img = Image.open(self.image) self.image_width, self.image_height = img.size super(NationalParks, self).save()