Advertisement
Mochinov

Untitled

Apr 24th, 2022 (edited)
1,161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.59 KB | None | 0 0
  1. from django.urls import reverse
  2. from rest_framework import serializers
  3.  
  4. from misc.views.generic_serializer import GenericSerializer, GenericSerializerField
  5. from users.models import SubmissionRequest
  6.  
  7.  
  8. class SubmissionRequestSerializer(GenericSerializer):
  9.     """
  10.    Отвечает за сериализацию данных модели SubmissionRequest (табличное представление), оправляемых в ответе на запрос.
  11.    """
  12.  
  13.     readonly_field = [
  14.         'id_field',
  15.         'user_field',
  16.         'supervisor_field',
  17.         'comment_user_field',
  18.         'comment_field',
  19.         'status_field',
  20.         'access_field',
  21.         'property_field',
  22.         'name_request_field',
  23.         'comment_resource_field',
  24.         'resource_field',
  25.         'request_period_from_field',
  26.         'request_period_to_field',
  27.         'request_processed_field',
  28.         'request_period_from_field',
  29.         'request_period_to_field',
  30.         'request_processed_field',
  31.     ]
  32.     mandatory_fields = [
  33.         'id_field',
  34.         'user_field',
  35.         'supervisor_field',
  36.         'comment_user_field',
  37.         'comment_field',
  38.         'status_field',
  39.         'access_field',
  40.         'property_field',
  41.         'name_request_field',
  42.         'comment_resource_field',
  43.         'resource_field',
  44.         'request_period_from_field',
  45.         'request_period_to_field',
  46.         'request_processed_field',
  47.         'request_period_from_field',
  48.         'request_period_to_field',
  49.         'request_processed_field',
  50.     ]
  51.     create_field = []
  52.  
  53.     id_field = GenericSerializerField(
  54.         model_field_name='id'
  55.     )
  56.     user_field = GenericSerializerField(
  57.         model_field_name='user_id',
  58.         model_field_verbose='user__get_full_name',
  59.         field_verbose_is_method=True,
  60.     )
  61.     supervisor_field = GenericSerializerField(
  62.         model_field_name='supervisor_id',
  63.         model_field_verbose='supervisor__get_full_name',
  64.         field_verbose_is_method=True,
  65.     )
  66.     request_period_from_field = GenericSerializerField(
  67.         model_field_name='request_period_from',
  68.     )
  69.     request_period_to_field = GenericSerializerField(
  70.         model_field_name='request_period_to',
  71.     )
  72.     request_processed_field = GenericSerializerField(
  73.         model_field_name='request_processed',
  74.     )
  75.     comment_user_field = GenericSerializerField(
  76.         model_field_name="comment_user"
  77.     )
  78.     comment_field = GenericSerializerField(
  79.         model_field_name='comment'
  80.     )
  81.     status_field = GenericSerializerField(
  82.         model_field_name='status'
  83.     )
  84.     access_field = GenericSerializerField(
  85.         model_field_name="access_id",
  86.     )
  87.     property_field = GenericSerializerField(
  88.         model_field_name="property_id",
  89.     )
  90.     name_request_field = GenericSerializerField(
  91.         model_field_name='get_name_request',
  92.         field_is_method=True,
  93.         model_field_verbose='get_name_request',
  94.         field_verbose_is_method=True,
  95.     )
  96.     comment_resource_field = GenericSerializerField(
  97.         model_field_name='get_comment_resource',
  98.         field_is_method=True,
  99.         model_field_verbose='get_comment_resource',
  100.         field_verbose_is_method=True,
  101.     )
  102.     resource_field = GenericSerializerField(
  103.         model_field_name='get_resource',
  104.         field_is_method=True,
  105.         model_field_verbose='get_resource',
  106.         field_verbose_is_method=True,
  107.     )
  108.     status_request_change_access_btn_field = serializers.SerializerMethodField()
  109.     status_request_change_property_btn_field = serializers.SerializerMethodField()
  110.     # delete_btn_field = serializers.SerializerMethodField()
  111.  
  112.     fields_information = {
  113.         'id_field': GenericSerializer.get_field_information(
  114.             model_name='id',
  115.             field_verbose='ID',
  116.         ),
  117.         'user_field': GenericSerializer.get_field_information(
  118.             model_name='user_id',
  119.             field_verbose='Сотрудник запрашиваемый доступы или имущество',
  120.         ),
  121.         'supervisor_field': GenericSerializer.get_field_information(
  122.             model_name='supervisor_id',
  123.             field_verbose='Руководитель',
  124.         ),
  125.         'comment_user_field': GenericSerializer.get_field_information(
  126.             model_name="comment_user",
  127.             field_verbose='Комментарий сотрудника',
  128.         ),
  129.         'comment_field': GenericSerializer.get_field_information(
  130.             model_name='comment',
  131.             field_verbose='Комментарий руководителя',
  132.         ),
  133.         'status_field': GenericSerializer.get_field_information(
  134.             model_name='status',
  135.             field_verbose='Статус заявки',
  136.         ),
  137.         'access_field': GenericSerializer.get_field_information(
  138.             model_name="access__name",
  139.             field_verbose='Название доступа',
  140.         ),
  141.         'property_field': GenericSerializer.get_field_information(
  142.             model_name="property__name",
  143.             field_verbose="Название запроса",
  144.         ),
  145.         'name_request_field': GenericSerializer.get_field_information(
  146.             field_verbose="Название ресурса",
  147.         ),
  148.         'comment_resource_field': GenericSerializer.get_field_information(
  149.             field_verbose="Комментарий ресурса",
  150.         ),
  151.         'resource_field': GenericSerializer.get_field_information(
  152.             field_verbose="Ресурс",
  153.         ),
  154.         'request_period_from_field': GenericSerializer.get_field_information(
  155.             model_name='request_period_from',
  156.         ),
  157.         'request_period_to_field': GenericSerializer.get_field_information(
  158.             model_name='request_period_to',
  159.         ),
  160.         'request_processed_field': GenericSerializer.get_field_information(
  161.             model_name='request_processed',
  162.         ),
  163.         'status_request_change_access_btn_field': GenericSerializer.get_field_information(),
  164.         'status_request_change_property_btn_field': GenericSerializer.get_field_information(),
  165.         # 'delete_btn_field': GenericSerializer.get_field_information(),
  166.     }
  167.  
  168.     class Meta:
  169.         model = SubmissionRequest
  170.         fields = [
  171.             'id_field',
  172.             'user_field',
  173.             'supervisor_field',
  174.             'comment_user_field',
  175.             'comment_field',
  176.             'status_field',
  177.             'access_field',
  178.             'property_field',
  179.             'name_request_field',
  180.             'comment_resource_field',
  181.             'resource_field',
  182.             'request_period_from_field',
  183.             'request_period_to_field',
  184.             'request_processed_field',
  185.             'request_period_from_field',
  186.             'request_period_to_field',
  187.             'request_processed_field',
  188.             'status_request_change_access_btn_field',
  189.             'status_request_change_property_btn_field'
  190.             # 'delete_btn_field'
  191.         ]
  192.  
  193.     def get_status_request_change_access_btn_field(self, obj) -> dict:
  194.         """Определяет возвращаемое значение для поля кнопки перехода к событию."""
  195.  
  196.         url = reverse('submission_requests_access_retrieve', args=[obj.id])
  197.         verbose = 'Принять заявку'
  198.  
  199.         return self.get_button_field(
  200.             action=GenericSerializer.ButtonActions.REDIRECT,
  201.             url=url,
  202.             verbose=verbose
  203.         )
  204.  
  205.     def get_status_request_change_property_btn_field(self, obj) -> dict:
  206.         """Определяет возвращаемое значение для поля кнопки перехода к событию."""
  207.  
  208.         url = reverse('submission_requests_property_retrieve', args=[obj.id])
  209.         verbose = 'Принять заявку'
  210.  
  211.         return self.get_button_field(
  212.             action=GenericSerializer.ButtonActions.REDIRECT,
  213.             url=url,
  214.             verbose=verbose
  215.         )
  216.  
  217.     def get_delete_btn_field(self, obj) -> dict:
  218.         """Определяет возвращаемое значение для поля кнопки удаления."""
  219.         pass
  220.     #     url = reverse('user_property_delete', args=[obj.id])
  221.  
  222.     #     return self.get_button_field(
  223.     #         action=GenericSerializer.ButtonActions.DELETE,
  224.     #         url=url,
  225.     #         verbose='',
  226.     #         icon='CloseCircle',
  227.     #     )
  228.  
  229.  
  230.  
  231.  
  232. class SingleSubmissionRequestSerializer(GenericSerializer):
  233.  
  234.     create_field = [
  235.         'comment_user_field',
  236.         'access_field',
  237.         'property_field',
  238.         'request_period_from_field',
  239.         'request_period_to_field',
  240.     ]
  241.     readonly_field = [
  242.         'id_field',
  243.         'user_field',
  244.         'supervisor_field',
  245.         'comment_field',
  246.         'name_request_field',
  247.         'comment_resource_field',
  248.         'resource_field',
  249.         'request_processed_field',
  250.     ]
  251.     mandatory_fields = [
  252.         'id_field',
  253.     ]
  254.  
  255.     id_field = GenericSerializerField(
  256.         model_field_name='id'
  257.     )
  258.  
  259.     user_field = GenericSerializerField(
  260.         model_field_name='user_id',
  261.         model_field_verbose='user__get_full_name',
  262.         field_verbose_is_method=True,
  263.     )
  264.     supervisor_field = GenericSerializerField(
  265.         model_field_name='supervisor_id',
  266.         model_field_verbose='supervisor__get_full_name',
  267.         field_verbose_is_method=True,
  268.     )
  269.     access_field = GenericSerializerField(
  270.         model_field_name="access__name",
  271.     )
  272.     property_field = GenericSerializerField(
  273.         model_field_name="property__name",
  274.     )
  275.     comment_user_field = GenericSerializerField(
  276.         model_field_name="comment_user"
  277.     )
  278.     comment_field = GenericSerializerField(
  279.         model_field_name='comment'
  280.     )
  281.     request_period_from_field = GenericSerializerField(
  282.         model_field_name='request_period_from',
  283.     )
  284.     request_period_to_field = GenericSerializerField(
  285.         model_field_name='request_period_to',
  286.     )
  287.     fields_information = {
  288.         'id_field': GenericSerializer.get_field_information(
  289.             model_name='id',
  290.             field_verbose='ID',
  291.         ),
  292.         'comment_user_field': GenericSerializer.get_field_information(
  293.             model_name="comment_user",
  294.             field_verbose='Комментарий сотрудника',
  295.         ),
  296.         'comment_field': GenericSerializer.get_field_information(
  297.             model_name='comment',
  298.             field_verbose='Комментарий руководителя',
  299.         ),
  300.         'access_field': GenericSerializer.get_field_information(
  301.             model_name="access__name",
  302.             field_verbose='Название доступа',
  303.         ),
  304.         'property_field': GenericSerializer.get_field_information(
  305.             model_name="property__name",
  306.             field_verbose="Название запроса",
  307.         ),
  308.         'request_period_from_field': GenericSerializer.get_field_information(
  309.             model_name='request_period_from',
  310.         ),
  311.         'request_period_to_field': GenericSerializer.get_field_information(
  312.             model_name='request_period_to',
  313.         ),
  314.     }
  315.     class Meta:
  316.         model = SubmissionRequest
  317.         depth = 1
  318.         fields = [
  319.             'id_field',
  320.             'user_field',
  321.             'supervisor_field',
  322.             'access_field',
  323.             'property_field',
  324.             'comment_user_field',
  325.             'comment_field',
  326.             'request_period_from_field',
  327.             'request_period_to_field',
  328.         ]
  329.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement