From 5e85c5ac9ed09551d65ec07767094770d248f3b1 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 29 Jun 2011 10:52:30 -0500 Subject: Move set_created_field() to shared utils class Signed-off-by: Dan McGee --- packages/models.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'packages/models.py') 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, -- cgit v1.2.3-2-g168b From 0f9a1da2cb9dd2a20a5e12bb346ec460b4335f9f Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 6 Jul 2011 11:08:22 -0500 Subject: Move package signoff URL to more logical location Signed-off-by: Dan McGee --- packages/models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'packages/models.py') diff --git a/packages/models.py b/packages/models.py index 0983c642..faf5f398 100644 --- a/packages/models.py +++ b/packages/models.py @@ -25,8 +25,7 @@ class PackageRelation(models.Model): def get_associated_packages(self): # TODO: delayed import to avoid circular reference from main.models import Package - return Package.objects.filter(pkgbase=self.pkgbase).select_related( - 'arch', 'repo') + return Package.objects.normal().filter(pkgbase=self.pkgbase) def repositories(self): packages = self.get_associated_packages() -- cgit v1.2.3-2-g168b From ba975112cbc36f7515293543baaacfbcb46a96c2 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 6 Jul 2011 11:20:42 -0500 Subject: Add new packages signoff model This one is centered around pkgbase, much as our PackageRelation object is. However, it also tracks all of the versioning fields we have in order to making joining against the current package testing list possible. Finally, additional metadata including a created date, an (optional) revoke date, and a comments field are added. Signed-off-by: Dan McGee --- packages/models.py | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'packages/models.py') diff --git a/packages/models.py b/packages/models.py index faf5f398..55725e8e 100644 --- a/packages/models.py +++ b/packages/models.py @@ -32,12 +32,47 @@ class PackageRelation(models.Model): return sorted(set([p.repo for p in packages])) def __unicode__(self): - return "%s: %s (%s)" % ( + return u'%s: %s (%s)' % ( self.pkgbase, self.user, self.get_type_display()) class Meta: unique_together = (('pkgbase', 'user', 'type'),) +class Signoff(models.Model): + ''' + A signoff for a package (by pkgbase) at a given point in time. These are + not keyed directly to a Package object so they don't ever get deleted when + Packages come and go from testing repositories. + ''' + pkgbase = models.CharField(max_length=255, db_index=True) + pkgver = models.CharField(max_length=255) + pkgrel = models.CharField(max_length=255) + epoch = models.PositiveIntegerField(default=0) + arch = models.ForeignKey('main.Arch') + repo = models.ForeignKey('main.Repo') + user = models.ForeignKey(User, related_name="package_signoffs") + created = models.DateTimeField(editable=False) + revoked = models.DateTimeField(null=True) + comments = models.TextField(null=True, blank=True) + + @property + def packages(self): + # TODO: delayed import to avoid circular reference + from main.models import Package + return Package.objects.normal().filter(pkgbase=self.pkgbase, + pkgver=self.pkgver, pkgrel=self.pkgrel, epoch=pkg.epoch, + arch=self.arch, repo=self.repo) + + @property + def full_version(self): + if self.epoch > 0: + return u'%d:%s-%s' % (self.epoch, self.pkgver, self.pkgrel) + return u'%s-%s' % (self.pkgver, self.pkgrel) + + def __unicode__(self): + return u'%s-%s: %s' % ( + self.pkgbase, self.full_version, self.user) + class PackageGroup(models.Model): ''' Represents a group a package is in. There is no actual group entity, @@ -115,5 +150,7 @@ post_save.connect(remove_inactive_maintainers, sender=User, dispatch_uid="packages.models") pre_save.connect(set_created_field, sender=PackageRelation, dispatch_uid="packages.models") +pre_save.connect(set_created_field, sender=Signoff, + dispatch_uid="packages.models") # vim: set ts=4 sw=4 et: -- cgit v1.2.3-2-g168b From f95abca269aec1409ec1e57de4c6cb5ba1da6369 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Wed, 6 Jul 2011 12:05:19 -0500 Subject: Refactor code to use new signoff model This moves signoff creation and display to the new packages.Signoff model. Signed-off-by: Dan McGee --- packages/models.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'packages/models.py') diff --git a/packages/models.py b/packages/models.py index 55725e8e..7ae2d57a 100644 --- a/packages/models.py +++ b/packages/models.py @@ -55,6 +55,8 @@ class Signoff(models.Model): revoked = models.DateTimeField(null=True) comments = models.TextField(null=True, blank=True) + REQUIRED = 2 + @property def packages(self): # TODO: delayed import to avoid circular reference -- cgit v1.2.3-2-g168b From 82cb7c3586154da7196b513e349ea9c91efbc9ac Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Fri, 29 Jul 2011 12:26:27 -0500 Subject: Add index to package groups name field Signed-off-by: Dan McGee --- packages/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'packages/models.py') diff --git a/packages/models.py b/packages/models.py index 7ae2d57a..d2fe1878 100644 --- a/packages/models.py +++ b/packages/models.py @@ -81,7 +81,7 @@ class PackageGroup(models.Model): only names that link to given packages. ''' pkg = models.ForeignKey('main.Package', related_name='groups') - name = models.CharField(max_length=255) + name = models.CharField(max_length=255, db_index=True) def __unicode__(self): return "%s: %s" % (self.name, self.pkg) -- cgit v1.2.3-2-g168b