Return immediately if a condition is not satisfied
Also use make_version instead of Version class.
This commit is contained in:
+27
-19
@@ -1,6 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright (C) 2007, TUBITAK/UEKAE
|
# Copyright (C) 2007 - 2010, TUBITAK/UEKAE
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify it under
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
# the terms of the GNU General Public License as published by the Free
|
# the terms of the GNU General Public License as published by the Free
|
||||||
@@ -32,22 +32,31 @@ class Relation:
|
|||||||
a_releaseTo = [autoxml.String, autoxml.optional]
|
a_releaseTo = [autoxml.String, autoxml.optional]
|
||||||
|
|
||||||
def satisfies_relation(self, version, release):
|
def satisfies_relation(self, version, release):
|
||||||
ret = True
|
if self.version and version != self.version:
|
||||||
v = pisi.version.Version(version)
|
return False
|
||||||
if self.version:
|
else:
|
||||||
ret &= v == pisi.version.Version(self.version)
|
v = pisi.version.make_version(version)
|
||||||
if self.versionFrom:
|
|
||||||
ret &= v >= pisi.version.Version(self.versionFrom)
|
if self.versionFrom and \
|
||||||
if self.versionTo:
|
v < pisi.version.make_version(self.versionFrom):
|
||||||
ret &= v <= pisi.version.Version(self.versionTo)
|
return False
|
||||||
r = pisi.version.Version(release)
|
|
||||||
if self.release:
|
if self.versionTo and \
|
||||||
ret &= r == pisi.version.Version(self.release)
|
v > pisi.version.make_version(self.versionTo):
|
||||||
if self.releaseFrom:
|
return False
|
||||||
ret &= r >= pisi.version.Version(self.releaseFrom)
|
|
||||||
if self.releaseTo:
|
if self.release and release != self.release:
|
||||||
ret &= r <= pisi.version.Version(self.releaseTo)
|
return False
|
||||||
return ret
|
else:
|
||||||
|
r = int(release)
|
||||||
|
|
||||||
|
if self.releaseFrom and r < int(self.releaseFrom):
|
||||||
|
return False
|
||||||
|
|
||||||
|
if self.releaseTo and r > int(self.releaseTo):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def installed_package_satisfies(relation):
|
def installed_package_satisfies(relation):
|
||||||
installdb = pisi.db.installdb.InstallDB()
|
installdb = pisi.db.installdb.InstallDB()
|
||||||
@@ -56,5 +65,4 @@ def installed_package_satisfies(relation):
|
|||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
pkg = installdb.get_package(pkg_name)
|
pkg = installdb.get_package(pkg_name)
|
||||||
(version, release) = (pkg.version, pkg.release)
|
return relation.satisfies_relation(pkg.version, pkg.release)
|
||||||
return relation.satisfies_relation(version, release)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user