views.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from django.core.urlresolvers import reverse
  2. from django.shortcuts import redirect
  3. from django.utils.translation import ugettext as _
  4. from misago.apps.errors import error403, error404
  5. from misago.decorators import block_guest
  6. from misago.forms import FormLayout
  7. from misago.markdown import signature_markdown
  8. from misago.messages import Message
  9. from misago.apps.usercp.template import RequestContext
  10. from misago.apps.usercp.signature.forms import SignatureForm
  11. @block_guest
  12. def signature(request):
  13. # Intercept all requests if we can't use signature
  14. if not request.acl.usercp.can_use_signature():
  15. return error403(request)
  16. if request.user.signature_ban:
  17. return request.theme.render_to_response('usercp/signature_banned.html',
  18. context_instance=RequestContext(request, {
  19. 'tab': 'signature',
  20. }));
  21. siggy_text = ''
  22. message = request.messages.get_message('usercp_signature')
  23. if request.method == 'POST':
  24. form = SignatureForm(request.POST, request=request, initial={'signature': request.user.signature})
  25. if form.is_valid():
  26. request.user.signature = form.cleaned_data['signature']
  27. if request.user.signature:
  28. request.user.signature_preparsed = signature_markdown(request.acl,
  29. request.user.signature)
  30. else:
  31. request.user.signature_preparsed = None
  32. request.user.save(force_update=True)
  33. request.messages.set_flash(Message(_("Your signature has been changed.")), 'success', 'usercp_signature')
  34. return redirect(reverse('usercp_signature'))
  35. else:
  36. message = Message(form.non_field_errors()[0], 'error')
  37. else:
  38. form = SignatureForm(request=request, initial={'signature': request.user.signature})
  39. return request.theme.render_to_response('usercp/signature.html',
  40. context_instance=RequestContext(request, {
  41. 'message': message,
  42. 'tab': 'signature',
  43. 'form': FormLayout(form),
  44. }));