From fe832ea845f07a79b4580f7bca1dcf44b2f215ee Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 27 Mar 2010 16:15:20 -0500 Subject: Move package maintainer off of package model This is an attempt to fix our long-standing problems dealing with maintainer information. Move the actual maintainer information off of the package model into a PackageRelation object, which has some flexibility to later represent more than just maintainership. This solves multiple problems: * If a package gets accidentally deleted, so did the maintainer info * Testing packages have always shown up as orphans * With split packages, it was easy to miss some of the sub-packages This commit does not include the deletion of the original maintainer column; that will come at a later time when I feel more confident that the data was migrated correctly. Signed-off-by: Dan McGee --- packages/models.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 packages/models.py (limited to 'packages/models.py') diff --git a/packages/models.py b/packages/models.py new file mode 100644 index 0000000..9eff517 --- /dev/null +++ b/packages/models.py @@ -0,0 +1,23 @@ +from django.db import models +from django.contrib.auth.models import User + +class PackageRelation(models.Model): + ''' + Represents maintainership (or interest) in a package by a given developer. + It is not a true foreign key to packages as we want to key off + pkgbase/pkgname instead, as well as preserve this information across + package deletes, adds, and in all repositories. + ''' + MAINTAINER = 1 + WATCHER = 2 + TYPE_CHOICES = ( + (MAINTAINER, 'Maintainer'), + (WATCHER, 'Watcher'), + ) + pkgbase = models.CharField(max_length=255) + user = models.ForeignKey(User, related_name="package_relations") + type = models.PositiveIntegerField(choices=TYPE_CHOICES, default=MAINTAINER) + class Meta: + unique_together = (('pkgbase', 'user', 'type'),) + +# vim: set ts=4 sw=4 et: -- cgit v1.2.3-24-g4f1b