summaryrefslogtreecommitdiff
path: root/main/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'main/models.py')
-rw-r--r--main/models.py71
1 files changed, 0 insertions, 71 deletions
diff --git a/main/models.py b/main/models.py
index f17d4a4d..04d8da8f 100644
--- a/main/models.py
+++ b/main/models.py
@@ -333,77 +333,6 @@ class PackageFile(models.Model):
class Meta:
db_table = 'package_files'
-class PackageDepend(models.Model):
- pkg = models.ForeignKey(Package, related_name='depends')
- depname = models.CharField(max_length=255, db_index=True)
- depvcmp = models.CharField(max_length=255, default='')
- optional = models.BooleanField(default=False)
- description = models.TextField(null=True, blank=True)
-
- def get_best_satisfier(self):
- '''Find a satisfier for this dependency that best matches the given
- criteria. It will not search provisions, but will find packages named
- and matching repo characteristics if possible.'''
- pkgs = Package.objects.normal().filter(pkgname=self.depname)
- if not self.pkg.arch.agnostic:
- # make sure we match architectures if possible
- arches = self.pkg.applicable_arches()
- pkgs = pkgs.filter(arch__in=arches)
- if len(pkgs) == 0:
- # couldn't find a package in the DB
- # it should be a virtual depend (or a removed package)
- return None
- if len(pkgs) == 1:
- return pkgs[0]
- # more than one package, see if we can't shrink it down
- # grab the first though in case we fail
- pkg = pkgs[0]
- # prevents yet more DB queries, these lists should be short;
- # after each grab the best available in case we remove all entries
- pkgs = [p for p in pkgs if p.repo.staging == self.pkg.repo.staging]
- if len(pkgs) > 0:
- pkg = pkgs[0]
-
- pkgs = [p for p in pkgs if p.repo.testing == self.pkg.repo.testing]
- if len(pkgs) > 0:
- pkg = pkgs[0]
-
- return pkg
-
- def get_providers(self):
- '''Return providers of this dep. Does *not* include exact matches as it
- checks the Provision names only, use get_best_satisfier() instead.'''
- pkgs = Package.objects.normal().filter(
- provides__name=self.depname).order_by().distinct()
- if not self.pkg.arch.agnostic:
- # make sure we match architectures if possible
- arches = self.pkg.applicable_arches()
- pkgs = pkgs.filter(arch__in=arches)
-
- # Logic here is to filter out packages that are in multiple repos if
- # they are not requested. For example, if testing is False, only show a
- # testing package if it doesn't exist in a non-testing repo.
- filtered = {}
- for package in pkgs:
- if package.pkgname not in filtered or \
- package.repo.staging == self.pkg.repo.staging:
- filtered[package.pkgname] = package
- pkgs = filtered.values()
-
- filtered = {}
- for package in pkgs:
- if package.pkgname not in filtered or \
- package.repo.testing == self.pkg.repo.testing:
- filtered[package.pkgname] = package
- pkgs = filtered.values()
-
- return pkgs
-
- def __unicode__(self):
- return "%s%s" % (self.depname, self.depvcmp)
-
- class Meta:
- db_table = 'package_depends'
class Todolist(models.Model):
creator = models.ForeignKey(User, on_delete=models.PROTECT)