sasha 5 months ago
parent
commit
085f94f982

+ 4 - 4
.gitignore

@@ -1,10 +1,10 @@
 # # Virtualenv
-# env/
-# venv/
-# .venv/
+env/
+venv/
+.venv/
 
 #config for concrete service
-# bin/install.cfg
+bin/install.cfg
 
 # # Editors
 # .vscode

BIN
db.sqlite3


+ 5 - 1
sharix_admin/forms/service.py

@@ -127,7 +127,9 @@ class ServiceInformationUpdateForm(forms.ModelForm):
     class Meta:
         model = Service
         fields = [
-            'servicetype'
+            "servicetype",
+            "price_alg",
+            "requirements",
         ]
 
         widgets = {
@@ -135,6 +137,8 @@ class ServiceInformationUpdateForm(forms.ModelForm):
             # 'ticket_status': forms.TextInput(attrs={'readonly': True}),
 
             'servicetype': forms.Select(attrs={'class': 'form-select'}),
+            'price_alg': forms.Select(attrs={'class': 'form-select'}),
+            'requirements':forms.Select(attrs={'class': 'form-select'}),
             # 'repr': forms.Select(attrs={'class': 'form-select'}),
             # 'resource': forms.Select(attrs={'class': 'form-select'}),
         }

+ 6 - 1
sharix_admin/tables.py

@@ -445,7 +445,12 @@ class ServiceTable(tables.Table):
             "td": {"width": "20%"}
         }
     )
