partner.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. from django.views.generic import DetailView
  2. from django.views.generic.edit import FormView
  3. from django.urls import reverse_lazy
  4. from django.shortcuts import get_object_or_404
  5. from django.utils.translation import gettext as _
  6. from django.contrib.auth.mixins import UserPassesTestMixin
  7. from django.contrib import messages
  8. from dbsynce.models import Company, Documents
  9. from SharixAdmin.forms import CompanyForm
  10. from .base import BaseView
  11. class PartnerDetailView(UserPassesTestMixin, BaseView, DetailView):
  12. model = Company
  13. template_name = 'SharixAdmin/partner.html'
  14. context_object_name = 'company'
  15. page_title = _('О партнере')
  16. page_name = 'partner'
  17. # Проверяем состояит ли текущий пользователь в группе PARTNER-ADMIN
  18. def test_func(self):
  19. return self.request.user.groups.filter(name='PARTNER-ADMIN').exists()
  20. def get_object(self, queryset=None):
  21. return get_object_or_404(Company, repr_id=self.request.user)
  22. def get_context_data(self, **kwargs):
  23. context = super().get_context_data(**kwargs)
  24. context.update({
  25. "company_documents": Documents.parse_requirements(self.object.requirements)
  26. })
  27. return context
  28. class PartnerEditView(UserPassesTestMixin, BaseView, FormView):
  29. template_name = 'SharixAdmin/partner_edit.html'
  30. form_class = CompanyForm
  31. success_url = reverse_lazy('partner_detail')
  32. page_title = _('Изменение данных партнера')
  33. page_name = 'partner'
  34. # Проверяем состояит ли текущий пользователь в группе PARTNER-ADMIN
  35. def test_func(self):
  36. return self.request.user.groups.filter(name='PARTNER-ADMIN').exists()
  37. def get_form_kwargs(self):
  38. kwargs = super().get_form_kwargs()
  39. kwargs['instance'] = get_object_or_404(Company, repr_id=self.request.user)
  40. return kwargs
  41. def form_valid(self, form):
  42. # Сохраняем изменения
  43. form.save()
  44. # Получаем текущий объект компании и деактивируем ее
  45. current_company = form.instance
  46. current_company.deactivate()
  47. # Отправляем пользователю уведомление на страницу о успехе операции
  48. messages.success(self.request, 'Данные успешно изменены и теперь проходят проверку!')
  49. return super().form_valid(form)