user_info.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from django.contrib.auth import get_user_model
  2. from django.contrib.auth.mixins import UserPassesTestMixin
  3. from django.contrib.auth.models import Group
  4. from django.utils.translation import gettext as _
  5. from django_tables2 import SingleTableView
  6. from sharix_admin.tables import UserInfoTable
  7. from django.views.generic import DetailView
  8. from dbsynce.models import Company, Documents, DocumentFile
  9. from .base import BaseView
  10. class UserListView(UserPassesTestMixin, SingleTableView):
  11. table_class = UserInfoTable
  12. queryset = get_user_model().objects.all()
  13. template_name = 'sharix_admin/user_information.html'
  14. def get_context_data(self, **kwargs):
  15. context = super().get_context_data(**kwargs)
  16. context.update({
  17. 'title': _('User Management'),
  18. 'object_list': context['object_list'],
  19. 'groups': Group.objects.all()
  20. })
  21. return context
  22. def test_func(self) -> bool or None:
  23. group_names = ('PROVIDER')
  24. if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
  25. return True
  26. return False
  27. #TODO change to smth working
  28. class UserDetailView(BaseView, DetailView):
  29. #class UserDetailView(UserPassesTestMixin, DetailView):
  30. #class PartnerDetailView(PartnerBaseView, DetailView):
  31. #TODO - change to sharix user
  32. model = Company
  33. #TODO create this template
  34. # template_name = 'sharix_admin/user_detail.html'
  35. template_name = 'sharix_admin/user_info.html'
  36. context_object_name = 'user_detail'
  37. page_title = 'Информация о пользователе'
  38. #TODO change to smth about user
  39. def get_object(self, queryset=None):
  40. return get_object_or_404(Company, repr=self.request.user)
  41. def get_context_data(self, **kwargs):
  42. context = super().get_context_data(**kwargs)
  43. if not pk:
  44. docs = Documents.objects.filter(
  45. user=pk,
  46. company=company.objects.filter(user=pk)
  47. ).prefetch_related('files').order_by('doc_type')
  48. #user=self.request.user,
  49. #company=self.object
  50. #).prefetch_related('files').order_by('doc_type')
  51. context.update({"docs": docs})
  52. else:
  53. docs = Documents.objects.filter(
  54. user=self.request.user,
  55. company=self.object
  56. ).prefetch_related('files').order_by('doc_type')
  57. context.update({"docs": docs})
  58. return context