def get_packages(computer): to_install = [] to_remove = [] for policy in Policy.objects.filter(enabled=True): if policy.belongs_excluding(computer, policy.included_attributes.all(), policy.excluded_attributes.all()): for group in PolicyGroup.objects.filter( policy=policy).order_by("priority"): if policy.belongs_excluding( computer, group.included_attributes.all(), group.excluded_attributes.all()): for pkgs in group.applications.filter( packages_by_project__project__id=computer. project.id).values_list( 'packages_by_project__packages_to_install', flat=True): to_install.extend(to_list(pkgs)) if policy.exclusive: to_remove.extend( policy.get_packages_to_remove( group, computer.project.id)) break return to_install, to_remove
def get_packages(computer): to_install = [] to_remove = [] for policy in Policy.objects.filter(enabled=True): if policy.belongs_excluding( computer, policy.included_attributes.all(), policy.excluded_attributes.all() ): for group in PolicyGroup.objects.filter( policy=policy ).order_by("priority"): if policy.belongs_excluding( computer, group.included_attributes.all(), group.excluded_attributes.all() ): for pkgs in group.applications.filter( packages_by_project__project__id=computer.project.id ).values_list( 'packages_by_project__packages_to_install', flat=True ): to_install.extend(to_list(pkgs)) if policy.exclusive: to_remove.extend( policy.get_packages_to_remove(group, computer.project.id) ) break return to_install, to_remove
def to_representation(self, obj): return { 'project': { 'id': obj.project.id, 'name': obj.project.name }, 'packages_to_install': to_list(obj.packages_to_install) }
def get_packages_to_remove(group, project_id=0): _packages = [] for item in PolicyGroup.objects.filter(policy=group.policy).exclude( id=group.id): for pkgs in item.applications.filter( packages_by_project__project__id=project_id).values_list( 'packages_by_project__packages_to_install', flat=True): _packages.extend(to_list(pkgs)) return _packages
def to_representation(self, obj): return { 'id': obj.id, 'application': obj.application.id, 'project': { 'id': obj.project.id, 'name': obj.project.name }, 'packages_to_install': to_list(obj.packages_to_install) }
def get_packages_to_remove(group, project_id=0): _packages = [] for item in PolicyGroup.objects.filter(policy=group.policy).exclude(id=group.id): for pkgs in item.applications.filter( packages_by_project__project__id=project_id ).values_list( 'packages_by_project__packages_to_install', flat=True ): _packages.extend(to_list(pkgs)) return _packages