partner.py 2.9 KB

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