api.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from django.core.exceptions import ValidationError
  2. from django.http import JsonResponse
  3. from django.utils.translation import ugettext as _
  4. from django.views.decorators.debug import sensitive_post_parameters
  5. from misago.core.decorators import ajax_only, require_POST
  6. from misago.users import validators
  7. def api(f):
  8. @sensitive_post_parameters("email", "password")
  9. @ajax_only
  10. @require_POST
  11. def decorator(request, *args, **kwargs):
  12. try:
  13. return JsonResponse({
  14. 'has_error': 0,
  15. 'message': f(request, *args, **kwargs),
  16. })
  17. except ValidationError as e:
  18. return JsonResponse({
  19. 'has_error': 1,
  20. 'message': unicode(e.message)
  21. })
  22. return decorator
  23. @api
  24. def validate_username(request, exclude=None):
  25. try:
  26. validators.validate_username(request.POST['username'])
  27. return _("Entered username is valid.")
  28. except KeyError:
  29. raise ValidationError(_('Enter username.'))
  30. @api
  31. def validate_email(request, exclude=None):
  32. try:
  33. validators.validate_email(request.POST['email'])
  34. return _("Entered e-mail is valid.")
  35. except KeyError:
  36. raise ValidationError(_('Enter e-mail address.'))
  37. @api
  38. def validate_password(request, exclude=None):
  39. try:
  40. validators.validate_password(request.POST['password'])
  41. return _("Entered password is valid.")
  42. except KeyError:
  43. raise ValidationError(_('Enter password.'))