alcatel/controller/DocumentaryFile.py
author obledc
Tue, 10 Sep 2013 13:25:16 +0200
changeset 42 de4e97ded3c6
parent 37 3848e1813a30
permissions -rw-r--r--
new
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 27 juil. 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 datetime
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     7
import logging
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
     8
import simplejson
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     9
from time import  mktime 
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    10
from django.core.cache import cache
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 dataparser.ClientDocumentaryFileAttributes import ClientDocumentaryFileAttributes
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    13
from dataparser.ClientDocumentaryFileVisibilityAttributes import ClientDocumentaryFileVisibilityAttribute
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    14
from document.models import Cluster
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    15
from document.models import Image
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    16
from document.models import Document
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    17
from document.models import Documentaryfile
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    18
from document.models import Clusterdocumentweight
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    19
from django.contrib.auth.models import User
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    20
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    21
logger = logging.getLogger('document')
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
class DocumentaryFile(object):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    24
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    25
    def __init__(self, request):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    26
        logger.info('DocumentaryFile init')
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    27
        self.request = request
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    28
           
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    29
    def create(self):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    30
        logger.info('create DocumentaryFile')
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    31
        attr = ClientDocumentaryFileAttributes(self.request)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    32
        '''logger.info('user = ' + str(attr.get_user()))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    33
        logger.info('query_id = ' + str(attr.get_query_id()))
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    34
        logger.info('public = ' + str(attr.get_visibility()))'''
3848e1813a30 last version
cobled
parents: 27
diff changeset
    35
        
3848e1813a30 last version
cobled
parents: 27
diff changeset
    36
        #query_id = attr.get_query_id()
3848e1813a30 last version
cobled
parents: 27
diff changeset
    37
        if attr.get_query_id():
3848e1813a30 last version
cobled
parents: 27
diff changeset
    38
            key1 = cache.get(attr.get_query_id())
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    39
            context = cache.get(key1['weblab_data_key'])
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    40
        elif self.request.session['key1']:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    41
            context = cache.get(self.request.session['key1'])
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    42
        else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    43
            json = '{"Error": "Invalid query id"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    44
            logger.info(json)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    45
                   
3848e1813a30 last version
cobled
parents: 27
diff changeset
    46
        if context == None:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    47
            logger.info("cache empty")
3848e1813a30 last version
cobled
parents: 27
diff changeset
    48
            json = '{"Error": "cache empty"}'
3848e1813a30 last version
cobled
parents: 27
diff changeset
    49
            logger.info(json)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    50
        else:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    51
            logger.info("cache not empty")
3848e1813a30 last version
cobled
parents: 27
diff changeset
    52
            list_concepts,concepts_with_detailed_documents_list = context
3848e1813a30 last version
cobled
parents: 27
diff changeset
    53
            logger.info('list_concepts' + str(list_concepts))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    54
            logger.info('concepts_with_detailed_documents_list' + str(concepts_with_detailed_documents_list))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    55
            #parse to get the value to save the documentary file
3848e1813a30 last version
cobled
parents: 27
diff changeset
    56
            json = self.parseAndSaveValue(list_concepts,concepts_with_detailed_documents_list, attr )
3848e1813a30 last version
cobled
parents: 27
diff changeset
    57
       
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    58
        return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    59
    
42
obledc
parents: 37
diff changeset
    60
    
obledc
parents: 37
diff changeset
    61
    def modify(self,attr):
obledc
parents: 37
diff changeset
    62
        logger.info('modify')
obledc
parents: 37
diff changeset
    63
        
obledc
parents: 37
diff changeset
    64
        logger.info('get_description = ' + str(attr.get_description().encode("utf8")))
obledc
parents: 37
diff changeset
    65
        logger.info('get_title = ' + str(attr.get_title().encode("utf8")))
obledc
parents: 37
diff changeset
    66
        logger.info('get_visibility = ' + str(attr.get_visibility()))
obledc
parents: 37
diff changeset
    67
        try:
obledc
parents: 37
diff changeset
    68
            documentaryfile = Documentaryfile.objects.get(pk=attr.get_documentary_file_id())
obledc
parents: 37
diff changeset
    69
        except Documentaryfile.DoesNotExist:
obledc
parents: 37
diff changeset
    70
            json = '{"Error": "Invalid documentary id"}'
obledc
parents: 37
diff changeset
    71
            logger.info(json)
