diff options
author | rubenwardy <rw@rubenwardy.com> | 2020-08-18 00:16:03 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2020-08-18 00:16:03 +0100 |
commit | 3914659718b579a6978fda9930198d1fa0e3cf59 (patch) | |
tree | 1ce09cf2dc23c285cff8c74743c2d4eb2ac06967 | |
parent | 8fd229b73909f7719137586db482e8ca623e1cde (diff) | |
download | cheatdb-3914659718b579a6978fda9930198d1fa0e3cf59.tar.xz |
Fix dependencies still being added if in provides
Fixes #226
-rw-r--r-- | app/tasks/importtasks.py | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index ff085cd..26e94f6 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -167,16 +167,27 @@ def updateMetaFromRelease(self, id, path): package.provides.clear() package.provides.extend(provides) - for dep in package.dependencies: - if dep.meta_package: - db.session.delete(dep) + # Delete all meta package dependencies + package.dependencies.filter(Dependency.meta_package != None).delete() - for meta in getMetaPackages(tree.fold("meta", "depends")): + # Get raw dependencies + depends = tree.fold("meta", "depends") + optional_depends = tree.fold("meta", "optional_depends") + + # Filter out provides + for mod in provides: + depends.discard(mod) + optional_depends.discard(mod) + + # Add dependencies + + for meta in getMetaPackages(depends): db.session.add(Dependency(package, meta=meta, optional=False)) - for meta in getMetaPackages(tree.fold("meta", "optional_depends")): + for meta in getMetaPackages(optional_depends): db.session.add(Dependency(package, meta=meta, optional=True)) + db.session.commit() except MinetestCheckError as err: |