Return immediately if a condition is not satisfied

Also use make_version instead of Version class.
This commit is contained in:
Fatih Aşıcı
2010-03-08 12:09:35 +00:00
parent c3b4570d9b
commit 9802f80d1f
+27 -19
View File
@@ -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)