obledc
parents: 37
diff changeset
    72
            return json
obledc
parents: 37
diff changeset
    73
        
obledc
parents: 37
diff changeset
    74
        logger.info('documentaryfile.user.name = ' + str(documentaryfile.user.username))
obledc
parents: 37
diff changeset
    75
        if documentaryfile.user.username == attr.get_user():
obledc
parents: 37
diff changeset
    76
            if attr.get_visibility() == 'on':
obledc
parents: 37
diff changeset
    77
                visibility_attr = True
obledc
parents: 37
diff changeset
    78
            else:
obledc
parents: 37
diff changeset
    79
                visibility_attr = False
obledc
parents: 37
diff changeset
    80
            '''else:
obledc
parents: 37
diff changeset
    81
                json = '{"Error" : "Invalid visibility parameter"}'
obledc
parents: 37
diff changeset
    82
                logger.info(json)
obledc
parents: 37
diff changeset
    83
                return json'''
obledc
parents: 37
diff changeset
    84
            
obledc
parents: 37
diff changeset
    85
            for thecluster in documentaryfile.cluster_set.all():
obledc
parents: 37
diff changeset
    86
                for thedocument in thecluster.document.all():
obledc
parents: 37
diff changeset
    87
                    for theannotationdoc in thedocument.annotationdocument_set.all():
obledc
parents: 37
diff changeset
    88
                        theannotationdoc.visibility = visibility_attr
obledc
parents: 37
diff changeset
    89
                        theannotationdoc.save()
obledc
parents: 37
diff changeset
    90
            
obledc
parents: 37
diff changeset
    91
            title_attr = str(attr.get_title().encode("utf8"))
obledc
parents: 37
diff changeset
    92
            description_attr = str(attr.get_description().encode("utf8"))
obledc
parents: 37
diff changeset
    93
                      
obledc
parents: 37
diff changeset
    94
            documentaryfile.visibility = visibility_attr
obledc
parents: 37
diff changeset
    95
            documentaryfile.title = title_attr
obledc
parents: 37
diff changeset
    96
            documentaryfile.description = description_attr
obledc
parents: 37
diff changeset
    97
            
obledc
parents: 37
diff changeset
    98
            documentaryfile.save()
obledc
parents: 37
diff changeset
    99
            json = '{"modif": ok "}'
obledc
parents: 37
diff changeset
   100
            logger.info(json)
obledc
parents: 37
diff changeset
   101
        else:
obledc
parents: 37
diff changeset
   102
            json = '{"Error": "User does not matched"}'
obledc
parents: 37
diff changeset
   103
            logger.info(json)
obledc
parents: 37
diff changeset
   104
       
obledc
parents: 37
diff changeset
   105
        return json
obledc
parents: 37
diff changeset
   106
    
