Esempio n. 1
0
def project_progress(obj):
    sessions_status_data = {str(i.pk): i.status for i in obj.uploadsession_set.all()}
    completed_sessions = {k: v for k, v in sessions_status_data.items() if v == 'Parsed'}
    uncompleted_sessions = {k: v for k, v in sessions_status_data.items() if v != 'Parsed'}
    project_uploaded_documents_count = Document.objects.filter(
        upload_session__project=obj).count()

    stats = {'project_current_documents_count': obj.document_set.count(),
             'project_uploaded_documents_count': project_uploaded_documents_count,
             'project_tasks_progress': obj.project_tasks_progress,
             'project_tasks_completed': obj.project_tasks_completed,
             'completed_sessions': completed_sessions or None,
             'uncompleted_sessions': uncompleted_sessions or None}

    if obj.type is None:
        project_clusters_documents_count = obj.projectclustering_set.last() \
            .document_clusters.aggregate(c=Count('documents'))['c'] \
            if obj.projectclustering_set.exists() else 0
        project_unclustered_documents_count = project_uploaded_documents_count - \
                                              project_clusters_documents_count
        reassigning_ots = {'task_name': 'reassigning',
                           'old_project_id': obj.pk}
        stats.update({
            'project_clusters_documents_count': project_clusters_documents_count,
            'project_unclustered_documents_count': project_unclustered_documents_count,
            'reassigning_progress': Task.special_tasks_progress_groups(reassigning_ots),
            'reassigning_completed': Task.special_tasks_completed(reassigning_ots),
            'cleanup_completed': Task.special_tasks_completed({'task_name': 'clean-project',
                                                               '_project_id': obj.pk}),
        })

    return stats
 def project_tasks_completed(self):
     """
     Whether project tasks completed or not (None if no project tasks at all)
     """
     return Task.special_tasks_completed({'project_id': str(self.pk)})