From beaf6242315bdba1ff0324cdc8d61913893fca3a Mon Sep 17 00:00:00 2001 From: Fabio Erculiani Date: Wed, 27 Jan 2010 23:42:02 +0100 Subject: [PATCH] [entropy.server] make use of the new SpmPlugin.extract_package_metadata, license_callback --- libraries/entropy/server/interfaces/main.py | 27 ++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/libraries/entropy/server/interfaces/main.py b/libraries/entropy/server/interfaces/main.py index d1228408b..0576234c4 100644 --- a/libraries/entropy/server/interfaces/main.py +++ b/libraries/entropy/server/interfaces/main.py @@ -3690,11 +3690,35 @@ class ServerRepositoryMixin: header = darkgreen(" * ") ) + def _get_whitelisted_licenses(self, repo = None): + + if repo is None: + repo = self.default_repository + + wl_file = self._get_local_database_licensewhitelist_file(repo = repo) + if not os.path.isfile(wl_file): + return [] + return entropy.tools.generic_file_content_parser(wl_file) + def _package_injector(self, package_file, inject = False, repo = None): if repo is None: repo = self.default_repository + def _package_injector_check_license(licenses): + + wl_licenses = self._get_whitelisted_licenses(repo = repo) + + if not licenses: + return True # free if no licenses provided + if not wl_licenses: + return True # no whitelist ! + + for license in licenses: + if license not in wl_licenses: + return False + return True + dbconn = self.open_server_repository(read_only = False, no_upload = True, repo = repo) self.output( @@ -3709,7 +3733,8 @@ class ServerRepositoryMixin: header = brown(" * "), back = True ) - mydata = self.Spm().extract_package_metadata(package_file) + mydata = self.Spm().extract_package_metadata(package_file, + license_callback = _package_injector_check_license) self._pump_extracted_package_metadata(mydata, repo, {'injected': inject,}) idpackage, revision, mydata = dbconn.handlePackage(mydata)