obledc
parents: 37
diff changeset
   107
    
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   108
    def visibilityChange(self):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   109
        logger.info('visibilityChange')
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   110
        attr = ClientDocumentaryFileVisibilityAttribute(self.request)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   111
        logger.info('get_user = ' + str(attr.get_user()))
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   112
        logger.info('get_documentary_file_id = ' + str(attr.get_documentary_file_id()))
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   113
        logger.info('get_visibility = ' + str(attr.get_visibility()))
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   114
        try:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   115
            documentaryfile = Documentaryfile.objects.get(pk=attr.get_documentary_file_id())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   116
        except Documentaryfile.DoesNotExist:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   117
            json = '{"Error": "Invalid documentary id"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   118
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   119
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   120
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   121
        logger.info('documentaryfile.user.name = ' + str(documentaryfile.user.username))
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   122
        if documentaryfile.user.username == attr.get_user():
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   123
            if attr.get_visibility() == 'public':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   124
                visibility_attr = True
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   125
            elif attr.get_visibility() == 'private':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   126
                visibility_attr = False
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   127
            else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   128
                json = '{"Error" : "Invalid visibility parameter"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   129
                logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   130
                return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   131
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   132
            for thecluster in documentaryfile.cluster_set.all():
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   133
                for thedocument in thecluster.document.all():
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   134
                    for theannotationdoc in thedocument.annotationdocument_set.all():
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   135
                        theannotationdoc.visibility = visibility_attr
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   136
                        theannotationdoc.save()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   137
                       
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   138
            documentaryfile.visibility = visibility_attr
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   139
            documentaryfile.save()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   140
            json = '{"visibility": "' + attr.get_visibility() + '"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   141
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   142
        else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   143
            json = '{"Error": "User does not matched"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   144
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   145
       
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   146
        return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   147
        
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   148
    def delete(self,docId):
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   149
        logger.info('delete DocumentaryFile')
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   150
        #attr = ClientDocumentaryFileDeleteAttributes(self.request)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   151
        '''logger.info('get_user = ' + str(attr.get_user()))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   152
        logger.info('get_documentary_file_id = ' + str(attr.get_documentary_file_id()))
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   153
        docId = attr.get_documentary_file_id()'''
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   154
        if docId == '':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   155
            json= '{"Error": "No documentary_file_id attribute in the http post request"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   156
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   157
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   158
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   159
        try:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   160
            documentaryfile = Documentaryfile.objects.get(pk=docId)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   161
        except Documentaryfile.DoesNotExist:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   162
            json= '{"Error": "Invalid documentary_file_id"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   163
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   164
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   165
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   166
        logger.info('documentaryfile.user.username = ' + str(documentaryfile.user.username))
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   167
        logger.info('self.request.user = ' + str(self.request.user))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   168
        if str(documentaryfile.user.username) == str(self.request.user):
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   169
            #verify if the associated documents are associated to another documentaryfile. if not delete the documents
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   170
            for thecluster in documentaryfile.cluster_set.all():     
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   171
                for thedocument in thecluster.document.all():
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   172
                    nb = (Clusterdocumentweight.objects.filter(document_id=thedocument.documentId)).count()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   173
                    logger.info('nb' + str(nb))
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   174
                    if nb == 1:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   175
                        thedocument.delete()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   176
           
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   177
            documentaryfile.delete()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   178
            json = '{"documentary_file_deleted" :' + str(docId) + '}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   179
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   180
        else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   181
            json= '{"Error": "User does not match"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   182
            logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   183
        return json  
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   184
    
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   185
    def parseAndSaveValue(self, list_concepts,concepts_with_detailed_documents_list, attr):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   186
        #parse the context
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   187
        logger.info('query_context ********** ='+str(self.request.session.items()))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   188
        try:
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   189
            #text = str(((attr.get_user()).replace(' ', '')).replace('\n', ''))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   190
            text = str(attr.get_user())
3848e1813a30 last version
cobled
parents: 27
diff changeset
   191
            logger.info('attr.get_user! !!! = '+text)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   192
            tutu = 'cobled'
3848e1813a30 last version
cobled
parents: 27
diff changeset
   193
            logger.info('attr.get_user! !!! = '+text)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   194
            user_attr = User.objects.get(username=tutu)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   195
        except User.DoesNotExist, err:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   196
            logger.info(' Error: '+ str(err))
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   197
            json = '{"Error": "User does not existed"}' 
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   198
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   199
        visibility_attr = attr.get_visibility()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   200
        if visibility_attr == 'public':
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   201
            visibility_bool = True
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   202
        else:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   203
            visibility_bool = False
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   204
            
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   205
        title_attr = attr.get_title()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   206
        description_attr = attr.get_description()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   207
        #query_id_attr = attr.get_query_id()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   208
        #TODO url image
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   209
               
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   210
        now = datetime.datetime.now()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   211
        mktime(now.timetuple())
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   212
        logger.info(mktime(now.timetuple()))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   213
        
3848e1813a30 last version
cobled
parents: 27
diff changeset
   214
        for concept_index, concept_with_detailed_documents_list in enumerate(concepts_with_detailed_documents_list) :
3848e1813a30 last version
cobled
parents: 27
diff changeset
   215
            logger.info('url image first cluster'+list_concepts[concept_index]['url_image'])
3848e1813a30 last version
cobled
parents: 27
diff changeset
   216
            image1 = Image(url=list_concepts[concept_index]['url_image'])
3848e1813a30 last version
cobled
parents: 27
diff changeset
   217
            image1.save()
3848e1813a30 last version
cobled
parents: 27
diff changeset
   218
            break
3848e1813a30 last version
cobled
parents: 27
diff changeset
   219
        if  attr.get_json_streamgraph():
3848e1813a30 last version
cobled
parents: 27
diff changeset
   220
            logger.info('attr.get_json_streamgraph ****'+str(attr.get_json_streamgraph()))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   221
            jsonstreamgraph = attr.get_json_streamgraph()
