Exemplo n.º 1
0
    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:
Exemplo n.º 2
0
    
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
        ('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)
Exemplo n.º 5
0
                             (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)
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    
    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)
Exemplo n.º 8
0
    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)
Exemplo n.º 9
0
            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)
Exemplo n.º 10
0
    """
    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)