# all the corpus of this project corpora = project.children('CORPUS', order=True).all() if len(corpora) == 0: return render( template_name = 'pages/projects/project.html', request = request, context = { 'user': request.user, 'date': datetime.now(), 'project': project, 'resources': RESOURCETYPES, 'list_corpora': None, 'whitelists': [], 'blacklists': [], 'cooclists': [], 'number': 0, 'query_size': QUERY_SIZE_N_DEFAULT, }, ) total_docs = sum([corpus.children('DOCUMENT').count() for corpus in corpora]) #all the possible resources sources = [resource["name"] for resource in RESOURCETYPES] sources_count = defaultdict.fromkeys(sources, 0) sourcename2corpora = defaultdict.fromkeys(sources, []) sourcename2corpora["default"] = [] for corpus in corpora: resource = corpus.children('RESOURCE', order=True).first() if resource is not None: #print(resource["name"]) #counting docs by resource sources_count[resource["name"]]=+ corpus.children('DOCUMENT').count() #corpus.sources = corpus.children('RESOURCE', order=True).all() else: # if len(corpus.sources) < 1: print("(WARNING) PROJECT view: no resources found for this corpus") #GET DOCS #One corpus has multiples docs corpus.count = corpus.children('DOCUMENT').count() # if len(corpus.count) < 1: # print("(WARNING) PROJECT view: no documents found for this corpus") #GET STATUS #One corpus has a current status #TO DO a method to get current status of the corpus status = corpus.status() if status is not None and not status['complete']: if not status['error']: corpus.status_message = '(in progress: %s, %d complete)' % ( status['action'].replace('_', ' '), status['progress'], ) else: corpus.status_message = '(aborted: "%s" after %i docs)' % ( status['error'][-1], status['progress'] ) else: corpus.status_message = '' # try: sourcename2corpora[resource["name"]].append(corpus) except: sourcename2corpora["default"].append(corpus) #calculate repartition donut = [] for name, count in sources_count.items(): if not count == 0: donut.append({"source": name.strip().split("[")[0], "count": count, "part": round(count*100.0 /total_docs)}) corpus_list = {} for name, corpora in sourcename2corpora.items(): if not len(corpora) == 0: corpus_list[name] = corpora #TO DO all the resources of this project # One project has multiple resource that has multiple corpus that has multiple documents #sources = project.children('RESOURCE', order=True).all() #total_docs = 0 #for source in resources: # source.docs_nb = 0 #corpora = source.children('CORPUS', order=True).all()s #for corpus in corpora: #docs = corpus.children('DOCUMENT').count() # total_docs=+ docs # source.docs_nb =+docs return render( template_name = 'pages/projects/project.html', request = request, context = { 'user': request.user, 'date': datetime.now(), 'project': project, 'resources': RESOURCETYPES, 'donut': donut, 'list_corpora' : corpora, #'list_corpora': dict(corpus_list), 'whitelists': [], 'blacklists': [], 'cooclists': [], 'number': len(corpora), 'query_size': QUERY_SIZE_N_DEFAULT, }, ) -->