
    >Tf!                        d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d dlmZ d dlm Z  ddl!m"Z"  G d de          Z# G d de          Z$ G d de          Z% G d de          Z& G d de          Z' G d de          Z( G d de          Z)dS )     N)Count)OpenApiTypes)extend_schema)IsAuthenticated)Response)APIRootView)HTTP_201_CREATED)APIView)ViewSet)NetBoxModelViewSet)
filtersets)GroupObjectPermissionTokenUser
UserConfig)	deepmerge)RestrictedQuerySet   )serializersc                       e Zd ZdZd ZdS )UsersRootViewz
    Users API root view
    c                     dS )NUsers selfs    4/var/www/html/netbox-4.1.3/netbox/users/api/views.pyget_view_namezUsersRootView.get_view_name   s    w    N)__name__
__module____qualname____doc__r   r   r    r   r   r      s-             r    r   c                   h    e Zd Z ee                              d          Zej        Z	e
j        ZdS )UserViewSet)modelusernameN)r!   r"   r#   r   r   order_byquerysetr   UserSerializerserializer_classr   UserFilterSetfilterset_classr   r    r   r&   r&   !   s@        !!---66zBBH"1 .OOOr    r&   c                   r    e Zd Zej                             ed                    Zej	        Z
ej        ZdS )GroupViewSetuser)
user_countN)r!   r"   r#   r   objectsannotater   r*   r   GroupSerializerr,   r   GroupFilterSetr.   r   r    r   r0   r0   '   s?        }%%v%??H"2 /OOOr    r0   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )TokenViewSetN)r!   r"   r#   r   r3   allr*   r   TokenSerializerr,   r   TokenFilterSetr.   r   r    r   r8   r8   1   s2        }  ""H"2 /OOOr    r8   c                   l    e Zd ZdZg Z eej        ej        ej	        d          d             Z
d ZdS )TokenProvisionViewzR
    Non-authenticated REST API endpoint via which a user may create a Token.
    )   i  )request	responsesc                     t          j        |j        d|i          }|                    d           |                     |           t          |j        t                    S )Nr?   )datacontextT)raise_exception)status)r   TokenProvisionSerializerrB   is_validperform_creater   r	   )r   r?   
serializers      r   postzTokenProvisionView.post=   sc     !9w|V_ahUijjj
D111J'''
0@AAAAr    c                     |j         j        }t          j        d          }|                    d|j        j                    |                                 d S )Nz#netbox.api.views.TokenProvisionViewzCreating new )Metar'   logging	getLoggerinfo_metaverbose_namesave)r   rI   r'   loggers       r   rH   z!TokenProvisionView.perform_createJ   sS    %"#IJJ>EK$<>>???r    N)r!   r"   r#   r$   permission_classesr   r   rF   r   OBJECTrJ   rH   r   r    r   r=   r=   7   s          ]45$
 
  B B B    r    r=   c                   \    e Zd Zej                                        Zej        Z	e
j        ZdS )ObjectPermissionViewSetN)r!   r"   r#   r   r3   r9   r*   r   ObjectPermissionSerializerr,   r   ObjectPermissionFilterSetr.   r   r    r   rW   rW   U   s3        '++--H"= :OOOr    rW   c                       e Zd ZdZegZd Z edej	        i          d             Z
 edgdej	        i          d	             Zd
S )UserConfigViewSetzi
    An API endpoint via which a user can update his or her own UserConfig data (but no one else's).
    c                 V    t           j                            | j        j                  S )N)r1   )r   r3   filterr?   r1   r   s    r   get_querysetzUserConfigViewSet.get_querysete   s!    !((dl.?(@@@r       )r@   c                 v    |                                                                  }t          |j                  S )zM
        Return the UserConfig for the currently authenticated User.
        )r^   firstr   rB   r   r?   
userconfigs      r   listzUserConfigViewSet.listh   s1    
 &&((..00

(((r    patchr>   )methodsr@   c                     |                                                                  }t          |j        |j                  |_        |                                 t          |j                  S )zM
        Update the UserConfig for the currently authenticated User.
        )r^   ra   r   rB   rR   r   rb   s      r   re   zUserConfigViewSet.patchq   sV     &&((..00
#JOW\BB

(((r    N)r!   r"   r#   r$   r   rT   r^   r   r   rU   rd   re   r   r    r   r[   r[   _   s          **A A A ]c<#67888) ) 98) ]G9l6I0JKKK	) 	) LK	) 	) 	)r    r[   )*rM   django.db.modelsr   drf_spectacular.typesr   drf_spectacular.utilsr   rest_framework.permissionsr   rest_framework.responser   rest_framework.routersr   rest_framework.statusr	   rest_framework.viewsr
   rest_framework.viewsetsr   netbox.api.viewsetsr   usersr   users.modelsr   r   r   r   r   utilities.datar   utilities.querysetsr    r   r   r&   r0   r8   r=   rW   r[   r   r    r   <module>rw      sh    " " " " " " . . . . . . / / / / / / 6 6 6 6 6 6 , , , , , , . . . . . . 2 2 2 2 2 2 ( ( ( ( ( ( + + + + + + 2 2 2 2 2 2       I I I I I I I I I I I I I I $ $ $ $ $ $ 2 2 2 2 2 2          K   / / / / /$ / / /0 0 0 0 0% 0 0 00 0 0 0 0% 0 0 0       <; ; ; ; ;0 ; ; ;) ) ) ) ) ) ) ) ) )r    