# HG changeset patch # User verrierj # Date 1322479069 -3600 # Node ID fd20ce3c5fbe3ab91d91fce9cb0fac8da517d58f # Parent c6e09aec199ec2a34cd0f43456b1c03ee77a42de Project are copied in the group they are displayed in group page diff -r c6e09aec199e -r fd20ce3c5fbe src/ldt/ldt/ldt_utils/forms.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): diff -r c6e09aec199e -r fd20ce3c5fbe src/ldt/ldt/ldt_utils/models.py --- 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): diff -r c6e09aec199e -r fd20ce3c5fbe src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/copy_ldt.html --- 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 @@
{% trans "Copy your project" %}
{% csrf_token %} +
- +
diff -r c6e09aec199e -r fd20ce3c5fbe src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/projectslist.html --- 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 @@ {% for project in projects %} + {% url ldt.ldt_utils.views.project_json_id project.ldt_id as json_url_id %} {% if is_gecko %} @@ -14,7 +15,7 @@ {% endif %} - +
{% trans 'open ldt' %}
{% trans 'copy project' %}
{% trans 'copy project' %}
{% trans 'link json by id' %}
{% ifequal project.state 2 %} diff -r c6e09aec199e -r fd20ce3c5fbe src/ldt/ldt/ldt_utils/urls.py --- 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.*)$', 'views.ldt'), url(r'^search/loading/$', 'views.loading'), url(r'^create/(?P.*)$', 'views.create_project'), + url(r'^copy/(?P.*)/(?P.*)$', 'views.copy_project'), url(r'^copy/(?P.*)$', 'views.copy_project'), url(r'^update/(?P.*)$', 'views.update_project'), url(r'^cljson/id/(?P.*)$', 'views.project_json_id'), diff -r c6e09aec199e -r fd20ce3c5fbe src/ldt/ldt/ldt_utils/views.py --- 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