Преглед на файлове

styles, tables, templates updated

ShariX Developer преди 4 дни
родител
ревизия
2e95f06d27

BIN
sharix_admin/locale/ru/LC_MESSAGES/django.mo


+ 1 - 1
sharix_admin/locale/ru/LC_MESSAGES/django.po

@@ -47,7 +47,7 @@ msgstr "Успешно, не успешно"
 #: .\tables.py:30 .\tables.py:53 .\tables.py:73 .\tables.py:94 .\tables.py:117
 #: .\tables.py:139 .\tables.py:166
 msgid "ID"
-msgstr "ИД"
+msgstr ""
 
 #: .\tables.py:31
 msgid "Legal entity"

+ 35 - 0
sharix_admin/static/sharix_admin/css/base.css

@@ -222,6 +222,41 @@ a:hover {
     opacity: 0.5;
 }
 
+/* Table */
+
+.table {
+    border-collapse: collapse;
+    width: 100%;
+    border: 1px solid #E3E4E7; 
+    border-radius: 0.5rem; 
+}
+
+.table th,
+.table td {
+    border: 1px solid #E3E4E7; 
+    padding: 8px; 
+    text-align: left; 
+}
+
+.table th {
+    font-weight: bold; 
+}
+
+.table .status-toggle {
+    margin: 0; 
+}
+
+/* Active-button */
+
+.activation-btn img {
+    margin-right: 10px; 
+    cursor: pointer; 
+}
+
+.activation-btn:last-child img {
+    margin-right: 0; /* Убираем отступ для последней кнопки */
+}
+
 /* Drop files input */
 .drop-container {
     display: flex;

+ 82 - 2
sharix_admin/tables.py

@@ -172,7 +172,7 @@ class ResourcesTable(tables.Table):
         verbose_name='',
         attrs={
             'th': {'scope': 'col'},
-            "td": {"width": "20%"}
+            "td": {"width": "40%"}
         }
     )
 
@@ -202,7 +202,87 @@ class ResourcesTable(tables.Table):
                 '<input class="form-check-input status-toggle" type="checkbox" id="flexCheckDefault" data-resource-id="{}">',
                 record.id
             )