-    edit = tables.LinkColumn('sharix_admin:service_edit', text=lambda record:record.id, args=[A('id')])
+    edit = tables.LinkColumn("sharix_admin:service_edit", text=lambda record:record.id,
+      
+        attrs={
+            'th': {'scope': 'col'},
+            "td": {"width": "10%"}
+        })
     class Meta:
         model = Service
         attrs = {

+ 1 - 1
sharix_admin/templates/sharix_admin/service.html

@@ -46,7 +46,7 @@
   </div>
   <div class="col"></div>
   <div class="col">
-    <button class="btn btn-primary">+ Услугу</button>
+    <button class="btn btn-primary" href="">+ Услугу</button>
   </div>
 </div>
 <div>

+ 25 - 0
sharix_admin/templates/sharix_admin/service_about.html

@@ -0,0 +1,25 @@
+{% extends 'sharix_admin/base_admin.html' %}
+{% load static %}
+
+{% block view %}
+<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">
+            <li><b>ID</b> {{ company.repr.get_full_name }}</li>
+            <li><b>Статус</b> {{ company.address }}</li>
+            <li><b>Требования</b> Не платит</li>
+            <li><b>Ценообразование</b> {{ company.inn }}</li>
+            <li><b>Описание</b> {{ company.ogrn }}</li>
+        </ul>
+    </div>
+    <a class="btn btn-primary btn-edit" href="{% url 'sharix_admin:service_edit' %}">
+        <img src="{% static 'sharix_admin/img/pencil.svg' %}">
+    </a>
+</div>
+{% endblock %}

+ 3 - 2
sharix_admin/urls.py

@@ -7,6 +7,7 @@ from schema_graph.views import Schema
 
 from sharix_admin.apiviews import *
 from sharix_admin.views import *
+from sharix_admin.views.services import ServiceListView, change_service_status
 
 router = routers.SimpleRouter()
 router.register(r'sharix-users', SharixUserMVS)
@@ -67,8 +68,8 @@ urlpatterns = [
 
     path('service/', ServiceListView.as_view(), name='service'),
     path('service/change_status/', change_service_status, name='service/change_status'),
-    path('service/edit', service_edit, name='service_edit'),
-
+    path('service/edit/', login_required(ServiceEditView.as_view()), name='service_edit'),
+    path('service_about/', login_required(ServiceDetailView.as_view()), name='service_detail'),
     #path('partner_information/', login_required(PartnerBaseView.as_view()), name='partner_information/'),
     # path('partner_information/add/', login_required(PartnerInformationCreate.as_view()), name='partner_information/add/'),
     # path('partner_information/edit/<int:pk>', login_required(PartnerInformationUpdateView.as_view()), name='partner_information/edit/'),

+ 3 - 2
sharix_admin/views/partner.py

@@ -10,14 +10,15 @@ from django.views.generic.edit import FormView
 from sharix_admin.forms import CompanyForm, DocumentUploadForm
 from sharix_admin.utils import *
 from .base import BaseView
+from django.utils.translation import gettext as _
 
 
 class PartnerBaseView(BaseView):
     page_name = 'partner'
 
     # Проверяем состояит ли текущий пользователь в группе PARTNER-ADMIN
-    def test_func(self):
-        return "PARTNER-ADMIN" in self.user_groups
+    # def test_func(self):
+    #     return "PARTNER-ADMIN" in self.user_groups
 
 
 class PartnerDetailView(PartnerBaseView, DetailView):

+ 34 - 29
sharix_admin/views/service.py

@@ -3,45 +3,50 @@ from django.contrib.auth.decorators import login_required
 from django.contrib.auth.mixins import UserPassesTestMixin
 from django.utils.translation import gettext as _
 from django_tables2 import SingleTableView
-
+from django.contrib import messages
+from django.db import transaction
 from sharix_admin.tables import ServiceTable
 from sharix_admin.utils import group_required
 from django.http import HttpResponse
+from django.shortcuts import render
+from .base import BaseView
+from django.views.generic.edit import FormView
+from sharix_admin.forms import *
+from django.urls import reverse_lazy
+from django.shortcuts import get_object_or_404, redirect
+from django.views.generic import DetailView
+
+class ServiceBaseView(BaseView):
+    page_name = 'service'
+
 
+class ServiceDetailView(ServiceBaseView, DetailView):
+    model = Service
+    template_name = 'sharix_admin/service_about.html'
+    context_object_name = 'service'
+    page_title = 'Об услуге'
 
-class ServiceListView(UserPassesTestMixin, SingleTableView):
-    table_class = ServiceTable
-    queryset = Service.objects.all()
-    template_name = 'sharix_admin/service.html'
+    def get_object(self, queryset=None):
+        return get_object_or_404(Service, id=Service.id)
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
-        context.update({
-            'title': _('Услуги сервиса'),
-            'object_list': context['object_list']
-        })
         return context
 
-    def test_func(self) -> bool or None: # type: ignore
-        group_names = ('PROVIDER')
-        if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
-            return True
-        return False
-
-
-@login_required
-@group_required('PROVIDER')
-def change_service_status(request):
-    if request.method == 'POST':
-        service_id = request.POST.get('service_id')
-        new_status = request.POST.get('new_status')
 
-        service = Service.objects.get(pk=service_id)
-        service.status = new_status
-        service.save()
+class ServiceEditView(ServiceBaseView, FormView):
+    template_name = 'sharix_admin/service_edit.html'
+    form_class = ServiceInformationUpdateForm
+    success_url = reverse_lazy('partner_detail')
+    page_title = 'Изменение данных услуги'
 
-def change_status():
-    return None
+    def get_form_kwargs(self):
+        kwargs = super().get_form_kwargs()
+        kwargs['instance'] = get_object_or_404(Service, repr=self.request.user)
+        return kwargs
 
-def service_edit(id):
-    return id
+    def form_valid(self, form):
+        with transaction.atomic():
+            form.save()
+        messages.success(self.request, 'Данные успешно изменены и теперь проходят проверку!')
+        return super().form_valid(form)

+ 52 - 0
sharix_admin/views/services.py

@@ -0,0 +1,52 @@
+from dbsynce.models import Service, ServiceType
+from django.contrib.auth.decorators import login_required
+from django.contrib.auth.mixins import UserPassesTestMixin
+from django.utils.translation import gettext as _
+from django_tables2 import SingleTableView
+from django.contrib import messages
+from django.db import transaction
+from sharix_admin.tables import ServiceTable
+from sharix_admin.utils import group_required
+from django.http import HttpResponse
+from django.shortcuts import render
+from .base import BaseView
+from django.views.generic.edit import FormView
+from sharix_admin.forms import *
+from django.urls import reverse_lazy
+from django.shortcuts import get_object_or_404, redirect
+from django.views.generic import DetailView
+
+
+class ServiceListView(UserPassesTestMixin, SingleTableView):
+    table_class = ServiceTable
+    queryset = Service.objects.all()
+    template_name = 'sharix_admin/service.html'
+
+    def get_context_data(self, **kwargs):
+        context = super().get_context_data(**kwargs)
+        context.update({
+            'title': _('Услуги сервиса'),
+            'object_list': context['object_list']
+        })
+        return context
+
+    def test_func(self) -> bool or None: # type: ignore
+        group_names = ('PROVIDER')
+        if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
+            return True
+        return False
+
+
+@login_required
+@group_required('PROVIDER')
+def change_service_status(request):
+    if request.method == 'POST':
+        service_id = request.POST.get('service_id')
+        new_status = request.POST.get('new_status')
+
+        service = Service.objects.get(pk=service_id)
+        service.status = new_status
+        service.save()
+
+def change_status():
+    return None