user_info.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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 django.views.generic import DetailView
  7. from sharix_admin.tables import UserInfoTable
  8. from django.views.generic import DetailView
  9. from dbsynce.models import Company, Documents, DocumentFile
  10. #from user import ShariXUser
  11. from .base import BaseView
  12. class UserListView(UserPassesTestMixin, SingleTableView):
  13. table_class = UserInfoTable
  14. queryset = get_user_model().objects.all()
  15. template_name = 'sharix_admin/user_information.html'
  16. def get_context_data(self, **kwargs):
  17. context = super().get_context_data(**kwargs)
  18. context.update({
  19. 'title': _('User Management'),
  20. 'object_list': context['object_list'],
  21. 'groups': Group.objects.all()
  22. })
  23. return context
  24. def test_func(self) -> bool or None:
  25. group_names = ('PROVIDER')
  26. if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
  27. return True
  28. return False
  29. #TODO change to smth working
  30. class UserDetailView(BaseView, DetailView):
  31. #class UserDetailView(UserPassesTestMixin, DetailView):
  32. #class PartnerDetailView(PartnerBaseView, DetailView):
  33. #TODO - change to sharix user
  34. model = Company
  35. #TODO create this template
  36. # template_name = 'sharix_admin/user_detail.html'
  37. template_name = 'sharix_admin/user_info.html'
  38. context_object_name = 'user_detail'
  39. page_title = 'Информация о пользователе'
  40. #TODO change to smth about user
  41. def get_object(self, queryset=None):
  42. return get_object_or_404(Company, repr=self.request.user)
  43. def get_context_data(self, **kwargs):
  44. context = super().get_context_data(**kwargs)
  45. if not pk:
  46. docs = Documents.objects.filter(
  47. user=pk,
  48. company=company.objects.filter(user=pk)
  49. ).prefetch_related('files').order_by('doc_type')
  50. #user=self.request.user,
  51. #company=self.object
  52. #).prefetch_related('files').order_by('doc_type')
  53. context.update({"docs": docs})
  54. else:
  55. docs = Documents.objects.filter(
  56. user=self.request.user,
  57. company=self.object
  58. ).prefetch_related('files').order_by('doc_type')
  59. context.update({"docs": docs})
  60. return context
  61. class UserInfoDetailView(BaseView, DetailView):
  62. # model = ShariXUser
  63. model = Company
  64. template_name = 'sharix_admin/user_detail.html'
  65. context_object_name = 'user'
  66. page_title = 'О пользователе'
  67. page_name = 'user_detail'
  68. def detail_view(request, primary_key):
  69. try:
  70. user = ShariXUser.objects.get(pk=primary_key)
  71. except ShariXUser.DoesNotExist:
  72. raise Http404('User does not exist')
  73. return render(request, template_name, context={'user': user})