src/spel/management/commands/loadtheatredata.py
author cavaliet
Tue, 08 Jul 2014 17:50:11 +0200
changeset 115 231c0319666c
parent 84 d58673e1dc90
permissions -rwxr-xr-x
v0.5.22 : correct video call in template
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
4681446b722d management command first step
cavaliet
parents:
diff changeset
     2
'''
4681446b722d management command first step
cavaliet
parents:
diff changeset
     3
Created on Mar 22, 2013
4681446b722d management command first step
cavaliet
parents:
diff changeset
     4
4681446b722d management command first step
cavaliet
parents:
diff changeset
     5
@author: tc
4681446b722d management command first step
cavaliet
parents:
diff changeset
     6
'''
4681446b722d management command first step
cavaliet
parents:
diff changeset
     7
8
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
     8
from datetime import datetime
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
     9
from dircache import listdir
4681446b722d management command first step
cavaliet
parents:
diff changeset
    10
from django.core.management.base import BaseCommand, CommandError
4681446b722d management command first step
cavaliet
parents:
diff changeset
    11
from genericpath import isdir, isfile
8
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    12
from ldt.api.ldt.serializers.cinelabserializer import CinelabSerializer
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    13
from ldt.ldt_utils.models import Media, Content, Project
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    14
from ldt.ldt_utils.stat import update_stat_content
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    15
from ldt.ldt_utils.utils import generate_uuid
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    16
from ldt.security import set_current_user, get_current_user_or_admin
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
    17
from ldt.security.cache import cached_assign
4681446b722d management command first step
cavaliet
parents:
diff changeset
    18
from optparse import make_option
4681446b722d management command first step
cavaliet
parents:
diff changeset
    19
from os.path import join
4681446b722d management command first step
cavaliet
parents:
diff changeset
    20
import json
8
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    21
import lxml.etree
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
    22
import os.path
8
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    23
import time
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    24
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    25
import logging
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
    26
logger = logging.getLogger(__name__)
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
    27
4681446b722d management command first step
cavaliet
parents:
diff changeset
    28
4681446b722d management command first step
cavaliet
parents:
diff changeset
    29
class Command(BaseCommand):
4681446b722d management command first step
cavaliet
parents:
diff changeset
    30
    '''
4681446b722d management command first step
cavaliet
parents:
diff changeset
    31
    Load medias, contents, project from json generated by ubicast
4681446b722d management command first step
cavaliet
parents:
diff changeset
    32
    '''
4681446b722d management command first step
cavaliet
parents:
diff changeset
    33
4681446b722d management command first step
cavaliet
parents:
diff changeset
    34
    args = 'folder containing folders containing json files'
84
d58673e1dc90 first step for opera
cavaliet
parents: 70
diff changeset
    35
    help = 'Load medias, contents and project from json files generated by ubicast for THEATRE content'
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
    36
    
4681446b722d management command first step
cavaliet
parents:
diff changeset
    37
    
4681446b722d management command first step
cavaliet
parents:
diff changeset
    38
    def __safe_get(self, dict_arg, key, conv = lambda x: x, default= None):
4681446b722d management command first step
cavaliet
parents:
diff changeset
    39
        val = dict_arg.get(key, default)
4681446b722d management command first step
cavaliet
parents:
diff changeset
    40
        return conv(val) if val else default
4681446b722d management command first step
cavaliet
parents:
diff changeset
    41
4681446b722d management command first step
cavaliet
parents:
diff changeset
    42
    def __safe_decode(self, s):
4681446b722d management command first step
cavaliet
parents:
diff changeset
    43
        if not isinstance(s, basestring):
4681446b722d management command first step
cavaliet
parents:
diff changeset
    44
            return s
4681446b722d management command first step
cavaliet
parents:
diff changeset
    45
        try:
4681446b722d management command first step
cavaliet
parents:
diff changeset
    46
            return s.decode('utf8')
4681446b722d management command first step
cavaliet
parents:
diff changeset
    47
        except:
4681446b722d management command first step
cavaliet
parents:
diff changeset
    48
            try:
4681446b722d management command first step
cavaliet
parents:
diff changeset
    49
                return s.decode('latin1')
4681446b722d management command first step
cavaliet
parents:
diff changeset
    50
            except:
4681446b722d management command first step
cavaliet
parents:
diff changeset
    51
                return s.decode('utf8','replace')
4681446b722d management command first step
cavaliet
parents:
diff changeset
    52
4681446b722d management command first step
cavaliet
parents:
diff changeset
    53
    def handle(self, *args, **options):
4681446b722d management command first step
cavaliet
parents:
diff changeset
    54
        
4681446b722d management command first step
cavaliet
parents:
diff changeset
    55
        # Test path
4681446b722d management command first step
cavaliet
parents:
diff changeset
    56
        if len(args) != 1:
4681446b722d management command first step
cavaliet
parents:
diff changeset
    57
            raise CommandError("The command has no argument or too much arguments. Only one is needed : the folder file path.")
