def _remove_person_from_group(person, group): """ Call datastores after removing a person from a group. """ from karaage.datastores import remove_person_from_group from karaage.datastores import remove_person_from_project from karaage.datastores import remove_person_from_institute from karaage.datastores import remove_person_from_software from karaage.datastores import remove_account_from_group from karaage.datastores import remove_account_from_project from karaage.datastores import remove_account_from_institute from karaage.datastores import remove_account_from_software a_list = list(person.account_set.filter(date_deleted__isnull=True)) remove_person_from_group(person, group) for account in a_list: remove_account_from_group(account, group) for project in group.project_set.all(): remove_person_from_project(person, project) for account in a_list: remove_account_from_project(account, project) for institute in group.institute_set.all(): remove_person_from_institute(person, institute) for account in a_list: remove_account_from_institute(account, institute) for software in group.software_set.all(): remove_person_from_software(person, software) for account in a_list: remove_account_from_software(account, software)
def delete(self, *args, **kwargs): # delete the object super(Software, self).delete(*args, **kwargs) # update datastore associations old_group = self._group if old_group is not None: from karaage.datastores import remove_person_from_software for person in Person.objects.filter(groups=old_group): remove_person_from_software(person, self) from karaage.datastores import remove_account_from_software for account in Account.objects.filter(person__groups=old_group, date_deleted__isnull=True): remove_account_from_software(account, self) # update the datastore from karaage.datastores import delete_software delete_software(self)
def save(self, *args, **kwargs): # set group if not already set if self.group_id is None: name = str(self.name.lower().replace(' ', '')) self.group,_ = Group.objects.get_or_create(name=name) # save the object super(Software, self).save(*args, **kwargs) # update the datastore from karaage.datastores import save_software save_software(self) # has group changed? old_group = self._group new_group = self.group if old_group != new_group: if old_group is not None: from karaage.datastores import remove_person_from_software for person in Person.objects.filter(groups=old_group): remove_person_from_software(person, self) from karaage.datastores import remove_account_from_software for account in Account.objects.filter(person__groups=old_group, date_deleted__isnull=True): remove_account_from_software(account, self) if new_group is not None: from karaage.datastores import add_person_to_software for person in Person.objects.filter(groups=new_group): add_person_to_software(person, self) from karaage.datastores import add_account_to_software for account in Account.objects.filter(person__groups=new_group, date_deleted__isnull=True): add_account_to_software(account, self) # log message log(None, self, 2, "Saved software") # save the current state self._group = self.group