Browse Source

Added service partner connection request form

TonyKurts 10 months ago
parent
commit
201b022d15

+ 3 - 0
SharixAdmin/forms/__init__.py

@@ -0,0 +1,3 @@
+from .login import LoginUserForm
+from .service import *
+from .company import *

+ 16 - 0
SharixAdmin/forms/company.py

@@ -0,0 +1,16 @@
+from django import forms
+
+from dbsynce.models import Company
+
+
+class CompanyCreateForm(forms.ModelForm):
+    def __init__(self, *args, **kwargs):
+        super(CompanyCreateForm, self).__init__(*args, **kwargs)
+        # Добавляем класс .form-control для всех полей формы
+        for field in iter(self.fields):
+            if 'class' not in self.fields[field].widget.attrs:
+                self.fields[field].widget.attrs.update({'class': 'form-control'})
+
+    class Meta:
+        model = Company
+        fields = ['legal_name', 'inn', 'kpp', 'ogrn', 'bank_name', 'bik', 'rs', 'ks', 'address']

+ 16 - 0
SharixAdmin/forms/login.py

@@ -0,0 +1,16 @@
+from django import forms
+from django.contrib.auth.forms import AuthenticationForm
+from django.contrib.auth import get_user_model
+
+
+class LoginUserForm(AuthenticationForm):
+
+    password = forms.CharField(label="Пароль",
+        widget=forms.PasswordInput(attrs={'class':'form-control'}))
+
+    username = forms.CharField(label="Номер телефона",
+        widget=forms.TextInput(attrs={'class':'form-control'}))
+
+    class Meta:
+        model = get_user_model()
+        fields = ['username', 'password']

+ 7 - 18
SharixAdmin/forms.py → SharixAdmin/forms/service.py

@@ -1,22 +1,5 @@
-from django.contrib.auth.forms import AuthenticationForm
-from django.contrib.auth import get_user_model
-
-from dbsynce.models import *
-from django import forms
-from dbsynce.models import ServiceType, Service
 from django import forms
-
-class LoginUserForm(AuthenticationForm):
-
-    password = forms.CharField(label="Пароль",
-        widget=forms.PasswordInput(attrs={'class':'form-control'}))
-
-    username = forms.CharField(label="Номер телефона",
-        widget=forms.TextInput(attrs={'class':'form-control'}))
-
-    class Meta:
-        model = get_user_model()
-        fields = ['username', 'password']
+from dbsynce.models import ServiceType, Service, Company
 
 
 class ServiceTariffUpdateForm(forms.ModelForm):
@@ -43,6 +26,7 @@ class ServiceTariffUpdateForm(forms.ModelForm):
             'resource_id': forms.Select(attrs={'class': 'form-select'}),
         }
 
+
 class ServiceTariffCreateForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super(ServiceTariffCreateForm, self).__init__(*args, **kwargs)
@@ -63,6 +47,7 @@ class ServiceTariffCreateForm(forms.ModelForm):
             'ticket_status': forms.TextInput(attrs={'readonly': True}),
         }
 
+
 class ServiceTypeUpdateForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super(ServiceTypeUpdateForm, self).__init__(*args, **kwargs)
@@ -102,6 +87,7 @@ class ServiceTypeCreateForm(forms.ModelForm):
 
         }
 
+
 class ServiceInformationUpdateForm(forms.ModelForm):
 
     def __init__(self, *args, **kwargs):
@@ -125,6 +111,7 @@ class ServiceInformationUpdateForm(forms.ModelForm):
             # 'resource_id': forms.Select(attrs={'class': 'form-select'}),
         }
         
+
 class ServiceInformationCreateForm(forms.ModelForm):
     
     def __init__(self, *args, **kwargs):
@@ -154,6 +141,7 @@ class ServiceInformationCreateForm(forms.ModelForm):
             # 'ticket_status': forms.Select(attrs={'class': 'form-select'}),
         }
 
+
 class PartnerInformationUpdateForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super(PartnerInformationUpdateForm, self).__init__(*args, **kwargs)
@@ -176,6 +164,7 @@ class PartnerInformationUpdateForm(forms.ModelForm):
             'repr_id': forms.Select(attrs={'class': 'form-select'}),
         }
         
+
 class PartnerInformationCreateForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
         super(PartnerInformationCreateForm, self).__init__(*args, **kwargs)       

File diff suppressed because it is too large
+ 1 - 0
SharixAdmin/static/SharixAdmin/img/menu/handshake.svg


File diff suppressed because it is too large
+ 1 - 0
SharixAdmin/static/SharixAdmin/img/menu/handshake_w.svg


