def refresh_artifacts(self, data=""): if data == "": coms = self.comments_set.all() data = self.description for c in coms: data += "\n" + c.comment found_artifacts = artifacts.find(data) artifact_list = [] for key in found_artifacts: for a in found_artifacts[key]: artifact_list.append((key, a)) db_artifacts = Artifact.objects.filter(value__in=[a[1] for a in artifact_list]) exist = [] for a in db_artifacts: exist.append((a.type, a.value)) if self not in a.incidents.all(): a.incidents.add(self) new_artifacts = list(set(artifact_list) - set(exist)) all_artifacts = list(set(artifact_list)) for a in new_artifacts: new = Artifact(type=a[0], value=a[1]) new.save() new.incidents.add(self) for a in all_artifacts: artifacts.after_save(a[0], a[1], self)