def avg_rating(self): return avg( int(v) for v in self.reviews.values_list('rating', flat=True)) def tag_names(self): return ', '.join(self.tags.values_list('name', flat=True)) def __unicode__(self): return self.name @models.permalink def get_absolute_url(self): return ('establishment', None, {'slug': self.slug}) _slugger = set_default_slug(lambda x: x.name) models.signals.pre_save.connect(_slugger, sender=Establishment) # limit us to tags in valid groups # we can't do this in the model definition, as Establishment isn't yet defined # NOTE: this is kind of monkeypatchy and might break in future djangos # FIXME: this breaks syncdb from a blank database, since ContentType doesn't have # a table yet # Establishment.tags.field.rel.limit_choices_to = { # 'group__content_types': ContentType.objects.get_for_model(Establishment) # } def set_geographical_vars(sender, instance, **kwargs): try:
CONDITION_CHOICES = ( ('1', "Poor: Complete but severly damaged"), ('2', "Fair: Has all text pages, may be missing cover or end pages"), ('3', "Good: Complete but well worn"), ('4', "Very Good: Worn but untorn, minimal or no marks"), ('5', "As New"), ) condition = models.CharField(max_length=1, choices=CONDITION_CHOICES, blank=False) is_published = models.BooleanField(default=True) objects = models.Manager() published = PublishedBooksManager() unsold = UnsoldBooksManager() def sold(self, date=None): sold = self.sold_at return sold and sold <= (date or datetime.datetime.now()) @models.permalink def get_absolute_url(self): return ('books.views.book_details', [self.slug]) def __unicode__(self): return self.slug or '<no slug>' _slugger = set_default_slug(lambda x: x.title) signals.pre_save.connect(_slugger, sender=BookListing)
objects = models.Manager() published = PublishedSeniorManager() def __unicode__(self): return self.slug or "<no slug>" def geocode(self): if self.state is not "NU": loc = [self.city, self.state] url = GEOCODE_REQUEST_URL % {"req": urllib.quote_plus(", ".join(loc)), "key": settings.GMAPS_API_KEY} data = urllib2.urlopen(url).read() response_code, accuracy, latitude, longitude = data.split(",") self.latitude = latitude self.longitude = longitude _slugger = set_default_slug(lambda x: x.student) signals.pre_save.connect(_slugger, sender=HousingListing) def set_geographical_vars(sender, instance, **kwargs): try: if instance.auto_geocode: instance.geocode() except urllib2.URLError: pass models.signals.pre_save.connect(set_geographical_vars, sender=HousingListing)
('1', "Poor: Complete but severly damaged"), ('2', "Fair: Has all text pages, may be missing cover or end pages"), ('3', "Good: Complete but well worn"), ('4', "Very Good: Worn but untorn, minimal or no marks"), ('5', "As New"), ) condition = models.CharField(max_length=1, choices=CONDITION_CHOICES, blank=False) is_published = models.BooleanField(default=True) objects = models.Manager() published = PublishedBooksManager() unsold = UnsoldBooksManager() def sold(self, date=None): sold = self.sold_at return sold and sold <= (date or datetime.datetime.now()) @models.permalink def get_absolute_url(self): return ('books.views.book_details', [self.slug]) def __unicode__(self): return self.slug or '<no slug>' _slugger = set_default_slug(lambda x: x.title) signals.pre_save.connect(_slugger, sender=BookListing)
(self.sponsor_url, self.sponsor)) else: return mark_safe(self.sponsor) def __unicode__(self): return self.slug or '<no slug>' @models.permalink def get_absolute_url(self): return ('announcement', [str(self.date_start.year), self.slug]) class Meta: get_latest_by = 'date_start' _slugger = set_default_slug(lambda x: x.title, lambda x: {'date_start__year': x.date_start.year}) models.signals.pre_save.connect(_slugger, sender=Announcement) class Poster(models.Model): title = models.CharField(max_length=90) poster = models.ForeignKey(ImageFile, null=True, blank=True) sponsor_name = models.CharField(max_length=100) sponsor_url = models.URLField(blank=True, verify_exists=True) sponsor_user = models.ForeignKey(UserProfile) date_start = models.DateField(default=datetime.date.today) date_end = models.DateField(default=datetime.date.today) is_published = models.BooleanField(default=False)
hours = models.CharField(max_length=25, blank=True) when = models.CharField(max_length=25, blank=True) where = models.CharField(max_length=50, blank=True) at_swat = models.BooleanField(default=True, blank=True) needs_car = models.BooleanField(default=False, blank=True) is_published = models.BooleanField(default=False) objects = models.Manager() published = PublishedJobsManager() unfilled = UnfilledJobsManager() @models.permalink def get_absolute_url(self): return ('jobs.views.job_details', [self.slug]) def __unicode__(self): return self.slug or '<no slug>' def get_pay(self): return self.pay if self.is_paid else 'None' def contact_info(self): n = self.contact_name return n + (' (%s)' % self.contact_email if self.contact_email else '') _slugger = set_default_slug(lambda x: x.name) signals.pre_save.connect(_slugger, sender=JobListing)
screwer = models.CharField(max_length=100) pub_date = models.DateTimeField(default=datetime.datetime.now) screwed_at = models.DateTimeField(blank=True, null=True, default=None) CLASS_YEAR = ( ('1', "2012 - Freshman"), ('2', "2011 - Sophomore"), ('3', "2010 - Junior"), ('4', "2009 - Senior"), ) year = models.CharField(max_length=1, choices=CLASS_YEAR, blank=False) is_published = models.BooleanField(default=True) objects = models.Manager() published = PublishedScrewManager() unscrewed = UnscrewedManager() def screwed(self, date=None): screwed = self.screwed_at return screwed and screwed <= (date or datetime.datetime.now()) def __unicode__(self): return self.slug or '<no slug>' _slugger = set_default_slug(lambda x: x.screwee) signals.pre_save.connect(_slugger, sender=ScrewListing)
def __unicode__(self): return self.slug or '<no slug>' def geocode(self): if self.state is not "NU": loc = [self.city, self.state] url = GEOCODE_REQUEST_URL % { 'req': urllib.quote_plus(', '.join(loc)), 'key': settings.GMAPS_API_KEY } data = urllib2.urlopen(url).read() response_code, accuracy, latitude, longitude = data.split(',') self.latitude = latitude self.longitude = longitude _slugger = set_default_slug(lambda x: x.student) signals.pre_save.connect(_slugger, sender=HousingListing) def set_geographical_vars(sender, instance, **kwargs): try: if instance.auto_geocode: instance.geocode() except urllib2.URLError: pass models.signals.pre_save.connect(set_geographical_vars, sender=HousingListing)
return mark_safe('<a href="%s">%s</a>' % (self.sponsor_url, self.sponsor)) else: return mark_safe(self.sponsor) def __unicode__(self): return self.slug or "<no slug>" @models.permalink def get_absolute_url(self): return ("announcement", [str(self.date_start.year), self.slug]) class Meta: get_latest_by = "date_start" _slugger = set_default_slug(lambda x: x.title, lambda x: {"date_start__year": x.date_start.year}) models.signals.pre_save.connect(_slugger, sender=Announcement) class Poster(models.Model): title = models.CharField(max_length=90) poster = models.ForeignKey(ImageFile, null=True, blank=True) sponsor_name = models.CharField(max_length=100) sponsor_url = models.URLField(blank=True, verify_exists=True) sponsor_user = models.ForeignKey(UserProfile) date_start = models.DateField(default=datetime.date.today) date_end = models.DateField(default=datetime.date.today) is_published = models.BooleanField(default=False)
""" A bucket containing media files related in some way. Probably, we want to limit the total number of buckets: make one for generic catch-alls, one for reusable pictures of buildings, one for generic reusables, etc. """ name = models.CharField(max_length=100) slug = models.SlugField(unique=True) description = models.TextField(blank=True) def __unicode__(self): return self.slug _bucket_slugger = set_default_slug(lambda bucket: bucket.name) signals.pre_save.connect(_bucket_slugger, sender=MediaBucket) class BaseFile(models.Model): """ The abstract base for media files; deals with most of the relevant metadata. """ name = models.CharField(max_length=100) slug = models.SlugField() bucket = models.ForeignKey(MediaBucket, related_name="%(class)ss") author_name = models.CharField(max_length=100, blank=True, help_text="Who made this file -- overrides users, below. " "Use if it was by someone who doesn't have an account.") users = models.ManyToManyField(UserProfile, related_name="%(class)s_set", blank=True)