4681446b722d management command first step
cavaliet
parents:
diff changeset
    58
        
4681446b722d management command first step
cavaliet
parents:
diff changeset
    59
        # Check if temporary files already exist
4681446b722d management command first step
cavaliet
parents:
diff changeset
    60
        path = os.path.abspath(args[0])
4681446b722d management command first step
cavaliet
parents:
diff changeset
    61
        if not os.path.exists(path):
4681446b722d management command first step
cavaliet
parents:
diff changeset
    62
            raise CommandError("The folder does not exist.")
4681446b722d management command first step
cavaliet
parents:
diff changeset
    63
        
4681446b722d management command first step
cavaliet
parents:
diff changeset
    64
        do_import = False
4681446b722d management command first step
cavaliet
parents:
diff changeset
    65
        confirm = raw_input("""
4681446b722d management command first step
cavaliet
parents:
diff changeset
    66
    If the database already contains datas, they will be overriden
4681446b722d management command first step
cavaliet
parents:
diff changeset
    67
    
4681446b722d management command first step
cavaliet
parents:
diff changeset
    68
    Do you want to continue ?
4681446b722d management command first step
cavaliet
parents:
diff changeset
    69
4681446b722d management command first step
cavaliet
parents:
diff changeset
    70
    Type 'y' to continue, or 'n' to quit: """)
4681446b722d management command first step
cavaliet
parents:
diff changeset
    71
        do_import = (confirm == "y")
4681446b722d management command first step
cavaliet
parents:
diff changeset
    72
        
4681446b722d management command first step
cavaliet
parents:
diff changeset
    73
        # Continue
4681446b722d management command first step
cavaliet
parents:
diff changeset
    74
        if do_import:
4681446b722d management command first step
cavaliet
parents:
diff changeset
    75
            print("Parsing folder %s ..." % path)
59
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    76
            for dirpath, dirnames, filenames in os.walk(path):
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    77
                #print("Parsing walk %s, %s, %s" % (dirpath, dirnames, filenames))
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    78
                for filename in filenames:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    79
                    if filename == "cinelab_iri.json":
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    80
                        json_path = os.path.join(dirpath, filename)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    81
                        print("Parsing json file %s ..." % json_path)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    82
                        json_data = False
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    83
                        try:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    84
                            file_data = open(json_path)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    85
                            json_data = json.load(file_data)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    86
                            file_data.close()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    87
                        except:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    88
                            print("Error while parsing json file.")
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    89
                        if json_data:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    90
                            ctt_id = os.path.basename(dirpath)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    91
                            # Save media and content
84
d58673e1dc90 first step for opera
cavaliet
parents: 70
diff changeset
    92
                            dur = int(json_data["medias"][0]["meta"]["duration"])
115
231c0319666c v0.5.22 : correct video call in template
cavaliet
parents: 84
diff changeset
    93
                            media, _ = Media.objects.get_or_create(src="/data/theatre/"+ctt_id+"/720p.mp4", duration=dur)
