Refactor an abstract base class out of conflicts/provides/replaces

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2012-05-18 19:17:30 -05:00
parent ae1c526ffb
commit 17e33f9118

View File

@ -218,48 +218,41 @@ def __unicode__(self):
class Meta:
ordering = ['name']
class Conflict(models.Model):
class RelatedToBase(models.Model):
'''A base class for conflicts/provides/replaces/etc.'''
name = models.CharField(max_length=255, db_index=True)
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:
abstract = True
ordering = ['name']
class Conflict(RelatedToBase):
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):
class Provision(RelatedToBase):
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
@property
def comparison(self):
if self.version is not None and self.version != '':
return '='
return None
class Meta:
ordering = ['name']
class Replacement(models.Model):
class Replacement(RelatedToBase):
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']
# hook up some signals