# HG changeset patch # User ymh # Date 1287359052 -7200 # Node ID 66f6aff5c3826f6f94d20cb8305ed8de05af3846 # Parent 0325a0a8b9971f94c0db8e900bd0c62bb08cd75e corrections on project serialize and update project diff -r 0325a0a8b997 -r 66f6aff5c382 web/ldt/ldt_utils/projectserializer.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") diff -r 0325a0a8b997 -r 66f6aff5c382 web/ldt/ldt_utils/views.py --- 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 :