Advertisement
Mochinov

Untitled

Apr 13th, 2022
987
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.29 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 ConnectingUserToAccess
  6.  
  7.  
  8. class ConnectingUserToAccessSerializer(GenericSerializer):
  9.     """
  10.    Отвечает за сериализацию данных модели ConnectingUserToAccessSerializer
  11.    (табличное представление), оправляемых в ответе на запрос.
  12.    """
  13.  
  14.     readonly_field = ['id_field', 'user_field',  'user_access_field']
  15.     mandatory_fields = ['id_field', 'user_field', 'user_access_field']
  16.     create_field = ['user_field', 'user_access_field', 'transfer_date_field', 'return_date_field', 'comment_field',]
  17.  
  18.     id_field = GenericSerializerField(
  19.         model_field_name='id',
  20.     )
  21.     user_field = GenericSerializerField(
  22.         model_field_name='user_id',
  23.     )
  24.     user_access_field = GenericSerializerField(
  25.         model_field_name='user_access_id',
  26.     )
  27.     transfer_date_field = GenericSerializerField(
  28.         model_field_name="transfer_date",
  29.     )
  30.     return_date_field = GenericSerializerField(
  31.         model_field_name='return_date',
  32.     )
  33.     comment_field = GenericSerializerField(
  34.         model_field_name='comment_field',
  35.     )
  36.     user_access_name_field = GenericSerializerField(
  37.         model_field_name='user_access__name',
  38.     )
  39.     user_access_url_field = GenericSerializerField(
  40.         model_field_name='user_access__url',
  41.     )
  42.     user_access_comment_field = GenericSerializerField(
  43.         model_field_name='user_access__comment',
  44.     )
  45.     delete_btn_field = serializers.SerializerMethodField()
  46.  
  47.     fields_information = {
  48.         'id_field': GenericSerializer.get_field_information(
  49.             model_name='id',
  50.             field_verbose='ID',
  51.         ),
  52.         'user_field' : GenericSerializer.get_field_information(
  53.             model_name='user_id',
  54.             field_verbose='Ответственный сотрудник по возврату данных',
  55.         ),
  56.         'user_access_field' : GenericSerializer.get_field_information(
  57.             model_name='user_access_id',
  58.             field_verbose='Доступ выданный сотруднику',
  59.         ),
  60.         'transfer_date_field' : GenericSerializer.get_field_information(
  61.             model_name="transfer_dated",
  62.             field_verbose='Дата передачи',
  63.         ),
  64.         'return_date_field' : GenericSerializer.get_field_information(
  65.             model_name='return_date',
  66.             field_verbose='Дата возврата',
  67.         ),
  68.         'comment_field' : GenericSerializer.get_field_information(
  69.             model_name='comment',
  70.             field_verbose='Комментарий',
  71.         ),
  72.  
  73.         'user_access_name_field' : GenericSerializer.get_field_information(
  74.             model_name='user_access__name',
  75.             field_verbose='Название доступа',
  76.         ),
  77.         'user_access_url_field' : GenericSerializer.get_field_information(
  78.             model_name='user_access__url',
  79.             field_verbose='URL Адрес ресурса',
  80.         ),
  81.         'user_access_comment_field' : GenericSerializer.get_field_information(
  82.             model_name='user_access__comment',
  83.             field_verbose='Комментарий доступа',
  84.         ),
  85.         'delete_btn_field': GenericSerializer.get_field_information(),
  86.     }
  87.  
  88.     class Meta:
  89.         model = ConnectingUserToAccess
  90.         fields = [
  91.             'id_field',
  92.             'user_field',
  93.             'user_access_field',
  94.             'transfer_date_field',
  95.             'return_date_field',
  96.             'comment_field',
  97.             'user_access_name_field',
  98.             'user_access_url_field',
  99.             'user_access_comment_field',
  100.             'delete_btn_field',
  101.         ]
  102.  
  103.     def get_delete_btn_field(self, obj) -> dict:
  104.         """Определяет возвращаемое значение для поля кнопки удаления."""
  105.  
  106.         url = reverse('user_access_delete', args=[obj.id])
  107.  
  108.         return self.get_button_field(
  109.             action=GenericSerializer.ButtonActions.DELETE,
  110.             url=url,
  111.             verbose='',
  112.             icon='CloseCircle'
  113.         )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement