# HG changeset patch # User grandjoncl # Date 1354530455 -3600 # Node ID d9ec04dce82a766d9a66dd8ad21a875686bc39dd # Parent a7b268e93413328fe6a3bf0ef0047cf6fa5da557# Parent 0b8497f071d10d521b4a136368f2c65fab05aed5 Merge with 0b8497f071d10d521b4a136368f2c65fab05aed5 diff -r 0b8497f071d1 -r d9ec04dce82a .hgtags --- a/.hgtags Fri Nov 30 11:51:56 2012 +0100 +++ b/.hgtags Mon Dec 03 11:27:35 2012 +0100 @@ -131,3 +131,6 @@ caa3a2695cb7710bbab7970ebd0e0b28eea140a9 V01.33 41eb88128c8fad65408b2db4965ffda6c75d21bc V01.33 659ca382a67d90fd7fdda8c4f422091434c97d86 V01.34 +a05ad02125c58e419fcbd52475c9f39be35f576e V01.35 +a774af5e10f40b65dd1ec748ad36e9ed4e9a294e V01.36 +89e3320ac56c863333e3e5317d1c7fced478cc05 V01.36 diff -r 0b8497f071d1 -r d9ec04dce82a .settings/org.eclipse.core.resources.prefs --- a/.settings/org.eclipse.core.resources.prefs Fri Nov 30 11:51:56 2012 +0100 +++ b/.settings/org.eclipse.core.resources.prefs Mon Dec 03 11:27:35 2012 +0100 @@ -1,45 +1,42 @@ -eclipse.preferences.version=1 -encoding//src/ldt/ldt/core/migrations/0001_initial.py=utf-8 -encoding//src/ldt/ldt/core/migrations/0002_auto__del_owner.py=utf-8 -encoding//src/ldt/ldt/indexation/backends/elasticsearch_backend.py=utf-8 -encoding//src/ldt/ldt/indexation/highlighter.py=utf-8 -encoding//src/ldt/ldt/indexation/models.py=utf-8 -encoding//src/ldt/ldt/indexation/query_parser.py=utf-8 -encoding//src/ldt/ldt/indexation/search_indexes.py=utf-8 -encoding//src/ldt/ldt/indexation/tests.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0001_initial.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0002_auto__add_field_media_mimetype_field__chg_field_media_external_src_url.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0003_auto__chg_field_project_owner.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0004_auto__add_field_project_description.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0005_add_permissions.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0006_auto__add_field_media_image.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0007_auto__add_field_content_image__del_field_media_image.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0008_auto__add_field_project_image.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0009_auto__chg_field_content_image__chg_field_project_image.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0010_auto__add_annotationstat.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0011_gen_stat_annotation.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0012_auto__add_field_content_last_annotated.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0013_auto__add_field_content_front_project__chg_field_content_last_annotate.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0014_auto__del_annotationstat__chg_field_content_last_annotated.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0015_auto__add_contentstat__del_field_content_last_annotated__del_field_con.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0016_one_to_one_stat_annotation.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0017_correct_image_path.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0018_auto__chg_field_content_iri_id__chg_field_project_ldt_id__chg_field_au.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0019_recalculate_media_hash_src.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0020_auto__add_field_segment_id_hash__chg_field_segment_iri_id__chg_field_s.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0021_recalculate_segment_id_hash_script.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0022_auto__add_unique_media_src_hash__chg_field_segment_cutting_id__chg_fie.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0023_auto__add_field_segment_audio_src__add_field_segment_audio_href.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0024_auto__chg_field_tag_name.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py=utf-8 -encoding//src/ldt/ldt/ldt_utils/views/json.py=utf-8 -encoding//src/ldt/ldt/management/utils.py=utf-8 -encoding//src/ldt/ldt/test/test_runner.py=utf-8 -encoding//src/ldt/ldt/text/migrations/0001_initial.py=utf-8 -encoding//src/ldt/ldt/user/migrations/0001_initial.py=utf-8 -encoding//src/ldt/ldt/user/migrations/0008_auto__chg_field_groupprofile_image__chg_field_groupprofile_group__chg_.py=utf-8 -encoding//virtualenv/web/env/guardianenv/Lib/site-packages/guardian/migrations/0001_initial.py=utf-8 -encoding//virtualenv/web/env/venv_platform/lib/python2.7/site-packages/haystack/backends/__init__.py=utf-8 -encoding//web/ldtplatform/config.py=utf-8 -encoding//web/ldtplatform/settings.py=utf-8 -encoding/=UTF-8 \ No newline at end of file +eclipse.preferences.version=1 +encoding//src/ldt/ldt/core/migrations/0001_initial.py=utf-8 +encoding//src/ldt/ldt/core/migrations/0002_auto__del_owner.py=utf-8 +encoding//src/ldt/ldt/indexation/backends/elasticsearch_backend.py=utf-8 +encoding//src/ldt/ldt/indexation/highlighter.py=utf-8 +encoding//src/ldt/ldt/indexation/models.py=utf-8 +encoding//src/ldt/ldt/indexation/query_parser.py=utf-8 +encoding//src/ldt/ldt/indexation/search_indexes.py=utf-8 +encoding//src/ldt/ldt/indexation/tests.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0001_initial.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0002_auto__add_field_media_mimetype_field__chg_field_media_external_src_url.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0003_auto__chg_field_project_owner.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0004_auto__add_field_project_description.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0005_add_permissions.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0006_auto__add_field_media_image.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0007_auto__add_field_content_image__del_field_media_image.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0008_auto__add_field_project_image.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0009_auto__chg_field_content_image__chg_field_project_image.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0010_auto__add_annotationstat.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0011_gen_stat_annotation.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0012_auto__add_field_content_last_annotated.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0013_auto__add_field_content_front_project__chg_field_content_last_annotate.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0014_auto__del_annotationstat__chg_field_content_last_annotated.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0015_auto__add_contentstat__del_field_content_last_annotated__del_field_con.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0016_one_to_one_stat_annotation.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0017_correct_image_path.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0018_auto__chg_field_content_iri_id__chg_field_project_ldt_id__chg_field_au.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0019_recalculate_media_hash_src.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0020_auto__add_field_segment_id_hash__chg_field_segment_iri_id__chg_field_s.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0021_recalculate_segment_id_hash_script.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0022_auto__add_unique_media_src_hash__chg_field_segment_cutting_id__chg_fie.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0023_auto__add_field_segment_audio_src__add_field_segment_audio_href.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0024_auto__chg_field_tag_name.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py=utf-8 +encoding//src/ldt/ldt/ldt_utils/views/json.py=utf-8 +encoding//src/ldt/ldt/management/utils.py=utf-8 +encoding//src/ldt/ldt/test/test_runner.py=utf-8 +encoding//src/ldt/ldt/text/migrations/0001_initial.py=utf-8 +encoding//src/ldt/ldt/user/migrations/0001_initial.py=utf-8 +encoding//src/ldt/ldt/user/migrations/0008_auto__chg_field_groupprofile_image__chg_field_groupprofile_group__chg_.py=utf-8 +encoding//virtualenv/web/env/guardianenv/Lib/site-packages/guardian/migrations/0001_initial.py=utf-8 +encoding/=UTF-8 diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/__init__.py --- a/src/ldt/ldt/__init__.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/__init__.py Mon Dec 03 11:27:35 2012 +0100 @@ -1,4 +1,4 @@ -VERSION = (1, 34, 0, "final", 0) +VERSION = (1, 37, 0, "final", 0) def get_version(): diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/api/ldt/resources/project.py --- a/src/ldt/ldt/api/ldt/resources/project.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/api/ldt/resources/project.py Mon Dec 03 11:27:35 2012 +0100 @@ -1,13 +1,17 @@ +from django.conf import settings from django.conf.urls.defaults import url +from django.contrib.auth.models import Group +from guardian.shortcuts import assign from ldt.ldt_utils.models import Project from ldt.api.ldt.authentication import SessionAuthentication from ldt.api.ldt.serializers.cinelabserializer import CinelabSerializer from ldt.api.ldt.resources import ContentResource from ldt.api.ldt.resources.user import UserResource +from ldt.security import protect_models, unprotect_models from tastypie.authorization import Authorization from tastypie.resources import Bundle, ModelResource, ALL from tastypie import fields -from ldt.security import protect_models, unprotect_models + class ProjectResource(ModelResource): contents = fields.ManyToManyField(ContentResource, 'contents') @@ -46,10 +50,16 @@ else: kwargs['ldt_id'] = bundle_or_obj.ldt_id return self._build_reverse_url("api_dispatch_detail", kwargs=kwargs) - - # TEMPORARY (used before authentication/authorization, because saving a project modifies a Content (via ContentStat)) - def save_m2m(self, bundle): + + def obj_create(self, bundle, request=None, **kwargs): unprotect_models() - super(ProjectResource, self).save_m2m(bundle) + bundle = super(ProjectResource, self).obj_create(bundle, request) + # Assign permission for the owner + assign('view_project', request.user, bundle.obj) + assign('change_project', request.user, bundle.obj) + # Since the project is published by default, we assign permission for the everyone group + everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME) + assign('ldt_utils.view_project', everyone, bundle.obj) protect_models() + return bundle \ No newline at end of file diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/api/ldt/serializers/cinelabserializer.py --- a/src/ldt/ldt/api/ldt/serializers/cinelabserializer.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/api/ldt/serializers/cinelabserializer.py Mon Dec 03 11:27:35 2012 +0100 @@ -60,7 +60,6 @@ "contents*": ["IRI_ID_1","IRI_ID_2"] "owner*": "user_id" """ - logging.debug("FROM cinelab content = " + content) cinelab = simplejson.loads(content) meta = cinelab["meta"] diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/auth/views.py --- a/src/ldt/ldt/auth/views.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/auth/views.py Mon Dec 03 11:27:35 2012 +0100 @@ -8,7 +8,6 @@ redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=AuthenticationForm, current_app=None): - social_img=[{"facebook" : "ldt/img/logo_facebook.png",}, {"twitter" : "ldt/img/logo_twitter.png",}, {"google" : "ldt/img/logo_google.png",}, {"yahoo" : "ldt/img/logo_yahoo.png"},] - extra_context = {'social_list': social_list, 'social_img' : social_img} + extra_context = {'social_list': social_list} return django_login(request, template_name, redirect_field_name, authentication_form, current_app, extra_context) diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py --- a/src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/migrations/0025_chg_site_domain.py Mon Dec 03 11:27:35 2012 +0100 @@ -11,8 +11,11 @@ Sites = orm['sites.Site'] site = Sites.objects.get(id=settings.SITE_ID) web_url = settings.WEB_URL - domain_area = web_url.split("//",1) - domain = domain_area[1] + if (web_url.startswith("http://")): + domain_area = web_url.split("//",1) + domain = domain_area[1] + else : + domain=web_url if site.domain!=domain: site.domain = domain site.save() diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_content.html diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/tests/content_tests.py --- a/src/ldt/ldt/ldt_utils/tests/content_tests.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/tests/content_tests.py Mon Dec 03 11:27:35 2012 +0100 @@ -16,6 +16,8 @@ import unittest import uuid import logging +import os +import exceptions class ContentTest(TestCase): @@ -29,7 +31,7 @@ self.user = User() self.user.username = 'blop' - + #test the creation of a content without media def test_create_content_v1(self): self.cont12 = Content(iriurl="id12/iriurl12", duration = 100) @@ -46,8 +48,54 @@ self.cont13.iri_id = "id113" self.cont13.save() - self.assertEqual(Content.objects.get(iri_id=self.cont13.iri_id), self.cont13) - + self.assertEqual(Content.objects.get(iri_id=self.cont13.iri_id), self.cont13) + + #test the creation of content without reading permission + def test_create_content_v3(self): + import sys + ldt_dir = os.path.join(settings.MEDIA_ROOT, "ldt") + if sys.platform == 'win32': + logging.debug("windows 3") + else: + logging.debug("linux") + os.chmod(ldt_dir, 0577) + + self.cont17 = Content(iriurl="id17/iriurl17", duration = 100) + self.cont17.iri_id = 'id117' + with self.assertRaises(WindowsError): + self.cont17.save() + with self.assertRaises(Content.DoesNotExist): + Content.objects.get(iri_id=self.cont17.iri_id) + + if sys.platform == 'win32': + logging.debug("windows 4") + else: + logging.debug("linux") + os.chmod(ldt_dir, 0700) + + #test the creation of content without reading permission + def test_create_content_v4(self): + import sys + ldt_dir = os.path.join(settings.MEDIA_ROOT, "ldt") + if sys.platform == 'win32': + logging.debug("windows 3") + else: + logging.debug("linux") + os.chmod(ldt_dir, 0377) + + self.cont18 = Content(iriurl="id18/iriurl18", duration = 100) + self.cont18.iri_id = 'id118' + with self.assertRaises(WindowsError): + self.cont18.save() + with self.assertRaises(Content.DoesNotExist): + Content.objects.get(iri_id=self.cont18.iri_id) + + if sys.platform == 'win32': + logging.debug("windows 4") + else: + logging.debug("linux") + os.chmod(ldt_dir, 0700) + #test the deletion of a content without media def test_del_content_v1(self): self.cont14 = Content(iriurl="id14/iriurl14", duration = 100) diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/tests/ldt_tests.py --- a/src/ldt/ldt/ldt_utils/tests/ldt_tests.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/tests/ldt_tests.py Mon Dec 03 11:27:35 2012 +0100 @@ -68,7 +68,6 @@ self.assertEqual(ldoc.xpath("/iri/medias/media")[1].get("id"), self.cont2.iri_id) f.close() - """ def test_generate_init(self): self.cont3 = Content(iriurl="id3/iriurl3", duration=111) self.cont3.iri_id = "id3" @@ -82,7 +81,6 @@ ldoc = self.LU.generate_init([], 'ldt.ldt_utils.views.search_ldt') self.assertEqual(ldoc.xpath("/iri/files/init")[0].tag, "init") self.assertEqual(ldoc.xpath("/iri/files/library")[0].tag, "library") - """ def test_create_ldt(self): self.cont5 = Content(iriurl="id5/iriurl5", duration=111) diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/tests/project_tests.py --- a/src/ldt/ldt/ldt_utils/tests/project_tests.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/tests/project_tests.py Mon Dec 03 11:27:35 2012 +0100 @@ -52,4 +52,26 @@ with self.assertRaises(Project.DoesNotExist): Project.objects.get(ldt_id=self.project3.ldt_id) - \ No newline at end of file + + #test deletion of project with annotations + def test_del_project_v2(self): + + self.project4 = Project(title="titleproj3", owner=self.user) + self.project4.ldt = ' CA: prof et admin <abstract/> <audio source=""/> <tags/> </element> <element id="s_0050F043-3AD2-0A7C-6699-D2A03A1EBA02" begin="5052858" dur="124407" author="" date="2010/09/02" color="10053375" src=""> <title>conseil de classe Reprise de la figure precedente TC: prof et admin Conseil de classe conseil de classe Reprise de la figure precedente Bout a bout 1 ' + self.project4.id = "444" + self.project4.ldt_id = str(uuid.uuid1()) + self.project4.description = "proj4description" + self.project4.save() + + create_ldt(self.project4, self.user) + + self.LA = LdtAnnotation(self.project4) + + self.LA.add("id11", "cutting_id", "cutting_title", "title", "text", ["tag1", "tag2"], "800", + "10000", "jdoe", "2011-09-10T09:12:58") + self.LA.save() + + self.project4.delete() + + with self.assertRaises(Project.DoesNotExist): + Project.objects.get(ldt_id=self.project4.ldt_id) \ No newline at end of file diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/views/content.py --- a/src/ldt/ldt/ldt_utils/views/content.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/views/content.py Mon Dec 03 11:27:35 2012 +0100 @@ -36,7 +36,7 @@ def media_management(request, media_input_type, cleaned_data, content_form, media_form, form_status): if media_input_type == "none": - media = None + media = None elif media_input_type == "link": media = content_form.cleaned_data["media_obj"] created = False @@ -46,9 +46,8 @@ cleaned_data['videopath'] = settings.STREAM_URL # if the source is already http:// or rtmp:// we don't have to add STREAM_URL if cleaned_data['src'].startswith("rtmp://") or cleaned_data['src'].startswith("http://") or cleaned_data['src'].startswith("https://"): - cleaned_data['videopath'] = '' - - media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable + cleaned_data['videopath'] = '' + media, created = Media.objects.get_or_create(src=cleaned_data['src'], defaults=cleaned_data) #@UndefinedVariable elif media_input_type == "url" or media_input_type == "upload" : # copy file @@ -165,7 +164,6 @@ if instance_content: current_front_project = instance_content.front_project form_status = 'none' - errors_transaction = [] if request.method == "POST": try: @@ -229,14 +227,8 @@ media_input_type = content_form.cleaned_data["media_input_type"] - - - media, form_status = media_management(request, media_input_type, cleaned_data, content_form, media_form, form_status) - - - if form_status != "error": content_defaults = {} content_defaults.update(content_form.cleaned_data) @@ -287,7 +279,7 @@ except Exception, e: transaction.rollback() __, value, traceback = sys.exc_info() - return False, False, False, False, False, errors_transaction, e, traceback + return False, False, False, False, False, e, traceback else: form_status = 'empty' @@ -315,18 +307,17 @@ transaction.commit() except Exception, e: transaction.rollback() - errors_transaction.append(e) - type, value, traceback = sys.exc_info() - return False, False, False, False, False, errors_transaction, e, traceback + __, __, traceback = sys.exc_info() + return False, False, False, False, False, e, traceback - return content_form, media_form, picture_form, form_status, current_front_project, errors_transaction, "", "" + return content_form, media_form, picture_form, form_status, current_front_project, "", "" @login_required def write_content(request, iri_id=None): submit_action = request.REQUEST.get("submit_button", False) member_list = admin_list = [] current_front_project = None - deleted = None + content_deleted = None if submit_action == "prepare_delete": errors, titles, message_temp = prepare_delete_content(request, iri_id) @@ -341,7 +332,7 @@ title_msg = _("confirm delete content") return render_to_response('ldt/ldt_utils/error_confirm.html', {'errors':errors, 'message':message, 'title': title_msg}, context_instance=RequestContext(request)) elif submit_action == "delete": - deleted, errors_transaction = delete_content(request, iri_id) + content_deleted, e, traceback = delete_content(request, iri_id) content_form = ContentForm() form_status = "deleted" elif submit_action == "prepare_reset": @@ -370,8 +361,8 @@ elif submit_action=="close": return redirect("root-view") else: - content_form, media_form, picture_form, form_status, current_front_project, errors_transaction, e, traceback = write_content_base(request, iri_id) - if iri_id: + content_form, media_form, picture_form, form_status, current_front_project, e, traceback = write_content_base(request, iri_id) + if iri_id: content_temp = Content.objects.get(iri_id=iri_id) media_temp = content_temp.media_obj if media_temp: @@ -379,11 +370,12 @@ else: member_list, admin_list = get_userlist_model(content_temp, request.user) - # Deleted is False if an error occurred during deletion - if (deleted == False) or (content_form == False and media_form == False and picture_form == False and form_status == False and current_front_project == False): - message=_("An error occurred - Please try again or contact webmaster") - title = _("Error") - logging.error(e) + if (content_form == False and media_form == False and picture_form == False and form_status == False and current_front_project == False): + message=_("An error occurred - Please try again or contact webmaster") + title = _("Error") + raise e, None, traceback + + if content_deleted == False: raise e, None, traceback if iri_id: @@ -454,20 +446,18 @@ except Exception, e: content.rollback() transaction.rollback() - errors_transaction.append(_("Content deletion failure")) - errors_transaction.append(e) - return False, errors_transaction + __, __, traceback = sys.exc_info() + return False, e, traceback else: try: transaction.commit() content.commit() - return True, errors_transaction - except: + return True, "", "" + except Exception, e: content.rollback() transaction.rollback() - errors_transaction.append(_("Commit of the content deletion failed")) - errors_transaction.append(e) - return False, errors_transaction + __, __, traceback = sys.exc_info() + return False, e, traceback def upload(request): if request.method == 'POST': diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/ldt_utils/views/lignesdetemps.py diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/management/commands/initsitedomain.py --- a/src/ldt/ldt/management/commands/initsitedomain.py Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/management/commands/initsitedomain.py Mon Dec 03 11:27:35 2012 +0100 @@ -11,8 +11,11 @@ def handle(self, *args, **options): site = Site.objects.get(id=settings.SITE_ID) web_url = settings.WEB_URL - domain_area = web_url.split("//",1) - domain = domain_area[1] + if (web_url.startswith("http://")): + domain_area = web_url.split("//",1) + domain = domain_area[1] + else: + domain=web_url if site.domain!=domain: site.domain = domain site.save() diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/static/ldt/js/projectscontents.js diff -r 0b8497f071d1 -r d9ec04dce82a src/ldt/ldt/static/ldt/metadataplayer/KnowledgeConcierge.js --- a/src/ldt/ldt/static/ldt/metadataplayer/KnowledgeConcierge.js Fri Nov 30 11:51:56 2012 +0100 +++ b/src/ldt/ldt/static/ldt/metadataplayer/KnowledgeConcierge.js Mon Dec 03 11:27:35 2012 +0100 @@ -324,7 +324,7 @@ var keywmatch = document.location.hash.match(/keyword=([^#?&]+)/); if (keywmatch) { this.player.on("widgets-loaded", function() { - triggerSearch(keywmatch[1]); + triggerSearch(decodeURIComponent(keywmatch[1])); }) }