Ejemplo n.º 1
0
 def _handle_user_avatar_upload():
     u"""Handle image upload for user profile page."""
     gallery_form = UserGalleryForm(request.POST, request.FILES)
     if gallery_form.is_valid():
         userprofile.clean_images()
         gallery = gallery_form.save(commit=False)
         gallery.userprofile = userprofile
         # User can only change his avatar
         gallery.is_avatar = True
         gallery.save()
         messages.success(request, u"Dodano grafikę")
     else:
         errors = '<br />'.join(gallery_form.errors)
         messages.error(
             request,
             u"Problem w trakcie dodawania grafiki: {}".format(errors))
Ejemplo n.º 2
0
 def _handle_user_avatar_upload():
     u"""Handle image upload for user profile page."""
     gallery_form = UserGalleryForm(request.POST, request.FILES)
     if gallery_form.is_valid():
         userprofile.clean_images()
         gallery = gallery_form.save(commit=False)
         gallery.userprofile = userprofile
         # User can only change his avatar
         gallery.is_avatar = True
         gallery.save()
         messages.success(request, u"Dodano grafikę")
     else:
         errors = '<br />'.join(gallery_form.errors)
         messages.error(
             request,
             u"Problem w trakcie dodawania grafiki: {}".format(errors)
         )
Ejemplo n.º 3
0
def logged_user_profile(request):
    """View to display user profile page.

    :param request: WSGIRequest instance
    """
    def _init_edit_profile_form():
        """Initialize EditProfileForm - helper method."""
        return EditProfileForm(
            initial={
                'phone_no': request.user.userprofile.phone_no,
                'first_name': request.user.first_name,
                'last_name': request.user.last_name,
                'user': request.user.id,
            })

    def _populate_participated_offers(request):
        """Populate offers that current user participate."""
        return Offer.objects.filter(volunteers=request.user)

    def _populate_created_offers(request):
        """Populate offers that current user create."""
        return Offer.objects.filter(
            organization__userprofiles__user=request.user)

    def _is_saving_user_avatar():
        """."""
        return request.POST.get('submit') == 'save_image' and request.FILES

    def _is_saving_organization_image():
        """."""
        submit_value = request.POST.get('submit')
        return submit_value == 'save_organization_image' and request.FILES

    def _is_saving_profile():
        """."""
        return request.POST.get('submit') == 'save_profile'

    def _save_userprofile():
        """Save user profile."""
        form = EditProfileForm(request.POST)
        if form.is_valid():
            user = User.objects.get(id=request.user.id)
            if (form.cleaned_data['current_password']
                    and form.cleaned_data['new_password']
                    and form.cleaned_data['confirm_new_password']):
                user.set_password(form.cleaned_data['new_password'])
            user.userprofile.phone_no = form.cleaned_data['phone_no']
            user.first_name = form.cleaned_data['first_name']
            user.last_name = form.cleaned_data['last_name']
            user.userprofile.save()
            user.save()
            messages.success(request, 'Zaktualizowano profil')
        else:
            errors = '<br />'.join(form.errors)
            messages.error(
                request,
                'Problem w trakcie zapisywania profilu: {errors}'.format(
                    errors=errors))
        return form

    def _handle_user_avatar_upload():
        """Handle image upload for user profile page."""
        gallery_form = UserGalleryForm(request.POST, request.FILES)
        if gallery_form.is_valid():
            userprofile.clean_images()
            gallery = gallery_form.save(commit=False)
            gallery.userprofile = userprofile
            # User can only change his avatar
            gallery.is_avatar = True
            gallery.save()
            messages.success(request, 'Dodano grafikę')
        else:
            errors = '<br />'.join(gallery_form.errors)
            messages.error(
                request,
                'Problem w trakcie dodawania grafiki: {errors}'.format(
                    errors=errors))

    def _handle_organization_image_upload():
        """Handle image upload for user profile page."""
        def _is_main(form):
            """Return True if is_main image was selected."""
            return True if form.cleaned_data['is_main'] else False

        gallery_form = OrganizationGalleryForm(userprofile, request.POST,
                                               request.FILES)
        if gallery_form.is_valid():
            gallery = gallery_form.save(commit=False)
            gallery.published_by = userprofile
            if _is_main(gallery_form):
                gallery.set_as_main(gallery.organization)
            gallery.save()
            messages.success(request, 'Dodano zdjęcie do galerii.')
        else:
            errors = '<br />'.join(gallery_form.errors)
            messages.error(
                request,
                'Problem w trakcie dodawania grafiki: {errors}'.format(
                    errors=errors))

    profile_form = _init_edit_profile_form()
    userprofile = UserProfile.objects.get(user=request.user)
    galleries = OrganizationGallery.get_organizations_galleries(userprofile)

    if request.method == 'POST':
        if _is_saving_user_avatar():
            _handle_user_avatar_upload()
        elif _is_saving_organization_image():
            _handle_organization_image_upload()
            return redirect('logged_user_profile')
        elif _is_saving_profile():
            profile_form = _save_userprofile()

    ctx = dict(profile_form=profile_form,
               user_avatar_form=UserGalleryForm(),
               organization_image_form=OrganizationGalleryForm(userprofile),
               galleries=galleries,
               userprofile=userprofile,
               MEDIA_URL=settings.MEDIA_URL)
    ctx['participated_offers'] = _populate_participated_offers(request)
    ctx['created_offers'] = _populate_created_offers(request)

    return render(request, 'users/user_profile.html', ctx)