alcatel/controller/Documents.py
author Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
Thu, 10 Apr 2014 14:20:23 +0200
changeset 47 c0b4a8b5a012
parent 37 3848e1813a30
permissions -rw-r--r--
add toolkit.html + démonstrateurs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     1
'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     2
Created on 7 aout 2012
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     3
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     4
@author: gerard
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     5
'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     6
import logging
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     7
import simplejson
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     8
import locale
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     9
from datetime import datetime 
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    10
import time
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    11
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    12
from django.core.cache import cache
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    13
from document.models import Annotationdocument
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    14
from document.models import Tag, Cluster
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    15
from mediapartdb.MediapartReader import MediapartReader
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    16
from dataparser.ClientDocumentsGetAttributes import ClientDocumentsGetAttributes
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    17
from document.models import Documentaryfile
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    18
logger = logging.getLogger('document')
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    19
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    20
# List of documents of a cluster with annotations
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    21
class Documents(object):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    22
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    23
    def __init__(self, request):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    24
        self.request = request
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    25
    
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    26
    def get_documents(self,query,cluster,offset,count,docId):
3848e1813a30 last version
cobled
parents: 27
diff changeset
    27
        logger.info('get_documents query'+str(query))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    28
        logger.info('get_documents cluster'+str(cluster))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    29
        logger.info('get_documents offset'+str(offset))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    30
        logger.info('get_documents docId'+str(docId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    31
        logger.info('get_documents count'+str(count))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    32
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    33
        json = {}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    34
        
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    35
        '''if int(query) == 0 and int(docId) == 0:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    36
            logger.info('ENTER1')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    37
            attr = ClientDocumentsGetAttributes(self.request)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    38
       
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    39
            if not attr.get_cluster():
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    40
                json = '{"error msg": "no cluster_id defined"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    41
                return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    42
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    43
            if attr.get_offset() == '':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    44
                json = '{"error msg": "no offset defined"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    45
                return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    46
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    47
            if attr.get_count() == '':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    48
                json = '{"error msg": "no count defined"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    49
                return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    50
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    51
           
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    52
            json['cluster_id'] = int(attr.get_cluster())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    53
            json['offset'] = int(attr.get_offset())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    54
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    55
            query_id = int(attr.get_query_id())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    56
            cluster_id = int(attr.get_cluster())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    57
            offset = int(attr.get_offset())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    58
            count=int(attr.get_count())
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    59
        elif int(query) == 0 and int(docId) != 0:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    60
            logger.info('ENTER2')
3848e1813a30 last version
cobled
parents: 27
diff changeset
    61
            try:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    62
                documentaryfile = Documentaryfile.objects.get(pk=int(docId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    63
            except Documentaryfile.DoesNotExist:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    64
                logger.info('ERROR !!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
    65
                json = '{"Error": "Invalid documentary id"}'
3848e1813a30 last version
cobled
parents: 27
diff changeset
    66
                logger.info(json)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    67
            logger.info('LONGUER !!'+str((documentaryfile.cluster_set.all())[int(cluster)].title))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    68
            #for thecluster in documentaryfile.cluster_set.all():     
3848e1813a30 last version
cobled
parents: 27
diff changeset
    69
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
    70
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
    71
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
    72
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
    73
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
    74
                
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    75
        else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    76
            json['cluster_id'] = int(cluster)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    77
            json['offset'] = int(offset)'''
3848e1813a30 last version
cobled
parents: 27
diff changeset
    78
        query_id = int(query)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    79
        cluster_id = int(cluster)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    80
        offset = int(offset)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    81
        count=int(count)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    82
        
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    83
        logger.info(self.request.session['jsonTreemap'])      
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    84
        json['documents'] = []
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    85
        article_index=0
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    86
        #if docid != 0 it is a cluster saved in database
3848e1813a30 last version
cobled
parents: 27
diff changeset
    87
        if int(query) == 0:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    88
            logger.info('docId != 0')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    89
            try:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    90
                documentaryfile = Documentaryfile.objects.get(pk=int(docId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    91
            except Documentaryfile.DoesNotExist:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    92
                logger.info('ERROR !!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
    93
                json = '{"Error": "Invalid documentary id"}'
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    94
                logger.info(json)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    95
                logger.info('LONGUER !!'+str((documentaryfile.cluster_set.all())[int(cluster)].title))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    96
            
3848e1813a30 last version
cobled
parents: 27
diff changeset
    97
            my_jsontreemap = simplejson.loads(documentaryfile.jsontreemap)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    98
            jsonquery = {'text': my_jsontreemap['query']['text']}
3848e1813a30 last version
cobled
parents: 27
diff changeset
    99
            jsonquery['categories'] = my_jsontreemap['query']['categories']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   100
            jsonquery['from_date'] = my_jsontreemap['query']['from_date']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   101
            jsonquery['to_date'] = my_jsontreemap['query']['to_date']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   102
            json['query'] = jsonquery
3848e1813a30 last version
cobled
parents: 27
diff changeset
   103
            json['cluster_title'] = (documentaryfile.cluster_set.all())[int(cluster)].title
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   104
            reader = MediapartReader()
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   105
            for thedocument in (documentaryfile.cluster_set.all())[int(cluster)].document.all():
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   106
                article_index += 1
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   107
                if article_index - 1 >= offset and article_index - 1 < offset + count:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   108
                    jsonarticle = {'id':thedocument.documentId}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   109
                    jsonarticle['title'] = thedocument.title
3848e1813a30 last version
cobled
parents: 27
diff changeset
   110
                    jsonarticle['abstract'] = thedocument.description
3848e1813a30 last version
cobled
parents: 27
diff changeset
   111
                    jsonarticle['url_document'] = reader.get_url(str(thedocument.documentId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   112
                    # TODO
3848e1813a30 last version
cobled
parents: 27
diff changeset
   113
                    jsonarticle['url_image'] = thedocument.image.url
3848e1813a30 last version
cobled
parents: 27
diff changeset
   114
                    '''jsonarticle['date'] = datetime.fromtimestamp(int(reader.get_date(str(thedocument.documentId)))).isoformat() + '.0Z''' 
3848e1813a30 last version
cobled
parents: 27
diff changeset
   115
                    
3848e1813a30 last version
cobled
parents: 27
diff changeset
   116
                    jsonarticle['date'] =(datetime.fromtimestamp(int(reader.get_date(str(thedocument.documentId))))).strftime('%d-%m-%Y')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   117
                    jsonarticle['category'] = reader.get_category(str(thedocument.documentId))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   118
                
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   119
                    clusterDoc = (documentaryfile.cluster_set.all())[int(cluster)].clusterdocumentweight_set.get(document=thedocument)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   120
                    jsonarticle['weight'] = clusterDoc.weight
3848e1813a30 last version
cobled
parents: 27
diff changeset
   121
                    tags = reader.get_tags(str(thedocument.documentId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   122
                    jsonarticle['tags'] = []
3848e1813a30 last version
cobled
parents: 27
diff changeset
   123
                    #tags in mediapart
3848e1813a30 last version
cobled
parents: 27
diff changeset
   124
                    for tag in tags:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   125
                        jsontag = {'title':tag[0].decode("windows-1252").encode("utf8")}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   126
                        jsonarticle['tags'].append(jsontag)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   127
        
3848e1813a30 last version
cobled
parents: 27
diff changeset
   128
                    #tags in periplus
3848e1813a30 last version
cobled
parents: 27
diff changeset
   129
                    tags = thedocument.tag_set.all()
3848e1813a30 last version
cobled
parents: 27
diff changeset
   130
                    for tag in tags:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   131
                        jsontag = {'title':tag.value}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   132
                        jsonarticle['tags'].append(jsontag)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   133
                        
3848e1813a30 last version
cobled
parents: 27
diff changeset
   134
                    author = self.get_author(str(thedocument.documentId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   135
                    jsonarticle['author'] = []
3848e1813a30 last version
cobled
parents: 27
diff changeset
   136
                    jsonauthor = {'id':author['id'], 'name':author['name'], 'url':'http://www.mediapart.fr/biographie/'+str(author['id'])}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   137
                    jsonarticle['author'].append(jsonauthor)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   138
                    
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   139
                    json['documents'].append(jsonarticle)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   140
                    jsonarticle['annotations'] = []
3848e1813a30 last version
cobled
parents: 27
diff changeset
   141
                    
3848e1813a30 last version
cobled
parents: 27
diff changeset
   142
                    for theannotationdoc in thedocument.annotationdocument_set.all():
3848e1813a30 last version
cobled
parents: 27
diff changeset
   143
                        #Take only the public annotations
3848e1813a30 last version
cobled
parents: 27
diff changeset
   144
                        if theannotationdoc.visibility == 1:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   145
                            jsonannotation = {'id':theannotationdoc.id}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   146
                            jsonannotation['user'] = theannotationdoc.user.username
3848e1813a30 last version
cobled
parents: 27
diff changeset
   147
                            # Test the scope of the annotation (a part of an article or the global article)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   148
                            if theannotationdoc.annoted_text:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   149
                                jsonannotation['annotated_text'] = theannotationdoc.annoted_text
3848e1813a30 last version
cobled
parents: 27
diff changeset
   150
                            jsonannotation['text'] = theannotationdoc.description
3848e1813a30 last version
cobled
parents: 27
diff changeset
   151
                     
3848e1813a30 last version
cobled
parents: 27
diff changeset
   152
                            jsonannotation['tags'] = []
3848e1813a30 last version
cobled
parents: 27
diff changeset
   153
                            for theannotationdoctag in theannotationdoc.tag_set.all():
3848e1813a30 last version
cobled
parents: 27
diff changeset
   154
                                logger.info('DOCUMENT_TAG_VALUE_OF_ANNOTATION == '+str(theannotationdoctag.value))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   155
                                jsontag = {'id': theannotationdoctag.value}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   156
                                jsontag = {'title':str(theannotationdoctag.value)}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   157
                                #TO DO URL ?
3848e1813a30 last version
cobled
parents: 27
diff changeset
   158
                                jsonannotation['tags'].append(jsontag)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   159
                                    
3848e1813a30 last version
cobled
parents: 27
diff changeset
   160
                            jsonarticle['annotations'].append(jsonannotation)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   161
                                 
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   162
        #if query_id it is a cluster saved in cache
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   163
        else:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   164
            logger.info('query_id present'+str(query_id))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   165
            d = simplejson.loads(self.request.session['jsonTreemap'])
3848e1813a30 last version
cobled
parents: 27
diff changeset
   166
            logger.info(d)     
3848e1813a30 last version
cobled
parents: 27
diff changeset
   167
            jsonquery = {'text': d['query']['text']}
3848e1813a30 last version
cobled
parents: 27
diff changeset
   168
            jsonquery['categories'] = d['query']['categories']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   169
            jsonquery['from_date'] = d['query']['from_date']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   170
            jsonquery['to_date'] = d['query']['to_date']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   171
            json['query'] = jsonquery
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   172
            dico = self.get_contextual_data(query_id)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   173
            logger.info('dico'+str(dico))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   174
            if dico['weblab_data']:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   175
                list_concepts, concepts_with_detailed_documents_list = dico['weblab_data']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   176
                filtering = dico['filtering_params']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   177
                if not list_concepts:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   178
                    json = '{"error msg": "no data for the query id"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   179
                    return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   180
                if int(cluster_id) >= len(list_concepts):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   181
                    json = '{"error msg": "invalid cluster id"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   182
                    return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   183
                categories = filtering['categories']
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   184
                logger.info('get_documents !!!!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   185
                logger.info(categories)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   186
               
3848e1813a30 last version
cobled
parents: 27
diff changeset
   187
                time_object1 = time.strptime(filtering['from_date'], '%m/%d/%Y')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   188
                from_date = str(int(time.mktime(time_object1)))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   189
                logger.info('get_documents 2!!!!'+str(from_date))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   190
                if from_date == '':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   191
                    from_date = 0
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   192
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
   193
                time_object2 = time.strptime(filtering['to_date'], '%m/%d/%Y')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   194
                to_date = str(int(time.mktime(time_object2)))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   195
                              
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   196
                if to_date == '':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   197
                    to_date = 9999999999
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   198
                json['cluster_title'] = list_concepts[cluster_id]['title']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   199
                for document in concepts_with_detailed_documents_list[cluster_id]:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   200
                    #Filtering by category
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   201
                    logger.info('categories) !!!!!!!!!!!!!!!!!!!!!!!!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   202
                    logger.info(categories)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   203
                    logger.info('document[category] !!!!!!!!!!!!!!!!!!!!!!!!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   204
                    logger.info(str(document['category']))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   205
                    logger.info('document[date] !!!!!!!!!!!!!!!!!!!!!!!!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   206
                    logger.info(str(document['date']))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   207
                    logger.info('to_date !!!!!!!!!!!!!!!!!!!!!!!!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   208
                    logger.info(str(to_date))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   209
                    logger.info('from_date !!!!!!!!!!!!!!!!!!!!!!!!')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   210
                    logger.info(str(from_date))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   211
                    
3848e1813a30 last version
cobled
parents: 27
diff changeset
   212
                    
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   213
                    if (categories != [] and document['category'] in categories) or (categories == []):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   214
                        #Filtering by date
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   215
                        if int(document['date']) >= int(from_date) and int(document['date']) < int(to_date):
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   216
                            logger.info('ENTER')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   217
                            article_index += 1
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   218
                            #Filtering by offset
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   219
                            if article_index - 1 >= offset and article_index - 1 < offset + count:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   220
                                logger.info('ENTER2')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   221
                                jsonarticle = {'id':document['id']}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   222
                                jsonarticle['title'] = document['title']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   223
                                jsonarticle['abstract'] = document['abstract']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   224
                                jsonarticle['url_document'] = document['url']
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   225
                                logger.info('ENTER3')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   226
                                # TODO
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   227
                                jsonarticle['url_image'] = document['image_path']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   228
                                #
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   229
                                '''jsonarticle['date'] = datetime.fromtimestamp(int(document['date'])).isoformat() + '.0Z''' 
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   230
                                locale.setlocale(locale.LC_ALL,'') 
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   231
                                jsonarticle['date'] = ((datetime.fromtimestamp(int(document['date']))).strftime('%d %B %Y')).decode("windows-1252").encode("utf8")
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   232
                                jsonarticle['category'] = document['category']
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   233
                                jsonarticle['weight'] = float(document['weight'])
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   234
                                reader = MediapartReader()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   235
                                tags = reader.get_tags(str(document['id']))
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   236
                                logger.info('ENTER4')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   237
                                jsonarticle['tags'] = []
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   238
                                logger.info('ENTER5')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   239
                                for tag in tags:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   240
                                    logger.info('ENTER6')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   241
                                    jsontag = {'title':tag[0].decode("windows-1252").encode("utf8")}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   242
                                    jsonarticle['tags'].append(jsontag)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   243
                                logger.info('ENTER5')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   244
                                author = self.get_author(document['id'])
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   245
                                logger.info('ENTER5')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   246
                                jsonarticle['author'] = []
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   247
                                logger.info('ENTER5')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   248
                                jsonauthor = {'id':author['id'], 'name':author['name'], 'url':'http://www.mediapart.fr/biographie/'+str(author['id'])}
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   249
                                logger.info('ENTER5')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   250
                                jsonarticle['author'].append(jsonauthor)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   251
                                logger.info('ENTER5')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   252
                                json['documents'].append(jsonarticle)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   253
                                jsonarticle['annotations'] = []
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   254
                                logger.info('jsonarticle')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   255
                                annotations = Annotationdocument.objects.all()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   256
                                for annotation in annotations:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   257
                                    #Take only the public annotations
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   258
                                    if annotation.visibility == 1:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   259
                                        jsonannotation = {'id':annotation.id}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   260
                                        jsonannotation['user'] = annotation.user.username
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   261
                                        # Test the scope of the annotation (a part of an article or the global article)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   262
                                        if annotation.annoted_text:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   263
                                            jsonannotation['annotated_text'] = annotation.annoted_text
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   264
                                        jsonannotation['text'] = annotation.description
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   265
                                 
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   266
                                        jsonannotation['tags'] = []
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   267
                                        tags = Tag.objects.filter(annotationdocument_id=annotation.id)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   268
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   269
                                        for tag in tags:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   270
                                            jsontag = {'id': tag.value}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   271
                                            jsontag = {'title':str(tag.value)}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   272
                                            #TO DO URL ?
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   273
                                            jsonannotation['tags'].append(jsontag)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   274
                                                
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   275
                                        jsonarticle['annotations'].append(jsonannotation)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   276
            else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   277
                json = '{"Error: Invalid query id"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   278
                return json
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   279
        logger.info('jsonarticle2')
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   280
        json['total_count'] = article_index
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   281
        logger.info('jsondocument'+str(json))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   282
        result = simplejson.dumps(json)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   283
        logger.info('result')
3848e1813a30 last version
cobled
parents: 27
diff changeset
   284
        logger.info(result)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   285
        return result  
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   286
    
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   287
    def get_author(self, document_id):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   288
        reader = MediapartReader()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   289
        dico = reader.get_author(document_id)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   290
        return dico
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   291
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   292
    def get_contextual_data(self, query_id):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   293
        query_context = cache.get(query_id)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   294
        logger.info('query_id ********** ='+str(query_context['filtering_params']))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   295
        if not query_context:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   296
            logger.info("Error: Invalid query id:"+query_id)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   297
            logger.info("Error: Invalid query id:"+query_id)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   298
            weblab_data=None
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   299
            query_context ={'filtering_params':{'from_date':0, 'to_date':0, 'categories':[]}}
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   300
        '''else:
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   301
            weblab_data = cache.get(query_context['weblab_data_key'])
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   302
            logger.info('query_context ********** ='+str(self.request.session.items()))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   303
            logger.info('query_context ********** ='+str(self.request.session['to_date']))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   304
            logger.info('query_context ********** ='+str(self.request.session['category']))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   305
            query_context ={'filtering_params':{'from_date':self.request.session['from_date'], 'to_date':self.request.session['to_date'], 'categories':self.request.session['category']}}'''
3848e1813a30 last version
cobled
parents: 27
diff changeset
   306
        weblab_data = cache.get(query_context['weblab_data_key'])
3848e1813a30 last version
cobled
parents: 27
diff changeset
   307
        logger.info('query_context ********** ='+str(cache.get(query_context['weblab_data_key'])))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   308
          
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   309
        return {'weblab_data':weblab_data, 'filtering_params':query_context['filtering_params']}