Advertisement
Mochinov

Untitled

Apr 18th, 2022
781
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.78 KB | None | 0 0
  1.  
  2. submission_request_resource.py
  3.  
  4.  
  5. import logging
  6. from typing import Any, List, Union, Optional
  7.  
  8. from django.db.models import QuerySet, Q
  9. from django.http import HttpRequest
  10. from django.urls import reverse
  11. from django.utils import timezone
  12. from rest_framework import permissions
  13. from rest_framework.decorators import permission_classes
  14. from rest_framework.request import Request
  15. from rest_framework.response import Response
  16.  
  17. from misc.views.generic_api_single_view import GenericApiSingleView
  18. from misc.views.table_style import TableStyle
  19. from misc.views.generic_api_view import GenericApiView
  20. from misc.views.generic_filters import GenericFilters
  21. from misc.views.table_style import TableStyle
  22. from users.models import (
  23.     SubmissionRequest,
  24.     User,
  25. )
  26.  
  27. log = logging.getLogger(__name__)
  28.  
  29.  
  30. @permission_classes((permissions.AllowAny,))
  31. class SubmissionRequestTableView(GenericApiSingleView):
  32.     """Определяет структуру и содержание ответа на запросы к данным элемента Запросов (Таб с Имуществом и доступами)."""
  33.  
  34.     table_name = 'SubmissionRequest'
  35.     element_verbose = 'Запросы'
  36.  
  37.     PERMISSIONS = {
  38.         # 'create': 'users.crm_users_can_add_employee',
  39.         'view': 'users.crm_users_can_view_employee',
  40.         'edit': 'users.crm_users_can_edit_employee',
  41.         # 'delete': 'users.crm_users_can_delete_employee',
  42.         'view_all': 'users.crm_users_can_view_and_edit_all',
  43.         'edit_current_user_personal_information': 'users.crm_users_edit_current_user_personal_information',
  44.     }
  45.  
  46.     class Filters:
  47.         pass
  48.  
  49.     FIELDS_FILTERS = []
  50.  
  51.     def get_queryset(self, context: dict, user: User) -> QuerySet:
  52.         """Возвращает базовый (до фильтрации и пагинации) QuerySet."""
  53.  
  54.         return SubmissionRequest.objects.all()
  55.  
  56.     @staticmethod
  57.     def get_field_dict(context: dict, user: User) -> dict:
  58.         """Распаковывает ответ и возвращает словарь со значениями полей"""
  59.  
  60.         # supervisor_field = UsersTableView.get_unpack_value(context.get('supervisor_field'))
  61.         # supervisor_field = safe_to_int(supervisor_field, -1)
  62.         # supervisor_field = User.objects.filter(id=supervisor_field).first()
  63.  
  64.         data = {
  65.             'context_user': user,
  66.         }
  67.         return data
  68.  
  69.     def get_action_methods(self) -> dict:
  70.         """Возвращает словарь соотношений названий действий с их методом."""
  71.  
  72.         return {
  73.             'edit': self.edit_elements,
  74.             'send_invite': self.send_invite,
  75.         }
  76.  
  77.     @classmethod
  78.     def get_actions(cls) -> list:
  79.         """Возвращает список со списком действий, применимый к набору данных."""
  80.  
  81.         actions = [
  82.             # cls.get_action(
  83.             #     name='edit',
  84.             #     verbose='Сохранить изменения',
  85.             #     url=reverse('submission_request_access_list'),
  86.             # ),
  87.         ]
  88.         return actions
  89.  
  90.     def send_invite(self, request: Union[HttpRequest, Request], context: dict, user: User) -> Response:
  91.         """
  92.        Выполняет массовую отправку приглашений на регистрацию для сотрудников.
  93.        """
  94.  
  95.         return Response(
  96.             {
  97.                 'status': GenericApiView.Responses.STATUS_OK,
  98.                 # 'msg': f'К отправке подготовлено писем: {len(prepare_data_for_notification)} '
  99.                 # f'Найдено дублей: {len(items) - len(prepare_data_for_notification)}'
  100.             }
  101.         )
  102.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement