cooperate.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from datetime import datetime, timedelta
  2. from django.views.generic.edit import FormView
  3. from django.urls import reverse_lazy
  4. from django.contrib.auth.mixins import UserPassesTestMixin
  5. from SharixAdmin.forms import CompanyForm
  6. from tickets.models import Ticket, TicketList
  7. class CooperateView(UserPassesTestMixin, FormView):
  8. form_class = CompanyForm
  9. template_name = "SharixAdmin/cooperate.html"
  10. success_url = reverse_lazy("cooperate")
  11. # Проверяем не состояит ли текущий пользователь в группе PARTNER-ADMIN
  12. def test_func(self):
  13. return not self.request.user.groups.filter(name='PARTNER-ADMIN').exists()
  14. def form_valid(self, form):
  15. # Сохраняем форму, чтобы получить объект компании
  16. instance = form.save(commit=False)
  17. # Присваиваем полю repr_id идентификатор текущего пользователя
  18. instance.repr_id = self.request.user
  19. # Создаем новую запись в БД, чтобы иметь доступ к ID
  20. instance.save()
  21. # Создание тикета на активацию партнера
  22. # Создаем объект тикета и присваиваем его полю ticket_status
  23. instance.ticket_status = Ticket.objects.create(
  24. title=f"Создание нового Партнера '{instance.legal_name}'",
  25. ticket_list=TicketList.objects.get(pk=2102),# METASERVICE-ADMIN: Права в сервисе (ACCESS_REQUEST)
  26. ticket_type=3, # ACCESS_REQUEST
  27. due_date=datetime.now().date() + timedelta(days=30),
  28. created_by=self.request.user,
  29. # FIXME: Возможно необходима автоматическая генерация содержимого в определенном формате
  30. # FIXME: Возможно нужно автоматически создавать содержимое поля json
  31. note=f"""
  32. Пользователь {self.request.user} #{self.request.user.pk} отправил заявку на становление партнером сервиса:\n
  33. - Имя: {instance.legal_name}\n
  34. - ИНН: {instance.inn}\n
  35. - Юридический адрес: {instance.address}\n
  36. <a href="{instance.get_admin_url()}">Полная информация</a>\n
  37. \n
  38. Проверьте всю информацию и для активации партнера измените статус заявки на ACCEPTED.
  39. Это будет означать, что договорные отношения между сервисом и партнером, вступают в силу.
  40. """
  41. )
  42. # Сохраняем новые изменения
  43. instance.save()
  44. # Создание тикета на утверждение прав пользователя
  45. # FIXME: Возможно нужно автоматически создавать содержимое поля json
  46. Ticket.objects.create(
  47. title=f"Запрос прав на становление Партнером '{instance.legal_name}'",
  48. ticket_list=TicketList.objects.get(pk=2101),# METASERVICE-ADMIN: Активация партнеров (NEG_REQUEST)
  49. ticket_type=4, # NEG_REQUEST
  50. due_date=datetime.now().date() + timedelta(days=30),
  51. created_by=self.request.user,
  52. # FIXME: Возможно необходима автоматическая генерация содержимого в определенном формате
  53. note=f"""
  54. Пользователь {self.request.user} #{self.request.user.pk} отправил заявку на права партнера сервиса.\n
  55. \n
  56. <a href="{instance.get_admin_url()}">Полная информация о компании партнера</a>\n
  57. \n
  58. После принятия изменений указанное лицо будет партнером сервиса при совершении юридически значимых действий.
  59. """
  60. )
  61. return super().form_valid(form) # Возвращаем успешный ответ
  62. def get_context_data(self, **kwargs):
  63. context = super().get_context_data(**kwargs)
  64. context.update({
  65. "title": "Сотрудничество",
  66. "current_page": "cooperate"
  67. })
  68. return context