-
+# class ResourcesTable(tables.Table):
+#     id = tables.Column(
+#         verbose_name=_('ID'),
+#         attrs={
+#             "td": {"width": "5%"}
+#         }
+#     )
+#     user = tables.Column(
+#         accessor='user.get_full_name',
+#         order_by=('user.first_name', 'user.last_name'),
+#         verbose_name=_('Responsible'),
+#         attrs={
+#             "td": {"width": "15%"}
+#         }
+#     )
+#     status = tables.Column(
+#         verbose_name=_('Status'),
+#         attrs={
+#             'th': {'scope': 'col'},
+#             "td": {"width": "20%"}
+#         }
+#     )
+#     activation = tables.Column(
+#         verbose_name=_('Активация'),
+#         attrs={
+#             'th': {'scope': 'col'},
+#             "td": {"width": "40%"}  # Увеличим ширину для размещения 4 кнопок
+#         }
+#     )
+
+#     class Meta:
+#         model = Resource
+#         attrs = {
+#             "class": "table table-layout-fixed custom-table"  # Добавлен кастомный класс для стилей
+#         }
+#         exclude = (
+#             'id_metaservice',
+#             'resource_type',
+#             'requirements',
+#             'is_global',
+#             'is_visible',
+#             'ticket_status'
+#         )
+
+#     def render_activation(self, value, record):
+#         # Чекбокс для текущего статуса
+#         checkbox = format_html(
+#             '<input class="form-check-input status-toggle" type="checkbox" id="flexCheckDefault_{}" data-resource-id="{}" {}>',
+#             record.id, record.id, 'checked' if record.status == 'active' else ''
+#         )
+
+#         # 4 кнопки-картинки без href, полагаемся на AJAX
+#         buttons = [
+#             format_html(
+#                 '<a class="activation-btn" data-action="action1" data-resource-id="{}">'
+#                 '<img src="{}" alt="Action 1" style="width: 30px; height: 30px;"></a>',
+#                 record.id, self.get_image_url('logo.png')
+#             ),
+#             format_html(
+#                 '<a class="activation-btn" data-action="action2" data-resource-id="{}">'
+#                 '<img src="{}" alt="Action 2" style="width: 30px; height: 30px;"></a>',
+#                 record.id, self.get_image_url('logo.png')
+#             ),
+#             format_html(
+#                 '<a class="activation-btn" data-action="action3" data-resource-id="{}">'
+#                 '<img src="{}" alt="Action 3" style="width: 30px; height: 30px;"></a>',
+#                 record.id, self.get_image_url('logo.png')
+#             ),
+#             format_html(
+#                 '<a class="activation-btn" data-action="action4" data-resource-id="{}">'
+#                 '<img src="{}" alt="Action 4" style="width: 30px; height: 30px;"></a>',
+#                 record.id, self.get_image_url('logo.png')
+#             )
+#         ]
+
+#         # Объединяем чекбокс и кнопки
+#         return format_html('{} {}', checkbox, ' '.join(buttons))
+
+#     def get_image_url(self, filename):
+#         # Путь к изображениям
+#         return f"{settings.STATIC_URL}sharix_admin/img/{filename}"
 
 class ProvidersTable(tables.Table):
     id = tables.Column(

+ 465 - 0
sharix_admin/templates/sharix_admin/base_admin_menu.html

@@ -0,0 +1,465 @@
+{% extends 'sharix_admin/base.html' %}
+{% load i18n %}
+{% load static %}
+
+{% block content %}
+<div id="loader-wrapper">
+  <div id="loader"></div>
+</div>
+
+<div class="content p-4 mx-auto d-flex flex-column justify-content-between">
+  <nav id="menu-bar">
+    <button class="bg-white border box-shadow rounded mb-2 px-4 py-1" onclick="menuBarSwitch()">
+        <img id="menu-bar-img-arrow" src="{% static 'sharix_admin/img/menu/arrow-right.svg' %}">
+    </button>
+
+    <ul class="d-flex flex-column nav nav-pills rounded box-shadow border p-2 bg-white">
+      
+    {% for page in avaliable_pages %}
+    <li class="nav-item">
+	    <a href="{% url page %}" class="nav-link {% if current_page == "{{ page }}" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "main" %}
+                  {% static 'sharix_admin/img/menu/house_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/house.svg' %}
+                {% endif %}">
+	    <span class="menu-bar-label">{{ page }}</span>
+          </div>
+        </a>
+      </li>
+      {% endfor %}
+
+
+      <li class="nav-item">
+        <a href="{% url 'tickets:ticket_list_list' %}" class="nav-link {% if current_page == "tickets" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "tickets" %}
+                  {% static 'sharix_admin/img/menu/tickets_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/tickets.svg' %}
+                {% endif %}"> 
+            <span class="menu-bar-label">Заявки</span>
+          </div>
+        </a>
+      </li>
+      <li class="nav-item">
+        <a href="http://study.reversea.net/" class="nav-link {% if current_page == "education" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "education" %}
+                  {% static 'sharix_admin/img/menu/education_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/education.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Курсы</span>
+          </div>
+        </a>
+      </li>
+
+      <!-- STAFF MENU-->
+      <!-- METASERVICE ADMIN OPEN SPECIFIC MENU -->
+
+      {% if "METASERVICE-ADMIN" in user_groups %}
+
+      <li class="nav-item">
+        <a href="{% url 'sharix_admin:service_categories' %}" class="nav-link {% if current_page == "service_categories" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "service_categories" %}
+                  {% static 'sharix_admin/img/menu/briefcase_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/briefcase.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Категории услуг</span>
+          </div>
+        </a>
+      </li>
+
+      <li class="nav-item">
+        <a href="{% url 'sharix_admin:service_category/add/' %}" class="nav-link {% if current_page == "service_category/add/" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "service_category/add/" %}
+                  {% static 'sharix_admin/img/menu/briefcase_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/briefcase.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Добавить категорию услуг</span>
+          </div>
+        </a>
+      </li>
+
+      <!-- TODO - add metaservice supervisor to viewers -->
+      <li class="nav-item">
+        <a href="{% url 'sharix_admin:service_tariffs' %}" class="nav-link {% if current_page == "service_tariffs" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "service_tariffs" %}
+                  {% static 'sharix_admin/img/menu/briefcase_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/briefcase.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Тарифы услуг</span>
+          </div>
+        </a>
+      </li>
+
+      <!-- TODO - add metaservice supervisor to viewers maybe without duplication -->
+      <li class="nav-item">
+        <a href="{% url "sharix_admin:partners" %}" class="nav-link {% if current_page == "partners" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "partners" %}
+                  {% static 'sharix_admin/img/menu/people_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/people.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Партнеры</span>
+          </div>
+        </a>
+      </li>
+
+            <!-- TODO: Управление правами ADD ALSO CHECK FOR SUPERVISOR-->
+        <a href="{% url 'sharix_admin:access_control' %}" class="nav-link {% if current_page == "access_control" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "access_control" %}
+                  {% static 'sharix_admin/img/menu/hdd-network_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/hdd-network.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Управление правами</span>
+          </div>
+        </a>
+      </li>
+
+      {% endif %}
+
+
+      <!-- METASERVICE SUPERVISOR MENU BLOCK -->
+      {% if "METASERVICE-SUPERVISOR" in user_groups %}
+      <li class="nav-item">
+        <a href="{% url "sharix_admin:partners" %}" class="nav-link {% if current_page == "partners" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "partners" %}
+                  {% static 'sharix_admin/img/menu/people_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/people.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Партнеры</span>
+          </div>
+        </a>
+      </li>
+
+      <li class="nav-item">
+        <a href="{% url "sharix_admin:resources" %}" class="nav-link {% if current_page == "resources" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "resources" %}
+                  {% static 'sharix_admin/img/menu/people_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/people.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Ресурсы</span>
+          </div>
+        </a>
+      </li>
+
+      <li class="nav-item">
+        <a href="{% url "sharix_admin:providers" %}" class="nav-link {% if current_page == "providers" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "providers" %}
+                  {% static 'sharix_admin/img/menu/people_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/people.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Исполнители</span>
+          </div>
+        </a>
+      </li>
+
+      <!-- PARTNER-ADMIN menu block TODO - add customization to list views -->
+
+      <li class="nav-item">
+        <a href="{% url "sharix_admin:resources" %}" class="nav-link {% if current_page == "resources" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "resources" %}
+                  {% static 'sharix_admin/img/menu/people_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/people.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Мои Ресурсы</span>
+          </div>
+        </a>
+      </li>
+
+       <li class="nav-item">
+        <a href="{% url 'sharix_admin:resource/add/' %}" class="nav-link {% if current_page == "resource/add/" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "resource/add/" %}
+                  {% static 'sharix_admin/img/menu/briefcase_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/briefcase.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Добавить ресурс</span>
+          </div>
+        </a>
+      </li>
+
+       <li class="nav-item">
+        <a href="{% url "sharix_admin:providers" %}" class="nav-link {% if current_page == "providers" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "providers" %}
+                  {% static 'sharix_admin/img/menu/people_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/people.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Мои Исполнители</span>
+          </div>
+        </a>
+      </li>
+
+      {% endif %}
+
+
+      <!-- COOPERATE BLOCK -->
+      {% if not "PARTNER-ADMIN" in user_groups %}
+        <li class="nav-item">
+          <a href="{% url "sharix_admin:cooperate_request" %}" class="nav-link {% if current_page == "cooperate_request" %}active rounded{% endif %}">
+            <div class="link d-flex align-items-center">
+              <img
+                class="nav-img"
+                src="
+                  {% if current_page == "cooperate_request" %}
+                    {% static 'sharix_admin/img/menu/handshake_w.svg' %}
+                  {% else %}
+                    {% static 'sharix_admin/img/menu/handshake.svg' %}
+                  {% endif %}">
+              <span class="menu-bar-label">Стать партнером</span>
+            </div>
+          </a>
+        </li>
+      {% endif %}
+
+        <li class="nav-item">
+          <a href="{% url "sharix_admin:job_request_metaservice" %}" class="nav-link {% if current_page == "job_request_metaservice" %}active rounded{% endif %}">
+            <div class="link d-flex align-items-center">
+              <img
+                class="nav-img"
+                src="
+                  {% if current_page == "job_request_metaservice" %}
+                    {% static 'sharix_admin/img/menu/handshake_w.svg' %}
+                  {% else %}
+                    {% static 'sharix_admin/img/menu/handshake.svg' %}
+                  {% endif %}">
+              <span class="menu-bar-label">Работа в Сервисе</span>
+            </div>
+          </a>
+        </li>
+      {% comment %} <li class="nav-item">
+        <a href="{% url 'sharix_admin:user_information' %}" class="nav-link {% if current_page == "none" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "none" %}
+                  {% static 'sharix_admin/img/menu/hdd-network_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/hdd-network.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Управление правами</span>
+          </div>
+        </a>
+      </li> {% endcomment %}
+
+      {% comment %}
+      <li class="nav-item">
+        <a href="{% url 'sharix_admin:service_category' %}" class="nav-link {% if current_page == "service_category" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "service_category" %}
+                  {% static 'sharix_admin/img/menu/briefcase_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/briefcase.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Услуги сервиса</span>
+          </div>
+        </a>
+      </li> {% endcomment %}
+      {% comment %} <li class="nav-item">
+        <a href="{% url 'sharix_admin:transactions' %}" class="nav-link {% if current_page == "transactions" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "transactions" %}
+                  {% static 'sharix_admin/img/menu/clock-history_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/clock-history.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">История заказов</span>
+          </div>
+        </a>
+      </li> {% endcomment %}
+      {% if "PARTNER-ADMIN" in user_groups %}
+        <li class="nav-item">
+          <a href="{% url 'sharix_admin:partner_detail_my' %}" class="nav-link {% if current_page == 'partner' %}active rounded{% endif %}">
+            <div class="link d-flex align-items-center">
+              <img
+                class="nav-img"
+                src="
+                  {% if current_page == 'partner' %}
+                    {% static 'sharix_admin/img/menu/person_w.svg' %}
+                  {% else %}
+                    {% static 'sharix_admin/img/menu/person.svg' %}
+                  {% endif %}">
+              <span class="menu-bar-label">О партнере</span>
+            </div>
+          </a>
+        </li>
+      {% endif %}
+      {% comment %} <li class="nav-item">
+        <a href="{% url 'sharix_admin:service_information-add' %}" class="nav-link {% if current_page == "service_info" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "service_info" %}
+                  {% static 'sharix_admin/img/menu/person_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/person.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Информация о сервисе</span>
+          </div>
+        </a>
+      </li> {% endcomment %}
+      {% comment %} <li class="nav-item">
+        <a href="{% url 'sharix_admin:payment' %}" class="nav-link {% if current_page == "payment" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "payment" %}
+                  {% static 'sharix_admin/img/menu/credit-card_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/credit-card.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Реквизиты</span>
+          </div>
+        </a>
+      </li> {% endcomment %}
+
+
+      <!-- Converse integration -->
+      <li class="nav-item">
+        <a href="{% url 'sharix_admin:support_chat' %}" class="nav-link {% if current_page == "support_chat" %}active rounded{% endif %}">
+          <div class="link d-flex align-items-center">
+            <img
+              class="nav-img"
+              src="
+                {% if current_page == "support_chat" %}
+                  {% static 'sharix_admin/img/menu/tickets_w.svg' %}
+                {% else %}
+                  {% static 'sharix_admin/img/menu/tickets.svg' %}
+                {% endif %}">
+            <span class="menu-bar-label">Чат с техподдержкой</span>
+          </div>
+        </a>
+      </li>
+
+      
+      {% include 'webservice_running/metaservice_menu.html' %}
+     
+
+    </ul>
+  </nav>
+
+  <div id="user-workspace" class="p-5 border rounded box-shadow">
+      <h1>{{ title }}</h1>
+      {% if messages %}
+        {% for message in messages %}
+          <div class="alert {% if message.tags %}alert-{{ message.tags }}{% endif %}">{{ message }}</div>
+        {% endfor %}
+      {% endif %}
+      
+      {% block view %}{% endblock view %}
+  </div>
+
+  <footer class="d-flex justify-content-between mt-3 p-2 align-items-center border rounded box-shadow">
+    <div class="d-flex align-items-center">
+        <div class="d-flex justify-content-center align-items-center rounded-circle bg-secondary-subtle p-3">
+          <i class="fa-solid fa-user"></i>
+        </div>
+        <span class="mx-2 text-nowrap text-muted">{{ user }}</span>
+    </div>
+
+    <div class="d-flex gap-3 mx-2">
+        {% comment %} <a href="{% url 'contact' %}">{% trans 'Contacts' %}</a> {% endcomment %}
+        <a href="https://wiki.sharix-app.org/doku.php/sharix/legal/soglashenie_s_servisom_na_ispolzovanie_platformy_sharix">{% trans 'Terms of use' %}</a>
+        <a href="https://wiki.sharix-app.org/doku.php/sharix/legal/politika_konfidencialnosti_platformy_sharix">{% trans 'Privacy policy' %}</a>
+        <a href="https://wiki.sharix-app.org/doku.php">Помощь</a>
+    </div>
+
+    <form method="post" action="{% url "sharix_admin:auth_logout" %}">
+      {% csrf_token %}
+      <button class="btn btn-sm btn-outline-secondary text-nowrap" type="submit">
+        Выйти
+        <i class="fa-solid fa-right-from-bracket ms-1"></i>
+      </button>
+    </form>
+  </footer>
+</div>
+
+<script src="{% static 'sharix_admin/js/menu-bar.js' %}"></script>
+
+<script>
+  // Запуск некоторых функций после загрузки страницы
+  document.addEventListener('DOMContentLoaded', function() {
+    menuBarControll();
+  });
+
+  // Функция для скрытия экрана загрузки
+  function hideLoader() { document.getElementById("loader-wrapper").style.display = "none"; }
+
+  // Скрыть экран загрузки через 4 секунды
+  setTimeout(hideLoader, 400);
+</script>
+{% endblock %}

+ 0 - 0
sharix_admin/templates/sharix_admin/resources.html → sharix_admin/templates/sharix_admin/resource.html


+ 28 - 4
sharix_admin/templates/sharix_admin/resource_list.html

@@ -1,20 +1,43 @@
 {% extends 'sharix_admin/base_admin.html' %}
 {% load render_table from django_tables2 %}
+{% load static %}
 
+{% block view %}
 {% block contenthome %}
-    <h1 >{{ title }}</h1>
+    <p class="text-muted">
+        На этой странице представлены список средств и объектов, необходимых для обеспечения функционирования сервиса. 
+        Активация ресурсов происходит через <a href="{% url 'tickets:ticket_list_list' %}" class="text-primary">заявки</a>.
+    </p>
+
+    <div class="dropdown mb-3">
+        <button class="btn btn-secondary dropdown-toggle" type="button" id="howToUseDropdown" data-bs-toggle="dropdown" aria-expanded="false">
+            Как пользоваться?
+        </button>
+        <div class="dropdown-menu" aria-labelledby="howToUseDropdown">
+            <p class="dropdown-item-text custom-dropdown-text">На этой странице представлены список средств и объектов, необходимых для обеспечения функционирования сервиса. Активация ресурсов происходит через заявки. На этой странице представлены список средств и объектов, необходимых для обеспечения функционирования сервиса. Активация ресурсов происходит через заявки. .</p>
+        </div>
+    </div>
+
+    <div class="mb-3 d-flex justify-content-between align-items-center">
+      <form method="get" action="" class="d-flex align-items-center">
+          <input type="text" name="q" class="form-control" placeholder="Поиск" value="{{ request.GET.q }}" style="width: 300px; height: 38px;">
+          <button type="submit" class="btn btn-primary ms-2" style="height: 38px;">Поиск</button>
+      </form>
+ 
+      <a href="{% url 'sharix_admin:resource/add/' %}" class="btn btn-primary" style="height: 38px;">Добавить ресурс</a>
+    </div>
 
     <div class="container text-center mt-2">
       {% render_table table %}
     </div>
-    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
+
     <script>
       // Запрос на изменения статуса ресурса
       $('.status-toggle').change(function() {
         var resource = $(this).data('resource-id');
         var new_status = $(this).prop('checked') ? 'active' : 'deactivated';
         $.ajax({
-          url: '{% url "resource/change_status" %}',
+          url: '{% url "sharix_admin:resource/change_status" %}',
           type: 'POST',
           data: {
             'resource': resource,
@@ -35,4 +58,5 @@
     
 
     
-{% endblock contenthome %}
+{% endblock contenthome %}
+{% endblock view %}

+ 2 - 5
sharix_admin/urls.py

@@ -47,19 +47,16 @@ urlpatterns = [
     path('resources/', login_required(ResourcesListView.as_view()), name='resources'),
     #path('resource/<str:pk>', login_required(ResourceDetailView.as_view()), name='resource_detail'),
     path('resource/add/', login_required(ResourceCreate.as_view()), name='resource/add/'),
-#    path('resource/edit/<int:pk>', login_required(ResourceEditView.as_view()), name='resource/edit'),
+    path('resource/edit/<int:pk>', login_required(ResourceEditView.as_view()), name='resource/edit'),
 #    path('resource/doc/<str:doc_code>/upload', login_required(ResourceDocUploadView.as_view()),
 #         name='partner_doc_upload'),
 #    path('resource/doc/<str:doc_code>', login_required(ResourceDocView.as_view()), name='resource_doc'),
     path('resource/change_status/', change_resource_status, name='resource/change_status'),
 
+    # Набор страниц по модели Исполнитель
     #path('resource_list/', login_required(ResourceListView.as_view()), name='resource_list'),
     #path('resource_edit/', login_required(ResourceEditView.as_view()), name='resource_edit'),
 
-    # Набор страниц по модели Исполнитель
-    path('resource_list/', login_required(ResourceListView.as_view()), name='resource_list'),
-    path('resource_edit/', login_required(ResourceEditView.as_view()), name='resource_edit'),
-
     path('providers/', login_required(ProvidersListView.as_view()), name='providers'),
     # path('provider/<str:pk>', login_required(ProviderDetailView.as_view()), name='provider_detail'),
     # path('provider/edit/<int:pk>', login_required(ProviderEditView.as_view()), name='provider/edit'),

+ 18 - 4
sharix_admin/views/resource.py

@@ -22,6 +22,7 @@ from sharix_admin.forms import ResourceForm
 from sharix_admin.utils import *
 from dbsynce.lib.data import *
 from .base import BaseView
+from django.db.models import Q
 
 class ResourcesListView(UserPassesTestMixin, SingleTableView):
     table_class = ResourcesTable
@@ -36,6 +37,18 @@ class ResourcesListView(UserPassesTestMixin, SingleTableView):
         })
         return context
 
+    def get_queryset(self):
+        queryset = super().get_queryset()
+        search_query = self.request.GET.get('q', '').strip()
+        if search_query:
+            queryset = queryset.filter(
+                Q(id__icontains=search_query) |
+                Q(user__first_name__icontains=search_query) |
+                Q(user__last_name__icontains=search_query) |
+                Q(status__icontains=search_query)
+            ).distinct()
+        return queryset
+
     def test_func(self) -> bool or None:
         #group_names = ('PARTNER-ADMIN')
         #if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
@@ -131,12 +144,12 @@ class ResourceCreate(BaseView, FormView):
             # Создаем новую запись в БД, чтобы иметь доступ к ID
             instance.save()
 
-            # Создание тикета на активацию партнера.
+            # Создание тикета на активацию ресурса.
             # Создаем объект тикета и присваиваем его полю ticket_status
-            instance.ticket_status = create_ticket_company_activation(self.request.user, instance)
+            instance.ticket_status = create_ticket_resource_activation_by_metaservice_supervisor(self.request.user, instance)
 
             # Создание тикета на утверждение прав пользователя
-            create_ticket_role_activation_partner_admin(self.request.user, instance)
+            create_ticket_resource_activation_by_partner_admin(self.request.user, instance)
 
             # Сохраняем новые изменения
             instance.save()
@@ -146,7 +159,8 @@ class ResourceCreate(BaseView, FormView):
             doc_codes = parse_requirements(instance.requirements)
             Documents.objects.bulk_create([
                 Documents(
-                    company=instance,
+                    #TODO add info about company
+                    resource=instance,
                     user=self.request.user,
                     doc_type=doc_code
                 ) for doc_code in doc_codes