--- a/src/ldt/ldt/ldt_utils/models.py Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/models.py Thu Jan 05 16:00:58 2012 +0100
@@ -404,7 +404,7 @@
stream_mode = property(**stream_mode())
@staticmethod
- def create_project(user, title, contents, description='', groups=[]):
+ def create_project(user, title, contents, description='', groups=[], set_icon=True):
# owner = Owner.objects.get(user=user) #@UndefinedVariable
owner = user
project = Project(title=title, owner=owner, description=description)
@@ -418,8 +418,9 @@
for content in contents:
project.contents.add(content)
-
- project.set_icon()
+
+ if set_icon:
+ project.set_icon()
project.save()
return create_ldt(project, user)
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Thu Jan 05 16:00:58 2012 +0100
@@ -62,7 +62,7 @@
{% block body %}
<div id="add_contribution" class="span-18 last">
<div class="projectscontentstitle span-18 last">{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}</div>
- <form action="{{create_project_action}}" method="POST" {% if target_parent %}target="_parent"{% endif %}>
+ <form action="{{create_project_action}}" enctype="multipart/form-data" method="POST" {% if target_parent %}target="_parent"{% endif %}>
{% csrf_token %}
<input type="hidden" name="form_status" value="{{form_status}}" id="project_form_status" />
@@ -108,6 +108,7 @@
</div>
{% include "ldt/ldt_utils/partial/permissions.html" %}
+ {% include "ldt/ldt_utils/partial/picture.html" %}
<div id="submitcontent" class="span-18 last">
--- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html Thu Jan 05 16:00:58 2012 +0100
@@ -32,6 +32,10 @@
resize_modal_window(resize_elem);
});
+ if ('{{profile_picture_form.image.errors}}') {
+ $("#choosepicturecontainer").show();
+ }
+
});
</script>
--- a/src/ldt/ldt/ldt_utils/views/content.py Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/content.py Thu Jan 05 16:00:58 2012 +0100
@@ -68,12 +68,15 @@
content_form = ContentForm(content_instance_val, prefix="content", instance=instance_content)
media_form = MediaForm(media_instance_val, request.FILES, prefix="media", instance=instance_media)
+ picture_form = PictureForm(None, request.POST, request.FILES)
media_valid = media_form.is_valid()
content_valid = content_form.is_valid()
+ picture_valid = picture_form.is_valid()
+
logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) + " content : for instance : " + repr(instance_content) + " : " + str(content_valid)) #@UndefinedVariable
- if media_valid and content_valid:
+ if media_valid and content_valid and picture_valid:
# see if media must be created
cleaned_data = {}
@@ -222,13 +225,13 @@
setattr(content, attribute, content_defaults[attribute])
content.save()
- picture_form = PictureForm(content, request.POST, request.FILES)
- if picture_form.is_valid():
- picture_form.save()
+ picture_form.model = content
+ picture_form.save()
form_status = 'saved'
media_form = MediaForm(instance=media, prefix="media")
content_form = ContentForm(instance=content, prefix="content")
+ picture_form = PictureForm()
else:
form_status = 'error'
else:
@@ -238,12 +241,13 @@
initial['is_public'] = instance_content.is_public
content_form = ContentForm(prefix="content", instance=instance_content, initial=initial)
- media_form = MediaForm(prefix="media", instance=instance_media)
+ media_form = MediaForm(prefix="media", instance=instance_media)
+ picture_form = PictureForm()
if instance_content is not None:
content_form.media_input_type = "link"
- return content_form, media_form, form_status
+ return content_form, media_form, picture_form, form_status
@login_required
def write_content(request, iri_id=None):
@@ -264,8 +268,9 @@
form_status = "deleted"
content_form = ContentForm()
media_form = MediaForm()
+ picture_form = PictureForm()
else:
- content_form, media_form, form_status = write_content_base(request, iri_id)
+ content_form, media_form, picture_form, form_status = write_content_base(request, iri_id)
if iri_id:
member_list, admin_list = get_userlist_model(Content.objects.get(iri_id=iri_id), request.user)
@@ -282,7 +287,7 @@
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,
'elem_list': get_userlist(request.user), 'member_list': member_list, 'admin_list': admin_list, 'iri_id': iri_id, 'session_key':session_key,
- 'cookie_name':cookie_name, 'img_container': img_container}, context_instance=RequestContext(request))
+ 'cookie_name':cookie_name, 'img_container': img_container, 'profile_picture_form': picture_form}, context_instance=RequestContext(request))
@login_required
def prepare_delete_content(request, iri_id=None):
--- a/src/ldt/ldt/ldt_utils/views/lignesdetemps.py Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/lignesdetemps.py Thu Jan 05 16:00:58 2012 +0100
@@ -288,7 +288,8 @@
for c in ldtproject.contents.all():
if not c.iri_id in new_contents:
ldtproject.contents.remove(c)
- check_icon_project = True
+ if ldtproject.image == c.image:
+ check_icon_project = True
contents_id = [c.id for c in ldtproject.contents.all()]
for c in new_contents:
--- a/src/ldt/ldt/ldt_utils/views/project.py Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/ldt_utils/views/project.py Thu Jan 05 16:00:58 2012 +0100
@@ -14,6 +14,7 @@
from ldt.ldt_utils.utils import boolean_convert
from ldt.security.utils import (assign_perm_to_obj, add_change_attr, get_userlist,
get_userlist_model)
+from ldt.user.forms import PictureForm
import lxml.etree
@login_required
@@ -21,17 +22,21 @@
redirect_to = ''
if request.method == "POST" :
form = LdtAddForm(request.POST)
+ picture_form = PictureForm(None, request.POST, request.FILES)
form_status = "none"
contents = Content.safe_objects.all()
-
- if form.is_valid():
+
+ if form.is_valid() and picture_form.is_valid():
- user = request.user
-
+ user = request.user
project = Project.create_project(title=form.cleaned_data['title'], user=user,
contents=form.cleaned_data['contents'],
- description=form.cleaned_data['description'])
-
+ description=form.cleaned_data['description'],
+ set_icon=False)
+
+ picture_form.model = project
+ picture_form.save()
+
if form.cleaned_data["share"]:
assign_perm_to_obj(project, form.cleaned_data["read_list"], form.cleaned_data["write_list"], user)
form_status = "saved"
@@ -43,12 +48,13 @@
else:
form = LdtAddForm()
+ picture_form = PictureForm()
contents = Content.safe_objects.all()
form_status = "none"
return render_to_response('ldt/ldt_utils/create_ldt.html', {'contents': contents, 'form': form, 'form_status':form_status,
'redirect_to': redirect_to, 'create_project_action':reverse(create_ldt_view), 'language_code' : settings.LANGUAGE_CODE[2:],
- 'elem_list': get_userlist(request.user)}, context_instance=RequestContext(request))
+ 'elem_list': get_userlist(request.user), 'profile_picture_form': picture_form}, context_instance=RequestContext(request))
@@ -62,15 +68,18 @@
if request.method == "POST" :
form = AddProjectForm(request.POST)
+ picture_form = PictureForm(None, request.POST, request.FILES)
- if form.is_valid():
+ if form.is_valid() and picture_form.is_valid():
user = request.user
- project = Project.create_project(title=form.cleaned_data['title'], user=user, contents=contents, description=form.cleaned_data['description'])
-
-
-
- form_status = "saved"
-
+ project = Project.create_project(title=form.cleaned_data['title'],
+ user=user, contents=contents,
+ description=form.cleaned_data['description'],
+ set_icon=False)
+ picture_form.model = project
+ picture_form.save()
+
+ form_status = "saved"
if form.cleaned_data["share"]:
assign_perm_to_obj(project, form.cleaned_data["read_list"], form.cleaned_data["write_list"], user)
@@ -110,11 +119,13 @@
project.delete()
form_status = 'deleted'
form = AddProjectForm()
+ picture_form = PictureForm()
else:
form_status = 'none'
form = AddProjectForm(request.POST)
+ picture_form = PictureForm(None, request.POST, request.FILES)
- if form.is_valid():
+ if form.is_valid() and picture_form.is_valid():
if project.title != form.cleaned_data['title'] or project.description != form.cleaned_data['description']:
project.title = form.cleaned_data['title']
project.description = form.cleaned_data['description']
@@ -124,18 +135,22 @@
res[0].set("abstract", project.description)
project.ldt = lxml.etree.tostring(ldt, pretty_print=True)
project.save()
-
+
+ picture_form.model = project
+ picture_form.save()
if form.cleaned_data["share"]:
assign_perm_to_obj(project, form.cleaned_data["read_list"], form.cleaned_data["write_list"], request.user)
form_status = "saved"
else:
form = AddProjectForm({'title':unicode(project.title), 'description':unicode(project.get_description())})
+ picture_form = PictureForm()
form_status = 'none'
return render_to_response('ldt/ldt_utils/create_ldt.html', {'form':form, 'form_status':form_status, 'groups': groups, 'elem_list': get_userlist(request.user),
'ldt_id': ldt_id, 'contents':contents, 'member_list': member_list, 'admin_list': admin_list,
- 'create_project_action':reverse("ldt.ldt_utils.views.project.update_project", args=[ldt_id])}, context_instance=RequestContext(request))
+ 'create_project_action':reverse("ldt.ldt_utils.views.project.update_project", args=[ldt_id]),
+ 'profile_picture_form': picture_form}, context_instance=RequestContext(request))
@login_required
def copy_project(request, ldt_id, group_id=0):
--- a/src/ldt/ldt/user/forms.py Thu Jan 05 14:19:06 2012 +0100
+++ b/src/ldt/ldt/user/forms.py Thu Jan 05 16:00:58 2012 +0100
@@ -126,6 +126,14 @@
self.model = model
super(PictureForm, self).__init__(*args, **kwargs)
+ def clean_image(self):
+ image = self.cleaned_data['image']
+
+ if image and image.size > settings.PROFILE_IMG_MAX_SIZE:
+ raise forms.ValidationError(_("Image size is limited to %s" % settings.PROFILE_IMG_MAX_SIZE))
+
+ return image
+
def save(self):
if not self.cleaned_data['image']:
@@ -138,7 +146,7 @@
elif class_name == 'Group':
instance_name = self.model.name
img_container = self.model.profile
- elif class_name == 'Content':
+ elif class_name == 'Content' or class_name == 'Project':
instance_name = self.model.title
img_container = self.model
--- a/web/ldtplatform/config.py.tmpl Thu Jan 05 14:19:06 2012 +0100
+++ b/web/ldtplatform/config.py.tmpl Thu Jan 05 16:00:58 2012 +0100
@@ -97,4 +97,5 @@
DEFAULT_CONTENT_ICON = "thumbnails/contents/content_default_icon.png"
DEFAULT_PROJECT_ICON = "thumbnails/projects/project_default_icon.png"
DEFAULT_USER_ICON = "thumbnails/users/user_default_icon.png"
-DEFAULT_GROUP_ICON = "thumbnails/groups/group_default_icon.png"
\ No newline at end of file
+DEFAULT_GROUP_ICON = "thumbnails/groups/group_default_icon.png"
+PROFILE_IMG_MAX_SIZE = 1000000
\ No newline at end of file