def streamgraph( request, corpus_id ): response = _json( request ) c = _get_corpus( corpus_id ) if c is None: return throw_error( response, "Corpus %s does not exist...," % corpus_id, code=API_EXCEPTION_DOESNOTEXIST ) from django.db import connection filters = "" if "filters" in response['meta']: ids = [ str(d.id) for d in Document.objects.filter(corpus__id=corpus_id,**response['meta']['filters'])] if len(ids) > 0: filters = " AND d.id IN ( %s )" % ",".join(ids) else: response['meta']['total'] = 0; response['actors'] = {} return render_to_json( response ) query = """ SELECT t.name, s.stemmed as concept, MAX(ds.tfidf), AVG(tf), count( DISTINCT s.id ) as distro FROM `anta_document_segment` ds JOIN anta_segment s ON s.id = ds.segment_id JOIN anta_document d ON d.id = ds.document_id JOIN anta_document_tag dt ON dt.document_id = ds.document_id JOIN anta_tag t ON t.id = dt.tag_id WHERE d.corpus_id = %s """ + filters + """ AND t.type='actor' GROUP BY t.id, concept ORDER BY `distro` DESC """ response['query'] = query cursor = connection.cursor() cursor.execute( query, [corpus_id] ) response['actors'] = {} i = 0 for row in cursor.fetchall(): if row[0] not in response['actors']: response['actors'][ row[0] ] = [] response['actors'][ row[0] ].append({ 'concept':row[1], 'tfidf':row[2], 'tf':row[3], 'f':row[4] }) i += 1 response['meta']['total'] = i; return render_to_json( response )
def create_corpus( request, response ): response['owner'] = request.user.json() form = ApiCorpusForm( request.REQUEST, initial={'owner':request.user.id} ) if form.is_valid(): corpus_path = settings.MEDIA_ROOT + os.path.basename( form.cleaned_data['name'] ) response['corpus_path'] = corpus_path try: # create corpus # create folder if does not exists if not os.path.exists( corpus_path ): os.makedirs( corpus_path ) c = Corpus( name=form.cleaned_data['name'] ) c.save() o = Owners( corpus=c, user=request.user ) o.save() except Exception, e: return throw_error( response, error="Exception: %s" % e, code="fault" ) response['created'] = c.json() return render_to_json( response )
def index(request): response = _json( request ) #user = User.objects.create_user('daniele', '*****@*****.**', 'danielepassword') #user.is_staff = True #user.save() return render_to_json( response )
def get_corpus(request, corpus_id ): response = _json( request ) try: response['corpus'] = Corpus.objects.get(name=corpus_id).json() except: response['corpus'] = None return throw_error( response, "corpus does not exist...") return render_to_json( response )
def attach_corpus( request, corpus_id): response = _json( request, enable_method=False ) corpus = _get_or_die("Corpus", response=response, filters={'id':corpus_id}) # save 'ownership' _save_or_die( "Owners", response=response, filters={'corpus':corpus, 'user':request.user}) response['corpus'] = corpus.json() response['corpus'] = corpus.json() response['user'] = request.user.json() return render_to_json( response )
def create_relation( request, response ): response['owner'] = request.user.json() form = ApiRelationForm( request.REQUEST ) if form.is_valid(): r = Relation( source=form.cleaned_data['source'], target=form.cleaned_data['target'], polarity=form.cleaned_data['polarity'],description=form.cleaned_data['description'], owner=request.user ) r.save() response['created'] = r.json() return render_to_json( response ) else: return throw_error( response, error=form.errors, code=API_EXCEPTION_FORMERRORS )
def corpus( request, id ): response = _json( request ) # all documents c = _get_corpus( id ) if c is None: return throw_error( response, "Corpus %s does not exist...," % id, code=API_EXCEPTION_DOESNOTEXIST ) response['results'] = [c.json()] if response['meta']['method'] == 'DELETE': c.delete() return render_to_json( response )
def document(request, document_id): response = _json( request ) # create or update a document # @todo d = _get_document( document_id ) if d is None: return throw_error( response, "document %s does not exist..." % document_id, code=API_EXCEPTION_DOESNOTEXIST) # delete a document if response['meta']['method'] == 'DELETE': return _delete_instance( request, response, instance=d, attachments=[ os.path.join(settings.MEDIA_ROOT, d.corpus.name, os.path.basename(d.url.url)), textify( d, settings.MEDIA_ROOT ) ]) # if method is POST, update the document if response['meta']['method'] == 'POST': form = UpdateDocumentForm( request.REQUEST ) if form.is_valid(): # save d.title = form.cleaned_data['title'] if len(form.cleaned_data['title'])>0 else d.title d.ref_date = form.cleaned_data['ref_date'] if form.cleaned_data['ref_date'] is not None else d.ref_date d.language = form.cleaned_data['language'] if len(form.cleaned_data['language'])>0 else d.language d.save() else: return throw_error( response, error=form.errors, code=API_EXCEPTION_FORMERRORS ) # load text only if it's required if 'with-text' in response['meta']: text = textify( d, settings.MEDIA_ROOT ) if text is None: return throw_error( response, "unable to provide txt version of the document") response['text'] = open(text, 'r').read() # f = open( text, "r") response['results'] = [ d.json() ] return render_to_json( response )
def relations( request ): response = _json( request ) # create documents if response['meta']['method'] == 'POST': return create_relation( request, response ) if request.REQUEST.has_key( 'corpus' ): try: response['corpus'] = Corpus.objects.get(name=corpus).json() except: return throw_error( response, error="aje, corpus does not exist...") response['meta']['total'] = Relation.objects.filter( source__corpus__name=corpus, target__corpus__name=corpus).count() response['results'] = [r.json() for r in Relation.objects.filter( source__corpus__name=corpus, target__corpus__name=corpus) [response['meta']['offset']:response['meta']['limit'] ] ] return render_to_json( response ) return _get_instances( request, response, model_name="Relation" )
def corpora(request): response = _json( request ) # create documents if response['meta']['method'] == 'POST': return create_corpus( request, response ) if len(response['meta']['filters']) > 0: # with filters: models static var response['meta']['total'] = Corpus.objects.filter(**response['meta']['filters']).count() response['results'] = [c.json() for c in Corpus.objects.filter(**response['meta']['filters'])[ response['meta']['offset']: response['meta']['offset'] + response['meta']['limit'] ] ] else: response['meta']['total'] = Corpus.objects.count() response['results'] = [c.json() for c in Corpus.objects.all()[ response['meta']['offset']: response['meta']['offset'] + response['meta']['limit'] ] ] return render_to_json( response )
def get_corpora(request): response = _json( request ) response['objects'] = [ c.json() for c in Corpus.objects.all() ] return render_to_json( response )
def segment_stem( request, segment_id ): response = _json( request ) return render_to_json( response )
def segments( request ): response = _json( request ) return render_to_json( response )
def logout_view( request ): logout( request ) response = _json( request ) return render_to_json( response )
def dummy_gummy( request ): # test only view, with request response = _json( request ) return render_to_json( response )
return throw_error( response, error=form.errors, code=API_EXCEPTION_FORMERRORS ) @login_required( login_url = API_LOGIN_REQUESTED_URL ) def relation( request, id ): response = _json( request ) # all documents try: r = Relation.objects.get(id=id) except Exception, e: return throw_error( response, "Exception: %s" % e, code=API_EXCEPTION_DOESNOTEXIST ) response['results'] = [r.json()] if response['meta']['method'] == 'DELETE': r.delete() return render_to_json( response ) # create documents if response['meta']['method'] == 'POST': ## DOES NOT WORK. whiy? form = ApiRelationForm( request.REQUEST, instance=r ) if not form.is_valid(): return throw_error( response, error=form.errors, code=API_EXCEPTION_FORMERRORS ) form.save(commit=False) r.creation_date = datetime.now() r.owner = request.user r.save()