59
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    94
                            media.is_public = True
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    95
                            content = Content.objects.create(iri_id=ctt_id, 
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    96
                                                             iriurl=ctt_id+u"/"+ctt_id+u".iri", 
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    97
                                                             media_obj=media, 
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
    98
                                                             title=json_data["meta"]["dc:title"], 
84
d58673e1dc90 first step for opera
cavaliet
parents: 70
diff changeset
    99
                                                             duration=dur,
59
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   100
                                                             content_creation_date = json_data["meta"]["dc:created"])
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   101
                            content.is_public = True
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   102
                            # Get content front projet
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   103
                            proj = content.front_project
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   104
                            username = proj.owner.username
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   105
                            now = datetime.utcnow().isoformat()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   106
                            # Start data to send to api
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   107
                            proj_data = {}
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   108
                            proj_data["meta"] = {}
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   109
                            proj_data["meta"]["id"] = proj.ldt_id
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   110
                            proj_data["meta"]["dc:title"] = proj.title
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   111
                            proj_data["meta"]["dc:creator"] = username
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   112
                            proj_data["meta"]["dc:description"] = "description added"
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   113
                            proj_data["meta"]["dc:created"] = json_data["meta"]["dc:created"]
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   114
                            proj_data["meta"]["dc:modified"] = json_data["meta"]["dc:modified"]
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   115
                            proj_data["meta"]["dc:contributor"] = username
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   116
                            proj_data["medias"] = []
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   117
                            proj_data["medias"].append({"id": content.iri_id})
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   118
                            # The tags and annotations (main part)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   119
                            proj_data["tags"] = []
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   120
                            proj_data["annotations"] = []
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   121
                            tags_id_label = {}
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   122
                            tags_label_id = {}
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   123
                            for a in json_data["annotations"]:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   124
                                # "content": {  "data": { "modalites_sceniques": "costumes,décors",... } }
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   125
                                if "content" in a and "data" in a["content"] and type(a["content"]["data"]) == type(dict()):
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   126
                                    annot_tags = []
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   127
                                    desc = ""
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   128
                                    title = ""
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   129
                                    # Build tags
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   130
                                    for k,v in a["content"]["data"].iteritems():
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   131
                                        if k!="commentaire" and k!="description" and k!="titre":
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   132
                                            v = v.split(",")
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   133
                                            for val in v:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   134
                                                val = val.strip()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   135
                                                tag_label = k + u": " + val
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   136
                                                if val!="":
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   137
                                                    if not tag_label in tags_label_id:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   138
                                                        tags_label_id[tag_label] = generate_uuid()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   139
                                                        tags_id_label[tags_label_id[tag_label]] = tag_label
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   140
                                                        #logger.debug("CREATED")
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   141
                                                        #logger.debug(tags_label_id[tag_label] + " = " + tags_id_label[tags_label_id[tag_label]])
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   142
                                                        proj_data["tags"].append({"meta": { "dc:title": tag_label }, "id": tags_label_id[tag_label] })
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   143
                                                    annot_tags.append({"id-ref": tags_label_id[tag_label] })
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   144
                                        elif k=="commentaire" or k=="description":
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   145
                                            desc = v
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   146
                                        elif k=="titre":
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   147
                                            title = v
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   148
                                    # Build annotation with needed fields
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   149
                                    proj_data["annotations"].append({
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   150
                                        "content": {
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   151
                                            "mimetype": "application/x-ldt-structured",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   152
                                            "description": desc,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   153
    #                                         "img": {
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   154
    #                                             "src": ""
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   155
    #                                         },
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   156
                                            "title": title,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   157
    #                                        "polemics": [ ],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   158
                                        },
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   159
                                        "begin": a["begin"],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   160
                                        "meta": {
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   161
    #                                        "dc:contributor": "admin",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   162
                                            "id-ref": a["type"],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   163
                                            "dc:created": now,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   164
    #                                        "dc:modified": "2014-03-04T16:40:23.609971",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   165
                                            "dc:creator": username
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   166
                                        },
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   167
                                        "end": a["end"],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   168
                                        "tags": annot_tags,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   169
                                        "color": "16763904",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   170
                                        "media": ctt_id,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   171
                                        "id": a["id"]
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   172
                                    })
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   173
                            
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   174
                            # The annotation-types
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   175
                            proj_data["annotation-types"] = []
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   176
                            at_ids = []
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   177
                            for at in json_data["annotation_types"]:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   178
                                proj_data["annotation-types"].append({
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   179
    #                                dc:contributor: "admin",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   180
                                    "dc:creator": username,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   181
                                    "dc:title": at["id"],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   182
                                    "id": at["id"],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   183
    #                                dc:created: "2014-03-04T14:51:13.907674",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   184
                                    "dc:description": ""
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   185
    #                                dc:modified: "2014-03-04T14:51:13.907674"
8
5669fe792a0b import json from ubicast
cavaliet
parents: 7
diff changeset
   186
                                })
59
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   187
                                at_ids.append({ "id-ref": at["id"] })
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   188
                            # The list of annotation-types
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   189
                            list_id = generate_uuid()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   190
                            proj_data["lists"] = [{
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   191
                                "items": at_ids,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   192
                                "meta": {
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   193
                                    "dc:creator": username,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   194
                                    "id-ref": ctt_id,
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   195
                                    "dc:title": "SPEL",
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   196
                                    "dc:description": ""
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   197
                                },
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   198
                                "id": list_id
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   199
                            }]
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   200
                            # The views for default display
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   201
                            proj_data["views"] = [{
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   202
                                "id": generate_uuid(),
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   203
                                "contents": [ ctt_id ],
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   204
                                "annotation_types": [atid["id-ref"] for atid in at_ids]
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   205
                            }]
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   206
                            
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   207
                            serializr = CinelabSerializer()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   208
                            serializr.validate_cinelab_json(proj_data)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   209
                            ldt_xml = serializr.cinelab_to_ldt(proj_data)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   210
                            proj.ldt = lxml.etree.tostring(ldt_xml, pretty_print=True)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   211
                            #logger.debug(proj.ldt)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   212
                            proj.save()
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   213
                            update_stat_content(content)
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   214
                    else:
7913cdea80e7 import data now recursive
cavaliet
parents: 21
diff changeset
   215
                        print("Ignoring or not exist.")
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
   216
        
4681446b722d management command first step
cavaliet
parents:
diff changeset
   217
        # This is the end
9
b62e3c1565d0 search chapters begins to work
cavaliet
parents: 8
diff changeset
   218
        print("This is the end. DO NOT FORGET TO RUN THE COMMAND 'REINDEX -P' TO GENERATE SEGMENTS AND TAGS.")
7
4681446b722d management command first step
cavaliet
parents:
diff changeset
   219