Explorar el Código

It is now possible to change partner data in the "About Partner" section

TonyKurts hace 6 meses
padre
commit
41020066dd

+ 2 - 2
SharixAdmin/forms/company.py

@@ -3,9 +3,9 @@ from django import forms
 from dbsynce.models import Company
 
 
-class CompanyCreateForm(forms.ModelForm):
+class CompanyForm(forms.ModelForm):
     def __init__(self, *args, **kwargs):
-        super(CompanyCreateForm, self).__init__(*args, **kwargs)
+        super(CompanyForm, self).__init__(*args, **kwargs)
         # Добавляем класс .form-control для всех полей формы
         for field in iter(self.fields):
             if 'class' not in self.fields[field].widget.attrs:

+ 10 - 0
SharixAdmin/static/SharixAdmin/css/style.css

@@ -77,6 +77,10 @@
     100% { transform: rotate(360deg); }
 }
 
+.list-style-none {
+    list-style-type: none;
+}
+
 .nav-link {
     height: 48px;
     display: flex;
@@ -95,4 +99,10 @@
 .menu-bar-label.collapsed {
     opacity: 0;
     pointer-events: none;
+}
+
+.btn-edit {
+    position: absolute;
+    top: 1em;
+    right: 1em;
 }

+ 3 - 0
SharixAdmin/static/SharixAdmin/img/pencil.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M21.1203 6.40527L17.5949 2.87987C17.0083 2.29329 16.241 2 15.4737 2C14.7064 2 13.9392 2.29329 13.3526 2.87987L2.88005 13.3376C2.30532 13.9093 1.9913 14.6885 2.00018 15.4973L2.05943 19.9855C2.07425 21.1024 2.98374 22 4.10061 22H8.50589C9.3028 22 10.0671 21.683 10.63 21.1201L21.1203 10.6476C22.2905 9.47741 22.2905 7.57843 21.1203 6.40527ZM9.56943 20.0595C9.28503 20.3439 8.90583 20.501 8.50589 20.501H4.10061C3.80732 20.501 3.56143 20.261 3.55847 19.9677L3.49922 15.4795C3.4933 15.0795 3.65327 14.6855 3.93767 14.4041L12.3779 5.97571L18.0245 11.6193L9.56943 20.0625V20.0595ZM20.0597 9.58702L19.0851 10.5587L13.4385 4.91512L14.4102 3.94342C14.6946 3.65901 15.0708 3.50496 15.4708 3.50496C15.8707 3.50496 16.247 3.66198 16.5314 3.94342L20.0568 7.46882C20.6404 8.05244 20.6404 9.00637 20.0568 9.58999L20.0597 9.58702Z" fill="white"/>
+</svg>

+ 0 - 1
SharixAdmin/templates/SharixAdmin/base.html

@@ -7,7 +7,6 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <link rel="shortcut icon" href="{% static 'SharixAdmin/img/logo.png' %}">
-    <link rel="stylesheet" href="{% static 'drf-yasg/navbar-style.css' %}">
     <link rel="stylesheet" href="{% static 'drf-yasg/service_type.css' %}">
     <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
     <link href="{% static 'drf-yasg/colors2.css' %}" rel="stylesheet">

+ 1 - 17
SharixAdmin/templates/SharixAdmin/cooperate.html

@@ -1,26 +1,10 @@
 {% 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 %}
+    {% include 'SharixAdmin/include/form.html' %}
     <button class="btn btn-primary" type="submit">Отправить</button>
 </form>
 {% endblock %}

+ 24 - 0
SharixAdmin/templates/SharixAdmin/include/form.html

@@ -0,0 +1,24 @@
+{% 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 %}
+
+{% if form.non_field_errors %}
+    <div class="alert alert-danger">
+        {% for error in form.non_field_errors %}
+            {{ error }}
+        {% endfor %}
+    </div>
+{% endif %}

+ 2 - 2
SharixAdmin/templates/SharixAdmin/index.html

@@ -138,7 +138,7 @@
       </li>
       {% if is_partner_admin %}
         <li class="nav-item">
-          <a href="{% url 'partner' %}" class="nav-link {% if current_page == 'partner' %}active rounded{% endif %}">
+          <a href="{% url 'partner_detail' %}" class="nav-link {% if current_page == 'partner' %}active rounded{% endif %}">
             <div class="link d-flex align-items-center">
               <img
                 class="nav-img"
@@ -187,7 +187,7 @@
   </nav>
 
   <div id="user-workspace" class="p-5 border rounded box-shadow">
-      <h1 class="mainHeader">{{ title }}</h1>
+      <h1 class="mainHeader mb-3">{{ title }}</h1>
       {% block contenthome %}{% endblock contenthome%}
   </div>
 

+ 27 - 0
SharixAdmin/templates/SharixAdmin/partner.html

@@ -1,9 +1,36 @@
 {% extends 'SharixAdmin/index.html' %}
 {% load i18n %}
+{% load static %}
 
 {% block contenthome %}
 <p class="description_service">
     Это система управления государством, источником власти в которой является сам народ. Именно народ решает, какие законы и нормы необходимы для гармоничного существования и развития государства. Таким образом, каждый человек в демократическом обществе 
     Получает определенный набор свобод и обязательств сформированных с учетом интересов всего сообщества. Исходя из вышесказанного, можно заключить, что демократия – это возможность для каждого человека свободно участвовать в непосредственном управлении своим государством, обществом и личной судьбой в конечном счете
 </p>
+
+<div class="card w-100 mb-4">
+    <div class="card-body position-relative">
+        <h5 class="card-title fw-bold mb-4">{{ company.legal_name }}</h5>
+
+        <ul class="list-style-none p-0 gap-2 m-0">
+            <li class="mb-3"><b>Представитель</b> {{ company.repr_id.get_full_name }}</li>
+            <li class="mb-3"><b>Юр. адрес</b> {{ company.address }}</li>
+            
+            <!-- FIXME: Не настроено -->
+            <li class="mb-3"><b>НДС</b> Не платит</li>
+            
+            <li class="mb-3"><b>ИНН</b> {{ company.inn }}</li>
+            <li class="mb-3"><b>ОГРН</b> {{ company.ogrn }}</li>
+            <li class="mb-3"><b>Р/c</b> {{ company.rs }}</li>
+            <li class="mb-3"><b>К/c</b> {{ company.ks }}</li>
+            <li class="mb-3"><b>БИК</b> {{ company.bik }}</li>
+            <li><b>Банк</b> {{ company.bank_name }}</li>
+        </ul>
+    </div>
+    <a class="btn btn-primary btn-edit" href="{% url "partner_edit" %}">
+        <img src="{% static 'SharixAdmin/img/pencil.svg' %}">
+    </a>
+</div>
+
+<h6>Документы</h6>
 {% endblock contenthome %}

+ 19 - 0
SharixAdmin/templates/SharixAdmin/partner_edit.html

@@ -0,0 +1,19 @@
+{% extends 'SharixAdmin/index.html' %}
+{% load i18n %}
+{% load static %}
+
+{% block contenthome %}
+
+<a class="display-block btn btn-sm btn-outline-secondary" href="{% url 'partner_detail' %}"><< Назад</a>
+
+<p class="description_service">
+    Это система управления государством, источником власти в которой является сам народ. Именно народ решает, какие законы и нормы необходимы для гармоничного существования и развития государства. Таким образом, каждый человек в демократическом обществе 
+    Получает определенный набор свобод и обязательств сформированных с учетом интересов всего сообщества. Исходя из вышесказанного, можно заключить, что демократия – это возможность для каждого человека свободно участвовать в непосредственном управлении своим государством, обществом и личной судьбой в конечном счете
+</p>
+
+<form method="post" class="d-flex flex-column align-items-end">
+    {% csrf_token %}
+    {% include 'SharixAdmin/include/form.html' %}
+    <button class="btn btn-primary" type="submit">Отправить</button>
+</form>
+{% endblock contenthome %}

+ 2 - 1
SharixAdmin/urls.py

@@ -18,7 +18,8 @@ urlpatterns = [
     # Страница "Сотрудничество" (запрос на подключение к сервису)
     path('cooperate/', login_required(CooperateView.as_view()), name='cooperate'),
     # Страница "О партнере"
-    path('partner/', login_required(PartnerView.as_view()), name='partner'),
+    path('partner/', login_required(PartnerDetailView.as_view()), name='partner_detail'),
+    path('partner/edit/', login_required(PartnerEditView.as_view()), name='partner_edit'),
 
 
     path('accounts/login/', LoginSharix.as_view(), name='authweb'),

+ 2 - 2
SharixAdmin/views/cooperate.py

@@ -4,12 +4,12 @@ from django.views.generic.edit import FormView
 from django.urls import reverse_lazy
 from django.contrib.auth.mixins import UserPassesTestMixin
 
-from SharixAdmin.forms import CompanyCreateForm
+from SharixAdmin.forms import CompanyForm
 from tickets.models import Ticket, TicketList
 
 
 class CooperateView(UserPassesTestMixin, FormView):
-    form_class = CompanyCreateForm
+    form_class = CompanyForm
     template_name = "SharixAdmin/cooperate.html"
     success_url = reverse_lazy("cooperate")
 

+ 38 - 4
SharixAdmin/views/partner.py

@@ -1,15 +1,49 @@
-from django.views.generic import TemplateView
+from django.views.generic import DetailView
+from django.views.generic.edit import FormView
+from django.urls import reverse_lazy
+from django.shortcuts import get_object_or_404
 from django.utils.translation import gettext as _
 from django.contrib.auth.mixins import UserPassesTestMixin
 
+from dbsynce.models import Company
+from SharixAdmin.forms import CompanyForm
+
 from .base import BaseView
 
 
-class PartnerView(UserPassesTestMixin, BaseView, TemplateView):
+class PartnerDetailView(UserPassesTestMixin, BaseView, DetailView):
+    model = Company
+    template_name = 'SharixAdmin/partner.html'
+    context_object_name = 'company'
+
     page_title = _('О партнере')
     page_name = 'partner'
-    template_name = 'SharixAdmin/partner.html'
 
     # Проверяем состояит ли текущий пользователь в группе PARTNER-ADMIN
     def test_func(self):
-        return self.request.user.groups.filter(name='PARTNER-ADMIN').exists()
+        return self.request.user.groups.filter(name='PARTNER-ADMIN').exists()
+
+    def get_object(self, queryset=None):
+        return get_object_or_404(Company, repr_id=self.request.user)
+
+
+class PartnerEditView(UserPassesTestMixin, BaseView, FormView):
+    template_name = 'SharixAdmin/partner_edit.html'
+    form_class = CompanyForm
+    success_url = reverse_lazy('partner_detail')
+
+    page_title = _('Изменение данных партнера')
+    page_name = 'partner'
+
+    # Проверяем состояит ли текущий пользователь в группе PARTNER-ADMIN
+    def test_func(self):
+        return self.request.user.groups.filter(name='PARTNER-ADMIN').exists()
+
+    def get_form_kwargs(self):
+        kwargs = super().get_form_kwargs()
+        kwargs['instance'] = get_object_or_404(Company, repr_id=self.request.user)
+        return kwargs
+
+    def form_valid(self, form):
+        form.save()  # Сохраняем изменения
+        return super().form_valid(form)