+ 26 - 0
SharixAdmin/templates/SharixAdmin/cooperate.html

@@ -0,0 +1,26 @@
+{% extends 'SharixAdmin/index.html' %}
+
+{% block contenthome %}
+<h1 class="mainHeader">{{ title }}</h1>
+<p class="description_service">Товарищи! Консультация с широким активом требуют определения и уточнения существенных финансовых и административных условий. Идейные соображения высшего порядка, а также постоянный количественный рост и сфера нашей активности обеспечивает широкому кругу (специалистов) участие в формировании форм развития. </p>
+<form method="post" class="d-flex flex-column align-items-end">
+    {% csrf_token %}
+    {% for field in form %}
+        <div class="w-100 mb-3">
+            <label for="{{ field.id_for_label }}" class="form-label">{{ field.label }}</label>
+            {{ field }}
+            {% if field.help_text %}
+                <small class="form-text text-muted">{{ field.help_text }}</small>
+            {% endif %}
+            {% if field.errors %}
+                <ul class="errorlist">
+                    {% for error in field.errors %}
+                        <li>{{ error }}</li>
+                    {% endfor %}
+                </ul>
+            {% endif %}
+        </div>
+    {% endfor %}
+    <button class="btn btn-primary" type="submit">Отправить</button>
+</form>
+{% endblock %}

+ 15 - 0
SharixAdmin/templates/SharixAdmin/index.html

@@ -74,6 +74,21 @@
           </div>
         </a>
       </li>
+      <li class="nav-item">
+        <a href="{% url 'cooperate' %}" class="nav-link {% if current_page == "cooperate" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "cooperate" %}
+                  {% static 'SharixAdmin/img/menu/handshake_w.svg' %}
+                {% else %}
+                  {% static 'SharixAdmin/img/menu/handshake.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Сотрудничество</span>
+          </div>
+        </a>
+      </li>
       <li class="nav-item">
         <a href="{% url 'user_information' %}" class="nav-link {% if current_page == "none" %}active rounded{% endif %}">
           <div class="link d-flex align-items-center">

+ 2 - 0
SharixAdmin/urls.py

@@ -30,6 +30,8 @@ urlpatterns = [
     path('provider/', login_required(ProviderListView.as_view()), name='provider'),
     path('provider/change_status/', change_provider_status, name='provider/change_status'),
 
+    path('cooperate/', login_required(CooperateView.as_view()), name="cooperate"),
+
     path('service_tariff/', login_required(ServiceTariffListView.as_view()), name='service_tariff'),
     path('service_tariff/add/', login_required(ServiceTariffCreate.as_view()), name='service_tariff/add/'),
     path('service_tariff/edit/<int:pk>', login_required(ServiceTariffUpdateView.as_view()), name='service_tariff/edit/'),

+ 1 - 0
SharixAdmin/views/__init__.py

@@ -10,6 +10,7 @@ from .partners import *
 from .partner_info import *
 from .provider import *
 from .login import *
+from .cooperate import *
 from .payment import paymentView
 from .balance import balance
 from .trans_id import trans_id

+ 77 - 0
SharixAdmin/views/cooperate.py

@@ -0,0 +1,77 @@
+from datetime import datetime, timedelta
+
+from django.views.generic.edit import FormView
+from django.urls import reverse_lazy
+
+from SharixAdmin.forms import CompanyCreateForm
+from tickets.models import Ticket, TicketList
+
+
+class CooperateView(FormView):
+    form_class = CompanyCreateForm
+    template_name = "SharixAdmin/cooperate.html"
+    success_url = reverse_lazy("cooperate")
+
+    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: Возможно необходима автоматическая генерация содержимого в определенном формате
+            note=f"""
+            Пользователь {self.request.user} #{self.request.user.pk} отправил заявку на становление партнером сервиса:\n
+            - Имя: {instance.legal_name}\n
+            - ИНН: {instance.inn}\n
+            - Юридический адрес: {instance.address}\n
+            <a href="{instance.get_admin_url()}">Полная информация</a>\n
+            \n
+            Проверьте всю информацию и для активации партнера измените статус заявки на ACCEPTED.
+            Это будет означать, что договорные отношения между сервисом и партнером, вступают в силу.
+            """
+        )
+
+        # Сохраняем новые изменения
+        instance.save()
+
+        # Создание тикета на утверждение прав пользователя
+        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
+            <a href="{instance.get_admin_url()}">Полная информация о компании партнера</a>\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
+    

Some files were not shown because too many files changed in this diff