corrections on project serialize and update project
authorymh <ymh.work@gmail.com>
Mon, 18 Oct 2010 01:44:12 +0200
changeset 97 66f6aff5c382
parent 90 0325a0a8b997
child 98 c9460033138f
corrections on project serialize and update project
web/ldt/ldt_utils/projectserializer.py
web/ldt/ldt_utils/views.py
--- a/web/ldt/ldt_utils/projectserializer.py	Fri Oct 15 11:58:37 2010 +0200
+++ b/web/ldt/ldt_utils/projectserializer.py	Mon Oct 18 01:44:12 2010 +0200
@@ -1,6 +1,7 @@
 import lxml.etree
 import uuid
 from datetime import datetime
+from django.utils.datastructures import SortedDict
 from ldt.ldt_utils.models import Content, Project
 
 DATE_FORMATS = ["%d/%m/%Y","%Y-%m-%d"]
@@ -16,15 +17,19 @@
         self.ldt_doc = None
         self.medias = []
         self.medias_by_id = {}
+        self.medias_dict = SortedDict()
         self.annotations = []
         self.annotations_by_annotation_type = {}
+        self.annotations_dict = SortedDict()
         self.tags = {}
         self.tags_by_id = {}
         self.annotation_types = []
         self.annotation_types_by_id = {}
+        self.annotation_types_dict = SortedDict()
         self.views = []
         self.lists = []
         self.lists_by_id = {}
+        self.lists_dict = SortedDict()
         self.serialize_contents = from_contents
         self.from_display = from_display
         
@@ -320,6 +325,7 @@
         
         self.medias.append(new_media)
         self.medias_by_id[content.iri_id] = new_media
+        self.medias_dict[content.iri_id] = new_media
         
         if self.serialize_contents:        
             res = doc.xpath("/iri/body/ensembles/ensemble")
--- a/web/ldt/ldt_utils/views.py	Fri Oct 15 11:58:37 2010 +0200
+++ b/web/ldt/ldt_utils/views.py	Mon Oct 18 01:44:12 2010 +0200
@@ -4,6 +4,8 @@
 from django.contrib.auth.decorators import login_required
 from django.core import serializers
 from django.core.urlresolvers import reverse
+from django.forms.forms import get_declared_fields
+from django.forms.models import model_to_dict 
 from django.forms.util import ErrorList
 from django.http import HttpResponse, HttpResponseRedirect, \
     HttpResponseForbidden
@@ -490,12 +492,31 @@
     
     form_status= 'none'        
     if request.method =="POST":
-        content_form = ContentForm(request.POST, prefix="content", instance=instance_content)
-        media_form = MediaForm(request.POST, request.FILES, prefix="media", instance= instance_media)
+        
+        content_instance_val = model_to_dict(instance_content,exclude=ContentForm.Meta.exclude)
+        media_instance_val = model_to_dict(instance_media, exclude=MediaForm.Meta.exclude)
+        #add prefix
+        
+        def add_prefix(dict, prefix):
+            for key,value in dict.items():
+                dict['%s-%s' % (prefix, key)] = value
+                del(dict[key])
+        
+        add_prefix(content_instance_val, "content")
+        add_prefix(media_instance_val, "media")        
+        
+        for k in request.POST.keys():
+            value = request.POST.get(k)
+            content_instance_val[k] = value
+            media_instance_val[k] = value
+        
+        content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
+        media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
+        
         media_valid = media_form.is_valid()
         content_valid = content_form.is_valid()
         
-        logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) +" content : for instance : " + repr(instance_content) + " : " + str(content_valid))
+        logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) +" content : for instance : " + repr(instance_content) + " : " + str(content_valid) )
         
         if media_valid and content_valid :