Browse Source

loading project

Ivan 2 weeks ago
parent
commit
13572a9f0b

+ 1 - 0
sharix_admin/forms/__init__.py

@@ -3,3 +3,4 @@ from .base import BaseForm
 from .company import *
 from .document import *
 from .service import *
+from .resource import *

+ 17 - 0
sharix_admin/forms/resource.py

@@ -0,0 +1,17 @@
+from dbsynce.models import Resource
+from django import forms
+
+
+class ResourceForm(forms.ModelForm):
+    def __init__(self, *args, **kwargs):
+        super(ResourceForm, 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 = Resource
+        fields = [
+            'resoure_type'
+        ]

+ 9 - 0
sharix_admin/templates/sharix_admin/resource_list.html

@@ -0,0 +1,9 @@
+{% extends 'sharix_admin/base_admin.html' %}
+
+{% block view %}
+<form method="post" class="d-flex flex-column align-items-end">
+    {% csrf_token %}
+    {% include 'sharix_admin/include/form.html' %}
+    <button class="btn btn-primary" type="submit">Отправить</button>
+</form>
+{% endblock %}

+ 3 - 2
sharix_admin/urls.py

@@ -38,8 +38,9 @@ urlpatterns = [
 
     path('partners/', login_required(PartnersListView.as_view()), name='partners'),
 
-    path('resource/', login_required(ResourceListView.as_view()), name='resource'),
-
+    path('resource_list/', login_required(ResourceListView.as_view()), name='resource_list'),
+    path('resource_edit/', login_required(ResourceEditView.as_view()), name='resource_edit'),
+    
     path('provider/', login_required(ProviderListView.as_view()), name='provider'),
 
     path('service_tariff/', login_required(ServiceTariffListView.as_view()), name='service_tariff'),

+ 67 - 0
sharix_admin/views/resource.py

@@ -9,6 +9,20 @@ from sharix_admin.tables import ResourceTable
 from sharix_admin.utils import group_required
 
 
+from datetime import datetime, timedelta
+from dbsynce.lib.core import parse_requirements, get_admin_url
+from dbsynce.models import Documents
+from django.contrib import messages
+from django.db import transaction
+from django.urls import reverse_lazy
+from django.views.generic.edit import FormView
+from tickets.models import Ticket, TicketList
+
+from sharix_admin.forms import ResourceForm
+from sharix_admin.utils import *
+from dbsynce.lib.data import *
+from .base import BaseView
+
 class ResourceListView(UserPassesTestMixin, SingleTableView):
     table_class = ResourceTable
     queryset = Resource.objects.all()
@@ -42,3 +56,56 @@ def change_resource_status(request):
         return JsonResponse({'status': 'success'})
     else:
         return JsonResponse({'status': 'error'})
+
+
+
+class ResourceEditView(BaseView, FormView):
+    form_class = ResourceForm
+    template_name = "sharix_admin/resource.html"
+    success_url = reverse_lazy("sharix_admin:resource_list")
+    page_title = 'Изменить ресурс'
+    page_name = 'resource_edit'
+
+    # Проверяем состояит ли текущий пользователь в группе PARTNER-ADMIN
+    def test_func(self):
+        return "PARTNER-ADMIN" in self.user_groups
+
+    def form_valid(self, form):
+        with transaction.atomic():
+            # Сохраняем форму, чтобы получить объект ресурса
+            instance = form.save(commit=False)
+
+            # Присваиваем полю repr идентификатор текущего пользователя
+            instance.repr = self.request.user
+
+            # Создаем новую запись в БД, чтобы иметь доступ к ID
+            instance.save()
+
+            # Создание тикета на активацию ресурса.
+            # Создаем объект тикета и присваиваем его полю ticket_status
+            instance.ticket_status = create_ticket_resource_activation_by_metaservice_supervisor(self.request.user, instance)
+
+            # Создание тикета на утверждение прав пользователя
+            # create_ticket_role_activation_partner_admin(self.request.user, instance)
+
+            # Сохраняем новые изменения
+            instance.save()
+
+            # Создаем необходимые объекты документов по requirements указанных в созданной company
+            # Используем bulk_create для создания всех объектов одновременно
+            doc_codes = parse_requirements(instance.requirements)
+            Documents.objects.bulk_create([
+                Documents(
+                    company=instance,
+                    user=self.request.user,
+                    doc_type=doc_code
+                ) for doc_code in doc_codes
+            ])
+
+        # Отправляем пользователю уведомление на страницу о успехе операции
+        messages.success(
+            self.request,
+            'Ваша заявка на становление партнером успешно отправлена и теперь проходит проверку!'
+        )
+
+        return super().form_valid(form)  # Возвращаем успешный ответ