summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-06-29 10:52:30 -0500
committerDan McGee <dan@archlinux.org>2011-07-05 09:44:45 -0500
commit5e85c5ac9ed09551d65ec07767094770d248f3b1 (patch)
tree8efdc0c1231617427727fc1291b8c8cda7dafd97
parent33b9bf44aac4b70fa4cc6e9d1e82fb556b836801 (diff)
Move set_created_field() to shared utils class
Signed-off-by: Dan McGee <dan@archlinux.org>
-rw-r--r--main/utils.py10
-rw-r--r--packages/models.py10
-rw-r--r--releng/models.py13
3 files changed, 15 insertions, 18 deletions
diff --git a/main/utils.py b/main/utils.py
index 12d12503..2ca69bcb 100644
--- a/main/utils.py
+++ b/main/utils.py
@@ -2,6 +2,9 @@ try:
import cPickle as pickle
except ImportError:
import pickle
+
+from datetime import datetime
+
from django.core.cache import cache
from django.utils.hashcompat import md5_constructor
@@ -81,4 +84,11 @@ def retrieve_latest(sender):
pass
return None
+def set_created_field(sender, **kwargs):
+ '''This will set the 'created' field on any object to datetime.utcnow() if
+ it is unset. For use as a pre_save signal handler.'''
+ obj = kwargs['instance']
+ if hasattr(obj, 'created') and not obj.created:
+ obj.created = datetime.utcnow()
+
# vim: set ts=4 sw=4 et:
diff --git a/packages/models.py b/packages/models.py
index a950bddb..0983c642 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -1,9 +1,9 @@
-from datetime import datetime
-
from django.db import models
from django.db.models.signals import pre_save, post_save
from django.contrib.auth.models import User
+from main.utils import set_created_field
+
class PackageRelation(models.Model):
'''
Represents maintainership (or interest) in a package by a given developer.
@@ -112,12 +112,6 @@ def remove_inactive_maintainers(sender, instance, created, **kwargs):
type=PackageRelation.MAINTAINER)
maint_relations.delete()
-def set_created_field(sender, **kwargs):
- # We use this same callback for both Isos and Tests
- obj = kwargs['instance']
- if not obj.created:
- obj.created = datetime.utcnow()
-
post_save.connect(remove_inactive_maintainers, sender=User,
dispatch_uid="packages.models")
pre_save.connect(set_created_field, sender=PackageRelation,
diff --git a/releng/models.py b/releng/models.py
index 07ede1c5..5510db6a 100644
--- a/releng/models.py
+++ b/releng/models.py
@@ -1,6 +1,7 @@
-from datetime import datetime
-
from django.db import models
+from django.db.models.signals import pre_save
+
+from main.utils import set_created_field
class IsoOption(models.Model):
name = models.CharField(max_length=200)
@@ -104,14 +105,6 @@ class Test(models.Model):
success = models.BooleanField()
comments = models.TextField(null=True, blank=True)
-def set_created_field(sender, **kwargs):
- # We use this same callback for both Isos and Tests
- obj = kwargs['instance']
- if not obj.created:
- obj.created = datetime.utcnow()
-
-from django.db.models.signals import pre_save
-
pre_save.connect(set_created_field, sender=Iso,
dispatch_uid="releng.models")
pre_save.connect(set_created_field, sender=Test,