def cleanup_document_relations(document): # delete history document.history.all().delete() DocumentNote.history.filter(document=document).delete() TextUnitNote.history.filter(text_unit__document=document).delete() DocumentFieldValue.history.filter(document=document).delete() # delete empty Parties Party.objects.filter( # partyusage__text_unit__document=document, partyusage__isnull=True).delete() # delete empty Clusters DocumentCluster.objects.filter(documents__isnull=True).delete() TextUnitCluster.objects.filter(text_units__isnull=True).delete() # delete Tasks, Task history, TaskResults, child tasks task_kwargs = dict(file_name=document.name) if document.upload_session_id: task_kwargs['session_id'] = str(document.upload_session_id) file_tasks = Task.special_tasks(task_kwargs) for file_task in file_tasks: if file_task.metadata.get('file_name') == document.name: purge_task(file_task.id)
def process(self, **kwargs): project_id = kwargs.get('project_id') project = Project.objects.get(pk=project_id) # delete prev. CleanProject Task Task.special_tasks({ 'task_name': 'clean-project', '_project_id': project.pk }).delete() # delete prev. Reassigning Task Task.special_tasks({ 'task_name': 'reassigning', 'old_project_id': project.pk }).delete() self.task.subtasks_total = 1 self.task.metadata = { 'task_name': 'clean-project', '_project_id': project_id # added "_" to avoid detecting task as project task } self.task.save() # delete DocumentClusters for pcl in project.projectclustering_set.all(): pcl.document_clusters.all().delete() # delete ProjectClustering project.projectclustering_set.all().delete() # delete Documents project.document_set.all().delete() # delete Project Tasks project.project_tasks.delete() # delete UploadSession Tasks for ups in project.uploadsession_set.all(): ups.document_set.update(upload_session=None) ups.session_tasks.delete() # delete UploadSessions project.uploadsession_set.all().delete() self.task.push()
def cleanup(self, delete=False): project = self # delete prev. CleanProject Task Task.special_tasks({ 'task_name': 'clean-project', '_project_id': project.pk }).delete() # delete prev. Reassigning Task Task.special_tasks({ 'task_name': 'reassigning', 'old_project_id': project.pk }).delete() # delete DocumentClusters for pcl in project.projectclustering_set.all(): pcl.document_clusters.all().delete() # delete ProjectClustering project.projectclustering_set.all().delete() # delete Documents in loop to not hung a server for document in project.document_set.all(): document.delete() # delete Project Tasks project.project_tasks.delete() # delete UploadSession Tasks for ups in project.uploadsession_set.all(): ups.document_set.update(upload_session=None) ups.session_tasks.delete() # delete UploadSessions project.uploadsession_set.all().delete() # delete project itself if delete: project.delete()
def session_tasks(self): """ Get tasks related with session """ return Task.special_tasks({'session_id': str(self.pk)})
def project_tasks(self): """ Get tasks related with Project """ return Task.special_tasks({'project_id': str(self.pk)})