Sfoglia il codice sorgente

fixing relationship and access-control pages for initial testing

ShariX Developer 1 giorno fa
parent
commit
1048dd0ff4

+ 62 - 1
sharix_admin/templates/sharix_admin/staff/access_control.html

@@ -1,9 +1,40 @@
 {% extends 'sharix_admin/base_admin.html' %}
 {% load i18n %}
 
+{% load render_table from django_tables2 %}
+{% load static %}
+
 {% block view %}
 {% block contenthome %}
-<h1 class="mainHeader">{{ title }}</h1>
+<p>
+Список прав и разрешений внутри сервиса в целом.
+</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>
+      </div>
+
+    <div class="row justify-content-start">
+          <div class="maintable" id="maintable">
+            {% render_table table %}
+          </div>     
+      </div>
+
+{% comment %}
 <form method="post" style="overflow: auto">
     {% csrf_token %}
     <div class="container m-2">
@@ -20,5 +51,35 @@
         <input class="btn btn-primary center" type="submit" name="apply" value="{% trans 'Submit' %}" />
     </div>
 </form>
+{% endcomment %}
+
+<script>
+// Запрос на изменения статуса категории сервиса
+      $('.status-toggle').change(function() {
+        var service_category = $(this).data('service_category-id');
+        var new_status = $(this).prop('checked') ? '0' : '1';
+        $.ajax({
+          url: '{% url "sharix_admin:service_category/change_status" %}',
+          type: 'POST',
+          data: {
+            'service_category': service_category,
+            'new_status': new_status,
+            'csrfmiddlewaretoken': '{{ csrf_token }}'
+          },
+          success: function(response) {
+            var scrollTop = window.pageYOffset;
+            location.reload();
+            window.scrollTo(0, scrollTop);
+          },
+          error: function(xhr, status, error) {
+            console.log(xhr.responseText);
+          }
+        });
+      });
+
+</script>
+
 {% endblock contenthome %}
 {% endblock view %}
+
+

+ 3 - 3
sharix_admin/urls.py

@@ -91,9 +91,9 @@ urlpatterns = [
 
 #TODO - take from platform
     path('access-control', login_required(AccessControlListView.as_view()), name='access_control'),
-#    path('access_control/change_status/', change_access_status, name='access_control/change_status'),
-#    path('relationship', login_required(RelationshipListView.as_view()), name='relationship'),    
-#    path('relationship/change_status/', change_access_status, name='relationship/change_status'),
+    path('access_control/change_status/', change_permissions_status, name='access_control/change_status'),
+    path('relationship', login_required(RelationshipListView.as_view()), name='relationship'),    
+    path('relationship/change_status/', change_relationship_status, name='relationship/change_status'),
 #    path('active_users', login_required(ActiveUsersListView.as_view()), name='active_users'),
 #    path('user/detail/<int:pk>', login_required(UserDetailView.as_view()), name='user_detail'),
 #    path('active_users/change_status/', change_access_status, name='active_users/change_status'),

+ 41 - 5
sharix_admin/views/staff.py

@@ -37,18 +37,31 @@ class AccessControlListView(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__icontains=search_query) |
+                Q(checked_by__icontains=search_query) |
+                Q(expire_date__icontains=search_query)
+            ).distinct()
+        return queryset
+
     def test_func(self) -> bool or None:
-        group_names = ('PLATFORM-ADMIN')
+        group_names = ('METASERVICE-ADMIN')
         if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
             return True
         return False
+    #    return True
 
 class RelationshipListView(BaseView, SingleTableView):
     page_title = _('Relationship')
     page_name = 'relationship'
     table_class = RelationshipTable
     queryset = Relationship.objects.all()
-    template_name = 'sharix_admin/staff/relationship.html'
+    template_name = 'sharix_admin/staff/access_control.html'
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
@@ -57,8 +70,20 @@ class RelationshipListView(BaseView, 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_who__icontains=search_query) |
+                Q(user_whom__icontains=search_query) |
+                Q(neg_type__icontains=search_query)
+            ).distinct()
+        return queryset
+
     def test_func(self):
-        group_names = ('PLATFORM-ADMIN')
+        group_names = ('METASERVICE-ADMIN')
         if bool(self.request.user.groups.filter(name=group_names)) or self.request.user.is_superuser:
             return True
         return False
@@ -70,7 +95,7 @@ def change_relationship_status(request):
     if request.method == 'POST':
         relationship_id = request.POST.get('relationship')
         new_status = request.POST.get('new_status')
-        relationship = SXRelationship.objects.get(pk=relationship)
+        relationship = Relationship.objects.get(pk=relationship)
         relationship.status = new_status
         relationship.save()
         return JsonResponse({'status': 'success'})
@@ -78,5 +103,16 @@ def change_relationship_status(request):
         return JsonResponse({'status': 'error'})
 
 
-
+@login_required
+@group_required('PLATFORM-ADMIN')
+def change_permissions_status(request):
+    if request.method == 'POST':
+        permissions_id = request.POST.get('permissions')
+        new_status = request.POST.get('new_status')
+        permissions = Permissions.objects.get(pk=permissions)
+        permissions.status = new_status
+        permissions.save()
+        return JsonResponse({'status': 'success'})
+    else:
+        return JsonResponse({'status': 'error'})