3848e1813a30 last version
cobled
parents: 27
diff changeset
   222
        else:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   223
            logger.info('request_streamgraph ****'+str(self.request.session['jsonStreamgraph']))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   224
            jsonstreamgraph = self.request.session['jsonStreamgraph']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   225
        
3848e1813a30 last version
cobled
parents: 27
diff changeset
   226
        if attr.get_json_treemap():
3848e1813a30 last version
cobled
parents: 27
diff changeset
   227
            logger.info('attr.get_json_streamgraph ****'+str(attr.get_json_treemap()))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   228
            jsontreemap = attr.get_json_treemap()
3848e1813a30 last version
cobled
parents: 27
diff changeset
   229
        else:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   230
            logger.info('request_streamgraph ****'+str(self.request.session['jsonTreemap']))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   231
            jsontreemap = self.request.session['jsonTreemap']
3848e1813a30 last version
cobled
parents: 27
diff changeset
   232
      
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   233
        # create the documentary file
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   234
        #dossierDoc1 = Documentaryfile(title=title_attr, date=now , description=description_attr, visibility=visibility_bool, list_concepts=list_concepts, concepts_with_detailed_documents_list = concepts_with_detailed_documents_list, image=image1, user=user_attr)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   235
        dossierDoc1 = Documentaryfile(title=title_attr, date=now , description=description_attr, visibility=visibility_bool, jsonstreamgraph=jsonstreamgraph, jsontreemap = jsontreemap, image=image1, user=user_attr, list_concepts=list_concepts, concepts_with_detailed_documents_list = concepts_with_detailed_documents_list,)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   236
        dossierDoc1.save()
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   237
3848e1813a30 last version
cobled
parents: 27
diff changeset
   238
        data = simplejson.loads(self.request.session['jsonTreemap'])
3848e1813a30 last version
cobled
parents: 27
diff changeset
   239
        logger.info('DATA BEFORE ***'+str(data))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   240
        for cluster in data['clusters']:
3848e1813a30 last version
cobled
parents: 27
diff changeset
   241
            cluster['doc_id'] = int(dossierDoc1.id)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   242
            cluster['user'] = dossierDoc1.user.username
3848e1813a30 last version
cobled
parents: 27
diff changeset
   243
        logger.info('DATA AFTER ***'+str(data))
3848e1813a30 last version
cobled
parents: 27
diff changeset
   244
        jsontreemap = simplejson.dumps(data)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   245
        dossierDoc1.jsontreemap = jsontreemap
3848e1813a30 last version
cobled
parents: 27
diff changeset
   246
        dossierDoc1.save()
3848e1813a30 last version
cobled
parents: 27
diff changeset
   247
        #nb_concept = len(concepts_with_detailed_documents_list)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   248
        
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   249
        for concept_index, concept_with_detailed_documents_list in enumerate(concepts_with_detailed_documents_list) :
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
   250
            imagecluster = Image(url=list_concepts[concept_index]['url_image'])
3848e1813a30 last version
cobled
parents: 27
diff changeset
   251
            imagecluster.save()
3848e1813a30 last version
cobled
parents: 27
diff changeset
   252
            cluster1 = Cluster.objects.create(title=list_concepts[concept_index]['title'], description=list_concepts[concept_index]['abstract'], weight=list_concepts[concept_index]['score'], documentaryfile=dossierDoc1, image=imagecluster)
3848e1813a30 last version
cobled
parents: 27
diff changeset
   253
            logger.info('CLUSTERID'+str(cluster1.id))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   254
            for detailed_document in concept_with_detailed_documents_list:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   255
                #Verify if the document exist already in database
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   256
                try:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   257
                    doc1 = Document.objects.get(pk=detailed_document['id'])
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   258
                except Document.DoesNotExist:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   259
                    doc1 = Document.objects.create(documentId=detailed_document['id'], title=detailed_document['title'],description=detailed_document['abstract'],date=datetime.datetime.fromtimestamp(int(detailed_document['date'])).isoformat(), image=image1)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   260
                    
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   261
                clusterDocWeight1 = Clusterdocumentweight(cluster=cluster1, document=doc1, weight=detailed_document['weight'])
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   262
                clusterDocWeight1.save()
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   263
        json= '{"documentary_file_created":' + str(dossierDoc1.id) + '}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   264
        logger.info(json)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
   265
        return json