--- 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