# HG changeset patch # User cavaliet # Date 1354278526 -3600 # Node ID ea298d03fe67c910337fe7341ff9f46d3cc7d2f8 # Parent de6f5b3ee200b79ba3e20f1bc14a65a1ac6d21e6 debug content view and enhance project api save. diff -r de6f5b3ee200 -r ea298d03fe67 src/ldt/ldt/api/ldt/resources/project.py --- a/src/ldt/ldt/api/ldt/resources/project.py Fri Nov 30 12:27:17 2012 +0100 +++ b/src/ldt/ldt/api/ldt/resources/project.py Fri Nov 30 13:28:46 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 de6f5b3ee200 -r ea298d03fe67 src/ldt/ldt/api/ldt/serializers/cinelabserializer.py --- a/src/ldt/ldt/api/ldt/serializers/cinelabserializer.py Fri Nov 30 12:27:17 2012 +0100 +++ b/src/ldt/ldt/api/ldt/serializers/cinelabserializer.py Fri Nov 30 13:28:46 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 de6f5b3ee200 -r ea298d03fe67 src/ldt/ldt/ldt_utils/views/content.py --- a/src/ldt/ldt/ldt_utils/views/content.py Fri Nov 30 12:27:17 2012 +0100 +++ b/src/ldt/ldt/ldt_utils/views/content.py Fri Nov 30 13:28:46 2012 +0100 @@ -35,8 +35,9 @@ #from django.core.files.temp import NamedTemporaryFile def media_management(request, media_input_type, cleaned_data, content_form, media_form, form_status): + media = None if media_input_type == "none": - media = None + media = None elif media_input_type == "link": media = content_form.cleaned_data["media_obj"] created = False