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: