Project are copied in the group they are displayed in group page
authorverrierj
Mon, 28 Nov 2011 12:17:49 +0100
changeset 256 fd20ce3c5fbe
parent 255 c6e09aec199e
child 257 c00d78bca464
Project are copied in the group they are displayed in group page
src/ldt/ldt/ldt_utils/forms.py
src/ldt/ldt/ldt_utils/models.py
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html
src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html
src/ldt/ldt/ldt_utils/urls.py
src/ldt/ldt/ldt_utils/views.py
--- a/src/ldt/ldt/ldt_utils/forms.py	Fri Nov 25 16:42:30 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/forms.py	Mon Nov 28 12:17:49 2011 +0100
@@ -41,6 +41,7 @@
 
 class CopyProjectForm (forms.Form):
     title = forms.CharField()
+    group = forms.IntegerField()
     
 
 class ContentForm(forms.ModelForm):
--- a/src/ldt/ldt/ldt_utils/models.py	Fri Nov 25 16:42:30 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py	Mon Nov 28 12:17:49 2011 +0100
@@ -389,14 +389,13 @@
         project.save()
         return create_ldt(project, user)
 
-    def copy_project(self, user, title, description=''):
-#        owner = Owner.objects.get(user=user) #@UndefinedVariable
-        owner = user
-        project = Project(title=title, owner=owner, description=description)
+    def copy_project(self, user, title, description='', group=None):
+        project = Project(title=title, owner=user, description=description)
         project = copy_ldt(self, project, user)
-        project.save()
         assign('view_project', user, project)
         assign('change_project', user, project)
+        if group:
+            assign('view_project', group, project)
         for content in self.contents.all():
             project.contents.add(content)
         project.save()
@@ -406,19 +405,28 @@
         self.state = 2
         everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
         assign('ldt_utils.view_project', everyone, self)
-        self.save()
         
     def unpublish(self):
         self.state = 1
         everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
         remove_perm('ldt_utils.view_project', everyone, self)
-        self.save()
     
     def check_access(self, user):
         if (user and user.is_staff) or self.state == 2: 
             return True
         else:
-            return False
+            return False        
+        
+    def save(self):
+        super(Project, self).save() 
+        
+        if self.state == 2:
+            self.publish()
+        elif self.state == 1:
+            self.unpublish()
+            
+        super(Project, self).save()
+               
         
 
 class Segment(SafeModel):
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html	Fri Nov 25 16:42:30 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html	Mon Nov 28 12:17:49 2011 +0100
@@ -12,8 +12,9 @@
 	<div class="projectscontentstitle span-12 last">{% trans "Copy your project" %}</div>
 	
 	<form action="" method="POST" {% if target_parent %}target="_parent"{% endif %}>{% csrf_token %}
+		<input type="hidden" name="group" value="{{ group_id }}"/>
 	    <div class="span-12 last">
-		<label for="title">{%trans "Title" %}:</label>
+		<label for="title">{% trans "Title" %}:</label>
 		<input class="inputbox required" type="text" name="title" size="80"  value="" id="title" />
 		</div>
 		<div id="submitcontent-buttons" class="span-12 last">
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Fri Nov 25 16:42:30 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html	Mon Nov 28 12:17:49 2011 +0100
@@ -6,6 +6,7 @@
 <table class="projectscontentstable">
     <tbody class="projectscontentsbody">
 {% for project in projects %}
+
     <tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}" >
         {% url ldt.ldt_utils.views.project_json_id project.ldt_id as json_url_id %}
         {% if is_gecko %}
@@ -14,7 +15,7 @@
             <td class="cellimg"><div class="cellimgdiv"><a href="{% url index_project project.ldt_id %}" class="ldt_link_open_ldt"><img src="{{LDT_MEDIA_PREFIX}}img/page_edit.png"  alt="{% trans 'open ldt' %}" title="{% trans 'open ldt' %}"/></a></div></td>
         {% endif %}
         
-        <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/page_copy.png" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id %}" class="ldt_link_copy_project" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
+        <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/page_copy.png" href="{% url ldt.ldt_utils.views.copy_project project.ldt_id group_id %}" class="ldt_link_copy_project" alt="{% trans 'copy project' %}" title="{% trans 'copy project' %}"/></div></td>
         <td class="cellimg"><div class="cellimgdiv"><img src="{{LDT_MEDIA_PREFIX}}img/plugin.png" href="{{WEB_URL}}{{json_url_id}}" id="player_project_{{project.ldt_id}}" class="ldt_link_embed" alt="{% trans 'link json by id' %}" title="{% trans 'link json by id' %}"/></div></td>
         <td class="cellimg">
         {% ifequal project.state 2 %}
--- a/src/ldt/ldt/ldt_utils/urls.py	Fri Nov 25 16:42:30 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/urls.py	Mon Nov 28 12:17:49 2011 +0100
@@ -21,6 +21,7 @@
     url(r'^ldt/(?P<url>.*)$', 'views.ldt'),
     url(r'^search/loading/$', 'views.loading'),
     url(r'^create/(?P<iri_id>.*)$', 'views.create_project'),
