alcatel/controller/DocumentaryFiles.py
author Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
Thu, 10 Apr 2014 14:20:23 +0200
changeset 47 c0b4a8b5a012
parent 42 de4e97ded3c6
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 8 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
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
     9
from document.models import AnnotationDocumentaryFile
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    10
from document.models import Documentaryfile
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    11
from document.models import Image
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    12
from django.contrib.auth.models import User
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    13
from mediapartdb.MediapartReader import MediapartReader
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    14
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    15
logger = logging.getLogger('document')
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    16
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    17
class DocumentaryFiles(object):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    18
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    19
    def __init__(self, request):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    20
        self.request = request
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    21
      
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    22
    def get_files(self,user,offset,count):
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    23
        logger.info('get_files user='+str(offset))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    24
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    25
        '''attr = DocumentaryFilesGetAttributes(self.request)'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    26
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    27
        '''if not attr.get_user():'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    28
        if not user:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    29
            json = '{"error msg": "user is not defined"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    30
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    31
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    32
        '''if attr.get_offset() == '':'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    33
        if not offset:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    34
            json = '{"error msg": "no offset defined"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    35
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    36
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    37
        '''if attr.get_count() == '':'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    38
        if not count:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    39
            json = '{"error msg": "no count defined"}'
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    40
            return json
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    41
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    42
        json = {}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    43
        '''json['offset'] = int(attr.get_offset())
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    44
        json['count'] = int(attr.get_count())'''
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    45
        json['offset'] = int(offset)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    46
        json['count'] = int(count)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    47
        json['user'] = user
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    48
        total_count = 0
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    49
        nb_articles = 0
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    50
        json['documentary_files'] = []
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    51
       
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    52
        
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    53
        the_user = User.objects.filter(username=user)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    54
        reader = MediapartReader()
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    55
        if the_user:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    56
            documentaryFiles = Documentaryfile.objects.filter(user_id=the_user[0].id)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    57
            for docfile in documentaryFiles:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    58
                total_count += 1
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    59
                if total_count - 1 >= int(offset) and total_count - 1 < int(offset) + int(count):
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    60
                    jsonfile = {'id':docfile.id}
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    61
                    jsonfile['articles'] = []
3848e1813a30 last version
cobled
parents: 27
diff changeset
    62
                    article_index = 0
3848e1813a30 last version
cobled
parents: 27
diff changeset
    63
                    for thecluster in docfile.cluster_set.all():
3848e1813a30 last version
cobled
parents: 27
diff changeset
    64
                        nb_articles += thecluster.document.count()
3848e1813a30 last version
cobled
parents: 27
diff changeset
    65
                        for thedocument in thecluster.document.all():
3848e1813a30 last version
cobled
parents: 27
diff changeset
    66
                            if article_index < 4:
3848e1813a30 last version
cobled
parents: 27
diff changeset
    67
                                article_index += 1
3848e1813a30 last version
cobled
parents: 27
diff changeset
    68
                                jsonarticle = {'id':str(thedocument.documentId)}
3848e1813a30 last version
cobled
parents: 27
diff changeset
    69
                                jsonarticle['title'] = str(thedocument.title.encode("utf8"))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    70
                                jsonarticle['url_document'] = reader.get_url(str(thedocument.documentId))
3848e1813a30 last version
cobled
parents: 27
diff changeset
    71
                                jsonfile['articles'].append(jsonarticle)
3848e1813a30 last version
cobled
parents: 27
diff changeset
    72
                    jsonfile['nb_articles'] = nb_articles
3848e1813a30 last version
cobled
parents: 27
diff changeset
    73
                    nb_articles = 0
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    74
                    jsonfile['date'] = docfile.date.isoformat()
42
obledc
parents: 37
diff changeset
    75
                    jsonfile['description'] = str(docfile.description.encode("utf8"))
obledc
parents: 37
diff changeset
    76
                    jsonfile['title'] = str(docfile.title.encode("utf8"))
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    77
                    image = Image.objects.get(id=docfile.image_id)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    78
                    jsonfile['url_image'] = str(image.url)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    79
                    
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    80
                    jsonfile['annotations'] = []
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    81
                    annotations = AnnotationDocumentaryFile.objects.filter(documentaryFile_id=docfile.id)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    82
                    for annotation in annotations:
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    83
                        jsonannotation = {'id':annotation.id}
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    84
                        jsonannotation['user'] = annotation.user_id
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    85
                        jsonannotation['text'] = annotation.description
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    86
                        jsonfile['annotations'].append(jsonannotation)
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    87
                    json['documentary_files'].append(jsonfile)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    88
                json['nb_articles'] = nb_articles
3848e1813a30 last version
cobled
parents: 27
diff changeset
    89
                
3848e1813a30 last version
cobled
parents: 27
diff changeset
    90
                nb_articles = 0    
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    91
        json['total_count'] = total_count
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    92
        result = simplejson.dumps(json)
37
3848e1813a30 last version
cobled
parents: 27
diff changeset
    93
        logger.info(result)
27
8ca7f2cea729 add alcatel folder
cobled@FRVILN0H401086.emea.lucent.com
parents:
diff changeset
    94
        return result