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()
Exemple #3
0
    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)})