bgneal@820: """Models for the bandmap application.
bgneal@820: 
bgneal@820: """
bgneal@820: import datetime
bgneal@820: 
bgneal@820: from django.db import models
bgneal@820: from django.contrib.auth.models import User
bgneal@843: from django.template.loader import render_to_string
bgneal@820: 
bgneal@820: 
bgneal@822: class BandEntryManager(models.Manager):
bgneal@822:     def new_entry_count(self):
bgneal@822:         return self.filter(is_approved=False).count()
bgneal@822: 
bgneal@822: 
bgneal@820: class BandEntry(models.Model):
bgneal@820:     """Represents a band entry on the band map."""
bgneal@820:     name = models.CharField(max_length=128)
bgneal@820:     user = models.ForeignKey(User)
bgneal@820:     date_submitted = models.DateTimeField()
bgneal@820:     date_approved = models.DateTimeField(null=True, blank=True)
bgneal@820:     url = models.URLField(blank=True, max_length=200)
bgneal@820:     location = models.CharField(max_length=255)
bgneal@820:     lat = models.FloatField()
bgneal@820:     lon = models.FloatField()
bgneal@820:     note = models.CharField(max_length=255, blank=True)
bgneal@820:     is_active = models.BooleanField(default=True, db_index=True)
bgneal@820:     is_approved = models.BooleanField(default=False, db_index=True)
bgneal@843:     html = models.TextField(blank=True)
bgneal@820: 
bgneal@822:     objects = BandEntryManager()
bgneal@822: 
bgneal@820:     class Meta:
bgneal@820:         ordering = ['name']
bgneal@820:         verbose_name_plural = 'band map entries'
bgneal@820: 
bgneal@820:     def __unicode__(self):
bgneal@820:         return u"BandMap entry for {}".format(self.name)
bgneal@820: 
bgneal@820:     def save(self, *args, **kwargs):
bgneal@820:         if not self.pk and not self.date_submitted:
bgneal@820:             self.date_submitted = datetime.datetime.now()
bgneal@843:         html = render_to_string('bandmap/balloon.html', {'band': self})
bgneal@843:         self.html = html.strip().replace('\n', '')
bgneal@820:         super(BandEntry, self).save(*args, **kwargs)