+    url(r'^copy/(?P<ldt_id>.*)/(?P<group_id>.*)$', 'views.copy_project'),
     url(r'^copy/(?P<ldt_id>.*)$', 'views.copy_project'),
     url(r'^update/(?P<ldt_id>.*)$', 'views.update_project'),
     url(r'^cljson/id/(?P<id>.*)$', 'views.project_json_id'),
--- a/src/ldt/ldt/ldt_utils/views.py	Fri Nov 25 16:42:30 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py	Mon Nov 28 12:17:49 2011 +0100
@@ -137,8 +137,7 @@
 
 
 @login_required
-def projects_filter(request, filter, is_owner=False, status=0, id_group=None): 
-
+def projects_filter(request, filter, is_owner=False, status=0, id_group=None):
     is_owner = boolean_convert(is_owner)
     status = int(status)
     query = Q()
@@ -164,7 +163,7 @@
     
     if id_group > 0:
         grp = Group.objects.get(id=id_group)
-        project_list = get_objects_for_group(grp, 'ldt_utils.view_project')
+        project_list = get_objects_for_group(grp, 'ldt_utils.view_project').filter(query)
         show_username = True
     else :
         project_list = Project.safe_objects.filter(query) #@UndefinedVariable
@@ -177,7 +176,8 @@
         url_templ = "ldt/ldt_utils/partial/projectslist.html"
         
     return render_to_response(url_templ,
-                              {'projects': project_list, 'show_username':show_username, 'is_gecko': is_gecko},
+                              {'projects': project_list, 'show_username':show_username,
+                               'is_gecko': is_gecko, 'group_id':id_group},
                               context_instance=RequestContext(request))
 
 @login_required
@@ -766,6 +766,7 @@
 def publish(request, id, redirect=True):
     ldt = get_object_or_404(Project.safe_objects, ldt_id=id)
     ldt.publish()
+    ldt.save()
     redirect = boolean_convert(redirect)
     if redirect:
         return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
@@ -776,6 +777,7 @@
 def unpublish(request, id, redirect=True):
     ldt = get_object_or_404(Project.safe_objects, ldt_id=id)
     ldt.unpublish()
+    ldt.save()
     redirect = boolean_convert(redirect)
     if redirect:
         return HttpResponseRedirect(reverse("ldt.ldt_utils.views.list_ldt"))
@@ -916,14 +918,16 @@
                               'create_project_action':reverse("ldt.ldt_utils.views.update_project", args=[ldt_id])}, context_instance=RequestContext(request))
 
 @login_required
-def copy_project(request, ldt_id): 
+def copy_project(request, ldt_id, group_id=None): 
     
     project = get_object_or_404(Project.safe_objects, ldt_id=ldt_id)
     if request.method == "POST" :
         form = CopyProjectForm(request.POST)
         if form.is_valid():
             user = request.user
-            project = project.copy_project(title=request.POST['title'], user=user)
+            group_id = form.cleaned_data['group']
+            group = Group.objects.get(id=group_id) if group_id else None
+            project = project.copy_project(title=form.cleaned_data['title'], user=user, group=group)
             is_gecko = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
             if is_gecko:
                 return HttpResponseRedirect(reverse('index_project_full', args=[project.ldt_id]))
@@ -933,7 +937,7 @@
         form = CopyProjectForm
     # Modal window is not used with firefox, so we ask to submit the form in _parent in firefox case.
     target_parent = ((request.META['HTTP_USER_AGENT'].lower().find("firefox")) > -1);
-    return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project, 'target_parent':target_parent}, context_instance=RequestContext(request))
+    return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project, 'group_id':group_id, 'target_parent':target_parent}, context_instance=RequestContext(request))
 
 
 def write_content_base(request, iri_id=None): 
@@ -1170,7 +1174,7 @@
         iri_id = request.REQUEST.get("iri_id", None)
         
     if iri_id:
-        for content in Content.safe_objects.filter(iri_id=iri_id): #@UndefinedVariable
+        for content in Content.safe_objects.filter(iri_id=iri_id): 
             titles.append(unicode(content.title))
             projects = content.project_set.all()
             projects_nb = len(projects)
@@ -1188,7 +1192,7 @@
         iri_id = request.REQUEST.get("iri_id", None)
         
     if iri_id:
-        Content.safe_objects.get(iri_id=iri_id).delete() #@UndefinedVariable
+        Content.safe_objects.get(iri_id=iri_id).delete()
 
 
 def upload(request):
@@ -1256,7 +1260,7 @@
     # render list
     return render_to_response("ldt/ldt_utils/partial/projectslist.html",
                               {'projects': project_list, 'show_username':True,
-                               'is_gecko': is_gecko},
+                               'is_gecko': is_gecko, 'group_id': grp.id},
                               context_instance=RequestContext(request))
 
 @login_required