Skip to content

Instantly share code, notes, and snippets.

@joshourisman
Created January 31, 2012 20:34
Show Gist options
  • Save joshourisman/1712738 to your computer and use it in GitHub Desktop.
Save joshourisman/1712738 to your computer and use it in GitHub Desktop.
I am a trained professional, don't try this at home!
class WeekDependentManager(models.Manager):
def get_filters(self, prefix=None):
if prefix is not None and prefix != '':
prefix = '%s__' % prefix
else:
prefix = ''
# All participating
filters = {
'%sweek__id' % prefix: settings.WEEK_ID,
}
# Only those extending
extended_filters = {
'%sweek__id' % prefix: settings.WEEK_ID,
'%sextending' % prefix: True,
'%sextending_end_date__gte' % prefix: datetime.date.today,
}
if settings.EXTENDED:
return filters
else:
return extended_filters
def this_week(self):
# Don't change this!
return self.get_query_set().filter(
**self.get_filters(prefix='whatever')).distinct()
class RelatedModel(models.Model):
objects = WeekDependentManager()
whatever = models.ForeignKey('Whatever')
...
class WhateverManager(WeekDependentManager):
def this_week(self):
return self.get_query_set().filter(
**self.get_filters(prefix=None)).distinct()
class Whatever(models.Model):
objects = WhateverManager
...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment