summaryrefslogtreecommitdiff
path: root/chimere/managers.py
diff options
context:
space:
mode:
authorNim <etienne.loks@peacefrogs.net>2012-02-18 19:38:26 +0100
committerNim <etienne.loks@peacefrogs.net>2012-02-18 19:38:26 +0100
commit0e9a4dfe775bee03c7f758ce4e107eb38c6743ac (patch)
treef0ac14cb289171732cba4b15eb88677d55350163 /chimere/managers.py
parent88339592c3f3a3fe2f5dd127bdf1fed73d11dad9 (diff)
downloadChimère-0e9a4dfe775bee03c7f758ce4e107eb38c6743ac.tar.bz2
Chimère-0e9a4dfe775bee03c7f758ce4e107eb38c6743ac.zip
Upgrade doc - add dependancies
Diffstat (limited to 'chimere/managers.py')
-rw-r--r--chimere/managers.py52
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()