summaryrefslogtreecommitdiffstats
path: root/packages/models.py
diff options
context:
space:
mode:
authorDan McGee <dan@archlinux.org>2011-02-17 01:09:46 +0100
committerDan McGee <dan@archlinux.org>2011-03-23 21:44:41 +0100
commit97437d27b7b3d01bfd2e2ae628e6612c149324b4 (patch)
tree79171e35d639e3ad38b02171d704c389a1f978c8 /packages/models.py
parent5f7fbcb7133b1c04824d1aa4ded7af8feef13c2e (diff)
downloadarchweb-97437d27b7b3d01bfd2e2ae628e6612c149324b4.tar.gz
archweb-97437d27b7b3d01bfd2e2ae628e6612c149324b4.tar.xz
Add new package parts models
This allows us to store conflicts, provisions (provides), and replacements in the database, things we weren't capturing before. All can be multivalued, just like License and PackageGroup. Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'packages/models.py')
-rw-r--r--packages/models.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/packages/models.py b/packages/models.py
index 5dbdea4..63a7255 100644
--- a/packages/models.py
+++ b/packages/models.py
@@ -57,6 +57,50 @@ class License(models.Model):
class Meta:
ordering = ['name']
+class Conflict(models.Model):
+ pkg = models.ForeignKey('main.Package', related_name='conflicts')
+ name = models.CharField(max_length=255, db_index=True)
+ comparison = models.CharField(max_length=255, default='')
+ version = models.CharField(max_length=255, default='')
+
+ def __unicode__(self):
+ if self.version:
+ return u'%s%s%s' % (self.name, self.comparison, self.version)
+ return self.name
+
+ class Meta:
+ ordering = ['name']
+
+class Provision(models.Model):
+ pkg = models.ForeignKey('main.Package', related_name='provides')
+ name = models.CharField(max_length=255, db_index=True)
+ # comparison must be '=' for provides
+ comparison = '='
+ version = models.CharField(max_length=255, default='')
+
+ def __unicode__(self):
+ if self.version:
+ return u'%s=%s' % (self.name, self.version)
+ return self.name
+
+ class Meta:
+ ordering = ['name']
+
+class Replacement(models.Model):
+ pkg = models.ForeignKey('main.Package', related_name='replaces')
+ name = models.CharField(max_length=255, db_index=True)
+ comparison = models.CharField(max_length=255, default='')
+ version = models.CharField(max_length=255, default='')
+
+ def __unicode__(self):
+ if self.version:
+ return u'%s%s%s' % (self.name, self.comparison, self.version)
+ return self.name
+
+ class Meta:
+ ordering = ['name']
+
+
def remove_inactive_maintainers(sender, instance, created, **kwargs):
# instance is an auth.models.User; we want to remove any existing
# maintainer relations if the user is no longer active