website.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. from __future__ import absolute_import
  2. from django.utils.translation import ugettext as _
  3. from django.contrib.auth import REDIRECT_FIELD_NAME
  4. from django.views.decorators.cache import never_cache
  5. from django.contrib.auth.views import LoginView as login
  6. from django.contrib.auth.views import LogoutView as logout
  7. from django.http import HttpResponse
  8. from .base import BaseAdminView, filter_hook
  9. from .dashboard import Dashboard
  10. from xadmin.forms import AdminAuthenticationForm
  11. from xadmin.models import UserSettings
  12. from xadmin.layout import FormHelper
  13. class IndexView(Dashboard):
  14. title = _("Main Dashboard")
  15. icon = "fa fa-dashboard"
  16. def get_page_id(self):
  17. return 'home'
  18. class UserSettingView(BaseAdminView):
  19. @never_cache
  20. def post(self, request):
  21. key = request.POST['key']
  22. val = request.POST['value']
  23. us, created = UserSettings.objects.get_or_create(
  24. user=self.user, key=key)
  25. us.value = val
  26. us.save()
  27. return HttpResponse('')
  28. class LoginView(BaseAdminView):
  29. title = _("Please Login")
  30. login_form = None
  31. login_template = None
  32. @filter_hook
  33. def update_params(self, defaults):
  34. pass
  35. @never_cache
  36. def get(self, request, *args, **kwargs):
  37. context = self.get_context()
  38. helper = FormHelper()
  39. helper.form_tag = False
  40. helper.include_media = False
  41. context.update({
  42. 'title': self.title,
  43. 'helper': helper,
  44. 'app_path': request.get_full_path(),
  45. REDIRECT_FIELD_NAME: request.get_full_path(),
  46. })
  47. defaults = {
  48. 'extra_context': context,
  49. # 'current_app': self.admin_site.name,
  50. 'authentication_form': self.login_form or AdminAuthenticationForm,
  51. 'template_name': self.login_template or 'xadmin/views/login.html',
  52. }
  53. self.update_params(defaults)
  54. # return login(request, **defaults)
  55. return login.as_view(**defaults)(request)
  56. @never_cache
  57. def post(self, request, *args, **kwargs):
  58. return self.get(request)
  59. class LogoutView(BaseAdminView):
  60. logout_template = None
  61. need_site_permission = False
  62. @filter_hook
  63. def update_params(self, defaults):
  64. pass
  65. @never_cache
  66. def get(self, request, *args, **kwargs):
  67. context = self.get_context()
  68. defaults = {
  69. 'extra_context': context,
  70. # 'current_app': self.admin_site.name,
  71. 'template_name': self.logout_template or 'xadmin/views/logged_out.html',
  72. }
  73. if self.logout_template is not None:
  74. defaults['template_name'] = self.logout_template
  75. self.update_params(defaults)
  76. # return logout(request, **defaults)
  77. return logout.as_view(**defaults)(request)
  78. @never_cache
  79. def post(self, request, *args, **kwargs):
  80. return self.get(request)