diff options
author | Nim <etienne.loks@peacefrogs.net> | 2012-02-18 19:38:26 +0100 |
---|---|---|
committer | Nim <etienne.loks@peacefrogs.net> | 2012-02-18 19:38:26 +0100 |
commit | 0e9a4dfe775bee03c7f758ce4e107eb38c6743ac (patch) | |
tree | f0ac14cb289171732cba4b15eb88677d55350163 /chimere/managers.py | |
parent | 88339592c3f3a3fe2f5dd127bdf1fed73d11dad9 (diff) | |
download | Chimère-0e9a4dfe775bee03c7f758ce4e107eb38c6743ac.tar.bz2 Chimère-0e9a4dfe775bee03c7f758ce4e107eb38c6743ac.zip |
Upgrade doc - add dependancies
Diffstat (limited to 'chimere/managers.py')
-rw-r--r-- | chimere/managers.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/chimere/managers.py b/chimere/managers.py new file mode 100644 index 0000000..7aec72f --- /dev/null +++ b/chimere/managers.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +import sys + +from django.contrib.gis.db import models + +from logging import getLogger +from datetime import datetime, date, timedelta + +from django.conf import settings + +# BASE +class BaseGeoQuerySet(models.query.QuerySet): + """ + Custom queryset for Geo objects. + """ + def available(self): + """ Chainable filter to retrieve only available elements. """ + return self.filter(status="A") + + def submited(self): + """ Chainable filter to retrieve only submited elements. """ + return self.filter(status="A") + + def active(self): + """ + Returns objects where within the active date period of events. + """ + # Fields are not set in the model in this case + if not settings.CHIMERE_DAYS_BEFORE_EVENT: + return self + today = date.today() + after = today + timedelta(settings.CHIMERE_DAYS_BEFORE_EVENT) + return self.filter(end_date__gte=today, start_date__lte=after) + +class BaseGeoManager(models.GeoManager): + """ + Custom base manager for Geo objects. + """ + def get_query_set(self): + """ Use our custom QuerySet. """ + return BaseGeoQuerySet(self.model) + + # Methods defined in the queryset that we also want exposed in the + # It would be nice to implement it with a magic method instead, later :) + def available(self): + return self.get_query_set().available() + + def submited(self): + return self.get_query_set().submited() + + def active(self): + return self.get_query_set().active() |