--- a/src/ldt/ldt/ldt_utils/views.py Wed Dec 07 14:53:01 2011 +0100
+++ b/src/ldt/ldt/ldt_utils/views.py Thu Dec 08 11:49:18 2011 +0100
@@ -166,14 +166,14 @@
grp = Group.objects.get(id=id_group)
project_list = get_objects_for_group(grp, 'ldt_utils.view_project').filter(query)
show_username = True
- else :
+ else:
project_list = Project.safe_objects.filter(query) #@UndefinedVariable
project_list = add_change_attr(request.user, project_list)
# Template depends on the projects's status
- if status == 2 :
+ if status == 2:
url_templ = "ldt/ldt_utils/partial/publishedprojectslist.html"
- else :
+ else:
url_templ = "ldt/ldt_utils/partial/projectslist.html"
return render_to_response(url_templ,
@@ -181,23 +181,24 @@
'is_gecko': is_gecko, 'group_id':id_group},
context_instance=RequestContext(request))
-def share_filter(request, filter):
-
+def share_filter(request, filter, use_groups=False):
+ use_groups = boolean_convert(use_groups)
if not filter or len(filter) == 0:
raise AttributeError("filter should be a string")
- filter = filter[1:]
-
+ filter = filter[1:]
users = User.objects.filter(username__icontains=filter)[0:20]
- groups = Group.objects.filter(name__icontains=filter).exclude(name=settings.PUBLIC_GROUP_NAME)[0:20]
resp = []
for u in users:
resp.append({'name':u.username, 'id':u.id, 'type': 'user'})
+
+ if use_groups:
+ groups = Group.objects.filter(name__icontains=filter).exclude(name=settings.PUBLIC_GROUP_NAME)[0:20]
+
+ for g in groups:
+ resp.append({'name': g.name, 'id': g.id, 'type': 'group'})
- for g in groups:
- resp.append({'name': g.name, 'id': g.id, 'type': 'group'})
-
resp = sorted(resp, key=lambda elem: elem['name'].lower())
return render_to_response("ldt/ldt_utils/partial/sharewith.html", {'elem_list' : resp}, context_instance=RequestContext(request))
@@ -970,13 +971,16 @@
del(dict[key])
add_prefix(content_instance_val, "content")
- add_prefix(media_instance_val, "media")
+ add_prefix(media_instance_val, "media")
for k in request.POST.keys():
value = request.POST.get(k)
content_instance_val[k] = value
media_instance_val[k] = value
-
+
+ content_instance_val['read_list'] = request.POST.getlist('read_list')
+ content_instance_val['write_list'] = request.POST.getlist('write_list')
+
content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
@@ -1078,6 +1082,7 @@
if source_file:
source_file.close()
+
if form_status != "error":
#try:
del cleaned_data["media_file"]
@@ -1099,27 +1104,30 @@
mimetype = cleaned_data.get('mimetype_field', None)
if not mimetype:
mimetype = mimetypes.guess_type(media.src)
- media.mimetype_field = mimetype
- media.save()
+ media.mimetype_field = mimetype
assign('view_media', request.user, media)
- assign('change_media', request.user, media)
+ assign('change_media', request.user, media)
+ media.save()
- if form_status != "error":
+ if form_status != "error":
content_defaults = {}
content_defaults.update(content_form.cleaned_data)
content_defaults['media_obj'] = media
- del content_defaults["media_input_type"]
- del content_defaults['groups']
+
+ for key in ["media_input_type", "groups", "is_public", "read_list", "write_list" ]:
+ del content_defaults[key]
+
content, created = Content.safe_objects.get_or_create(iri_id=content_form.cleaned_data['iri_id'], defaults=content_defaults) #@UndefinedVariable
assign('change_content', request.user, content)
assign('view_content', request.user, content)
everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
+
if content_form.cleaned_data['is_public']:
assign('view_content', everyone, content)
else:
remove_perm('view_content', everyone, content)
- assign_perm_to_obj(content, content_form.cleaned_data["read_list"], content_form.cleaned_data["write_list"], request.user)
+ assign_perm_to_obj(content, content_form.cleaned_data['read_list'], content_form.cleaned_data['write_list'], request.user)
if not created:
for attribute in ('iriurl', 'title', 'description', 'duration', 'content_creation_date', 'tags', 'media_obj'):
setattr(content, attribute, content_defaults[attribute])
@@ -1147,7 +1155,7 @@
def write_content(request, iri_id=None):
submit_action = request.REQUEST.get("submit_button", False)
groups = request.user.groups.exclude(name=settings.PUBLIC_GROUP_NAME)
-
+ elem_list = [{'name': u.username, 'id': u.id, 'type': 'user'} for u in User.objects.all()[0:20]]
if submit_action == "prepare_delete":
errors, titles = prepare_delete_content(request, iri_id)
@@ -1177,7 +1185,7 @@
content_form.fields["media_obj"].queryset = Media.safe_objects.all()
return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form, 'form_status': form_status, 'create_content_action': create_content_action,
- 'iri_id': iri_id, 'session_key':session_key, 'cookie_name':cookie_name}, context_instance=RequestContext(request))
+ 'elem_list': elem_list, 'iri_id': iri_id, 'session_key':session_key, 'cookie_name':cookie_name}, context_instance=RequestContext(request))
@login_required
def prepare_delete_content(request, iri_id=None):
@@ -1289,23 +1297,24 @@
if form.is_valid():
name = form.cleaned_data['name']
- members_list = form.cleaned_data['members_list']
- admin_list = form.cleaned_data['admin_list']
+ members_list = form.cleaned_data['read_list']
+ admin_list = form.cleaned_data['write_list']
group = Group.objects.create(name=name)
group.save()
assign('change_group', request.user, group)
- for user in members_list:
- user.groups.add(group)
- if user in admin_list:
- assign('change_group', user, group)
+ for elem in members_list:
+ if hasattr(elem, 'username'):
+ elem.groups.add(group)
+ if elem in admin_list:
+ assign('change_group', elem, group)
+
request.user.groups.add(group)
form_status = 'saved'
else:
- form = GroupAddForm()
- form.fields['members_list'].queryset = user_list
+ form = GroupAddForm()
return render_to_response("ldt/ldt_utils/create_group.html", {'form' : form, 'form_status' : form_status, 'elem_list' : user_list}, context_instance=RequestContext(request))
@@ -1315,19 +1324,16 @@
return HttpResponseServerError('<h1>User can not update a group.</h1>')
group = get_object_or_404(Group, id=group_id)
- member_list = group.user_set.exclude(id=request.user.id)
- query = Q(id=settings.ANONYMOUS_USER_ID) | Q(id=request.user.id) | Q(is_superuser=True)
- user_list = User.objects.exclude(query)[0:20]
- admin_list = []
- form_status = ''
-
+
if not request.user.has_perm('change_group', group):
form_status = 'saved'
return render_to_response("ldt/ldt_utils/create_group.html", {'form_status' : form_status}, context_instance=RequestContext(request))
- for u in member_list:
- if u.has_perm('change_group', group):
- u.change = True
+ member_list = group.user_set.exclude(id=request.user.id)
+ query = Q(id=settings.ANONYMOUS_USER_ID) | Q(id=request.user.id) | Q(is_superuser=True)
+ user_list = User.objects.exclude(query)[0:20]
+ user_list = [{'name': x.username, 'id': x.id, 'type': 'user'} for x in user_list]
+ form_status = ''
if request.method == "POST":
form = GroupAddForm(request.POST, instance=group)
@@ -1340,17 +1346,19 @@
else:
if form.is_valid():
name = form.cleaned_data['name']
- new_member_list = form.cleaned_data['members_list']
- admin_list = form.cleaned_data['admin_list']
+ new_member_list = form.cleaned_data['read_list']
+ admin_list = form.cleaned_data['write_list']
group.name = name
-
- for user in new_member_list:
+
+ for user in new_member_list:
+ if not hasattr(user, 'username'):
+ raise AttributeError('new_member_list should only contain users')
group.user_set.add(user)
if user in admin_list:
assign('change_group', user, group)
else:
remove_perm('change_group', user, group)
-
+
for user in member_list:
if user not in new_member_list:
group.user_set.remove(user)
@@ -1360,11 +1368,12 @@
form_status = 'saved'
else:
- form = GroupAddForm(initial={'name':unicode(group.name), 'members_list':member_list})
-
+ form = GroupAddForm(initial={'name':unicode(group.name)})
+
+ member_list = [{'name': x.username, 'id': x.id, 'type': 'user'} for x in member_list]
return render_to_response("ldt/ldt_utils/create_group.html", {'group_id' : group_id, 'form' : form, 'form_status' : form_status,
- 'user_list' : user_list, 'member_list': member_list,
- 'admin_list' : admin_list}, context_instance=RequestContext(request))
+ 'elem_list' : user_list, 'member_list': member_list,
+ }, context_instance=RequestContext(request))
@login_required
def leave_group(request, group_id, redirect=True):