# HG changeset patch # User verrierj # Date 1325775658 -3600 # Node ID 4ddf8c0eeab4a18d25f1027533a3fcf8560ec36e # Parent 9978257745a5accfb889aa30daef9737c3fe44cc Image size is checked before save + project image can be set manually diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/ldt_utils/models.py --- 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) diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html --- 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 %}
{% if ldt_id %}{% trans "Update your project" %}{% else %}{% trans "Create your project" %}{% endif %}
-
+ {% csrf_token %} @@ -108,6 +108,7 @@
{% include "ldt/ldt_utils/partial/permissions.html" %} + {% include "ldt/ldt_utils/partial/picture.html" %}
diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/partial/picture.html --- 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(); + } + }); diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/ldt_utils/views/content.py --- 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): diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/ldt_utils/views/lignesdetemps.py --- 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: diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/ldt_utils/views/project.py --- 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): diff -r 9978257745a5 -r 4ddf8c0eeab4 src/ldt/ldt/user/forms.py --- 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 diff -r 9978257745a5 -r 4ddf8c0eeab4 web/ldtplatform/config.py.tmpl --- 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