Example #1
0
File: views.py Project: CCLab/sezam
def user_set_userpic(request, id=None, **kwargs):
    """
    Update userpic.
    """
    template = kwargs.get("template", "user.html")
    user_message = request.session.pop("user_message", {})

    # Retrieve user's profile from db.
    user = get_object_or_404(User, pk=int(id))

    if request.method == "POST":
        form = UserpicForm(request.POST)
        if request.POST.get("submit_userpic", None):
            file_path = request.FILES.get("file_path", None)
            if file_path:
                try:
                    user.profile.userpic = handle_image(file_path, MEDIA_ROOT, thumbnail_size=THUMBNAIL_SIZE)
                    user.profile.save()
                    return redirect(reverse("user_profile", args=(str(id),)))
                except Exception as e:
                    user_message = update_user_message(user_message, _("Failed to update userpic."), "fail")
            else:
                user_message = update_user_message(user_message, _("Correct the errors: "), "fail")
        else:
            return redirect(reverse("user_profile", args=(str(id),)))
    elif request.method == "GET":
        form = UserpicForm()

    return render_to_response(
        template,
        {"user_message": user_message, "form": form, "page_title": _(u"Update userpic ") + user.get_full_name()},
        context_instance=RequestContext(request),
    )
Example #2
0
File: views.py Project: CCLab/sezam
def add_authority(request, slug=None, **kwargs):
    """
    Add new Authority in case if it can't be found in the database.
    """
    user_message = request.session.pop('user_message', {})
    template = kwargs.get('template', 'add_record.html')
    admin_mail_template = 'emails/authority_added.txt'
    from_link = None

    # Show the form to enter Authority data.
    if request.method == 'GET':
        from_link = request.GET.get('from', None)
        initial = {'slug': 'slug', 'order': 100}
        form = AuthorityProfileForm(initial=initial)

    # Check if the form is correct, save Authority in the db.
    elif request.method == 'POST':
        form = AuthorityProfileForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            authority = AuthorityProfile(**data)
            try:
                authority.save()
            except Exception as e:
                print >> sys.stderr, '[%s] %s' % (datetime.now().isoformat(), e)
                user_message = update_user_message({}, e.args[0], 'fail')
                form = AuthorityProfileForm(instance=authority)
            if authority.id: # Added successfully.
                user_message = update_user_message(user_message,
                    AppMessage('AuthSavedInactive').message % authority.name,
                    'success')

                # Send notification to managers.
                subject = _(u'New authority in the db: ') + authority.name
                content = render_to_string(admin_mail_template, {
                    'authority': authority, 'user': request.user,
                    'domain': get_domain_name()})
                try:
                    send_mail_managers(subject, content, fail_silently=False,
                                       headers={'Reply-To': request.user.email})
                except Exception as e:
                    print >> sys.stderr, '[%s] %s' % (datetime.now().isoformat(), e)

                # Create notifier.
                item = TaggedItem.objects.create(name=authority.name,
                                                content_object=authority)
                evnt = EventNotification.objects.create(
                    item=item, action='active', receiver=request.user,
                    summary='Authority %s becomes active' % authority.name)

                request.session['user_message'] = user_message
                return redirect(reverse('display_authorities'))

    return render_to_response(template,
                              {'form': form,
                               'from': from_link,
                               'mode': 'authority',
                               'user_message': user_message,
                               'page_title': _(u'Add authority')},
        context_instance=RequestContext(request))
Example #3
0
File: views.py Project: CCLab/sezam
def user_profile_update(request, id=None, **kwargs):
    """
    Show/process form for user's profile update.
    """
    user_message = request.session.pop("user_message", {})
    template = kwargs.get("template", "user.html")

    # Retrieve user's profile from db.
    user = get_object_or_404(User, pk=int(id))
    try:
        user_profile, created = UserProfile.objects.get_or_create(user=user)
    except Exception as e:
        pass  # TO-DO: Log it!

    if request.method == "POST":
        # Save changes.
        if request.POST.get("save_changes", None):
            form = UserProfileForm(request.POST, instance=user_profile)
            if form.is_valid():
                try:
                    user_profile = form.save()
                    return redirect(reverse("user_profile", args=(str(id),)))
                except Exception as e:  # Do nothing, simply return the form with errors
                    user_message = update_user_message(user_message, _("Failed to update user profile."), "fail")
            else:
                user_message = update_user_message(user_message, _("Correct the errors: "), "fail")
        elif request.POST.get("cancel_changes", None):
            return redirect(reverse("user_profile", args=(str(id),)))
    elif request.method == "GET":
        form = UserProfileForm(instance=user_profile)

    return render_to_response(
        template,
        {
            "user_message": user_message,
            "user_profile": user_profile,
            "form": form,
            "page_title": _(u"Update profile ") + user_profile.user.get_full_name(),
        },
        context_instance=RequestContext(request),
    )