from datetime import datetime, timedelta from django.views.generic.edit import FormView from django.urls import reverse_lazy from django.contrib.auth.mixins import UserPassesTestMixin from SharixAdmin.forms import CompanyForm from tickets.models import Ticket, TicketList class CooperateView(UserPassesTestMixin, FormView): form_class = CompanyForm template_name = "SharixAdmin/cooperate.html" success_url = reverse_lazy("cooperate") # Проверяем не состояит ли текущий пользователь в группе PARTNER-ADMIN def test_func(self): return not self.request.user.groups.filter(name='PARTNER-ADMIN').exists() def form_valid(self, form): # Сохраняем форму, чтобы получить объект компании instance = form.save(commit=False) # Присваиваем полю repr_id идентификатор текущего пользователя instance.repr_id = self.request.user # Создаем новую запись в БД, чтобы иметь доступ к ID instance.save() # Создание тикета на активацию партнера # Создаем объект тикета и присваиваем его полю ticket_status instance.ticket_status = Ticket.objects.create( title=f"Создание нового Партнера '{instance.legal_name}'", ticket_list=TicketList.objects.get(pk=2102),# METASERVICE-ADMIN: Права в сервисе (ACCESS_REQUEST) ticket_type=3, # ACCESS_REQUEST due_date=datetime.now().date() + timedelta(days=30), created_by=self.request.user, # FIXME: Возможно необходима автоматическая генерация содержимого в определенном формате # FIXME: Возможно нужно автоматически создавать содержимое поля json note=f""" Пользователь {self.request.user} #{self.request.user.pk} отправил заявку на становление партнером сервиса:\n - Имя: {instance.legal_name}\n - ИНН: {instance.inn}\n - Юридический адрес: {instance.address}\n Полная информация\n \n Проверьте всю информацию и для активации партнера измените статус заявки на ACCEPTED. Это будет означать, что договорные отношения между сервисом и партнером, вступают в силу. """ ) # Сохраняем новые изменения instance.save() # Создание тикета на утверждение прав пользователя # FIXME: Возможно нужно автоматически создавать содержимое поля json Ticket.objects.create( title=f"Запрос прав на становление Партнером '{instance.legal_name}'", ticket_list=TicketList.objects.get(pk=2101),# METASERVICE-ADMIN: Активация партнеров (NEG_REQUEST) ticket_type=4, # NEG_REQUEST due_date=datetime.now().date() + timedelta(days=30), created_by=self.request.user, # FIXME: Возможно необходима автоматическая генерация содержимого в определенном формате note=f""" Пользователь {self.request.user} #{self.request.user.pk} отправил заявку на права партнера сервиса.\n \n Полная информация о компании партнера\n \n После принятия изменений указанное лицо будет партнером сервиса при совершении юридически значимых действий. """ ) return super().form_valid(form) # Возвращаем успешный ответ def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({ "title": "Сотрудничество", "current_page": "cooperate" }) return context