Skip to main content
Glama

ERPNext MCP Server

by Zero056
permissions.cpython-313.pyc11.5 kB
� Ґ�h�"��d�SSKrSSKrSSKrSSKJrJrJrJrJr SSK J r SSK J r "SS5r g)�N)�Dict�List�Optional�Any�Tuple)�datetime)�Pathc��\rSrSrS\4SjrS\S\4SjrS\S\4Sjr S\S\4Sjr S\S\4S jr S\S\4S jr S \S\S\4S jr SS\S \S\S\4SjjrSS\S\S \\S\\\44SjjrSS\S\S \\S\\S\\\44 SjjrSS\S\S\S\S \\S\\4 SjjrS\S\\4SjrS\S\\4SjrS\S\4SjrS\\4SjrS\4SjrSrg) �PermissionManager� �configc�J�XlURS05RSS5UlURS05RSS5UlURS05RSS5UlUR(a�[ UR5R nURSS9 [R"UR[[URR55S S 9 [R"[S 35Ulgg) N�audit�enabledT�log_filezlogs/audit.log� log_level�INFO)�exist_okz4%(asctime)s - %(levelname)s - %(name)s - %(message)s)�filename�level�formatz.audit)r �get� audit_enabled� audit_logrr �parent�mkdir�logging� basicConfig�getattr�upper� getLogger�__name__�logger)�selfr �log_dirs �=C:\Users\hazem\OneDrive\Desktop\mcp_server\src\permissions.py�__init__�PermissionManager.__init__ s���� �#�Z�Z���4�8�8��D�I������G�R�0�4�4�Z�AQ�R������G�R�0�4�4�[�&�I��� � � ��4�>�>�*�1�1�G� �M�M�4�M� (� � � �����g�t�~�~�';�';�'=�>�M� � "�+�+�x�j��,?�@�D�K� ��doctype�returnc���URRS05RS05nURRS05RS05nURX5$)N� permissions�doctypes�default)r r)r$r*�doctypes_config�default_configs r&�_get_doctype_permissions�*PermissionManager._get_doctype_permissionssU���+�+�/�/�-��<�@�@��R�P���������;�?�?� �2�N���"�"�7�;�;r)c�H�URU5nURSS5$)N�readF�r2r�r$r*r-s r&�can_read�PermissionManager.can_read!s#���3�3�G�<� ����v�u�-�-r)c�H�URU5nURSS5$)N�createFr6r7s r&� can_create�PermissionManager.can_create%�#���3�3�G�<� ����x��/�/r)c�H�URU5nURSS5$)N�updateFr6r7s r&� can_update�PermissionManager.can_update)r>r)c�H�URU5nURSS5$)N�deleteFr6r7s r&� can_delete�PermissionManager.can_delete-r>r)�datac�T�URU5nURS/5nURS/5nU(d-UR5VVs0sHupgXe;dM Xg_M nnnU$UR5VVs0sHupgXd;dM Xe;dMXg_M nnnU$s snnfs snnf�N�allowed_fields�restricted_fields)r2r�items) r$rGr*r-rJrK�k�v� filtered_datas r&�filter_allowed_fields�'PermissionManager.filter_allowed_fields1s����3�3�G�<� �$���)9�2�>��'�O�O�,?��D���.2�j�j�l�Y�l�d�a�a�>X�T�Q�T�l�M�Y��� "&�����!-����&��+,�+E����� �� ���Z��s� B�B�= B$� B$�B$�field� operationc��URU5nURS/5nURS/5nX&;agU(dgX%;$)NrJrKFTr6)r$r*rRrSr-rJrKs r&�check_field_permission�(PermissionManager.check_field_permission@sO���3�3�G�<� �$���)9�2�>��'�O�O�,?��D�� � %�����&�&r)Nc �D�URU5nURS05RU05nU(aU(dgUR5H�upgXc;dM X6n[U[5(aX�;aSSUSUSU34s $M;[U[ 5(dMRSU;aX�S;a SSUSUS34s $S U;aX�S ;a SSUSUS 34s $S U;aX�S :aSSUSUS US 34s $S U;dM�X�S :�dM�SSUSUSUS 34s $ g)N� conditions�T�FzField 'z ' value 'z' not in allowed values: �inz' not in allowed values�not_inz' is in forbidden values�minz' below minimum: �maxz' above maximum: )r2rrL� isinstance�list�dict) r$r*rSrGr-rXrR�allowed_values�values r&�validate_conditions�%PermissionManager.validate_conditionsNsp���3�3�G�<� � �_�_�\�2�6�:�:�9�b�I� ����%/�%5�%5�%7� !�E��}�� ���n�d�3�3��2�$���w�i��w�F_�`n�_o�&p�p�p�3����5�5��~�-�%�d�?S�2S�$���w�i��w�F]�&^�^�^��>�1�e�h�?W�6W�$���w�i��w�F^�&_�_�_���.�5�%�;P�3P�$���w�i��w�FW�Xf�gl�Xm�Wn�&o�o�o���.�5�%�;P�3P�$���w�i��w�FW�Xf�gl�Xm�Wn�&o�o�o�&8� r)� document_namec���UR5nSnUS:XaURU5nOOUS:XaURU5nO7US:XaURU5nOUS:XaUR U5nOSSU34$U(d!SUSUS 3nUR XSXcU5 SU4$U(a3UR X!U5upxU(dUR XSX�U5 SU4$UR XS S X45 g ) NFr5r;r@rDzUnknown operation: z Operation 'z' not allowed for doctype '�'TzOperation allowedrY)�lowerr8r<rArE�_log_operationrd) r$rSr*rGrf�allowed�reason�conditions_valid�condition_reasons r&�validate_operation�$PermissionManager.validate_operationgs ���O�O�%� ��� �� ��m�m�G�,�G� �(� "��o�o�g�.�G� �(� "��o�o�g�.�G� �(� "��o�o�g�.�G��/� �{�;�;� ;��"�9�+�-H�� �QR�S�F� � � � �E�6�� W��&�=� � �15�1I�1I�'�^b�1c� .� �#��#�#�I��?O�Wd�e��.�.�.� ���I��6I�4�_�r)rkrlc �0�UR(dg[R"5R5UR 5UUUUU(a[ UR 55OSU(a [U5OSS.nSUR 5SUSU(aSOSSU3nU(aUS U3- nU(aUS [ UR 553- nU(aURRU5 gURRU5 g) Nr)� timestamprSr*rkrlrf� data_keys� field_countz Operation: z | DocType: z | Result: �ALLOWED�DENIEDz | Reason: z | Document: z | Fields: ) rr�now� isoformatr r`�keys�lenr#�info�warning) r$rSr*rkrlrGrf�log_data� log_messages r&rj� PermissionManager._log_operation�s����!�!� �"����1�1�3�"���*����*�.2��d�i�i�k�*��(,�3�t�9�!�  ���)�/�/�+�,�L�� �B�$+�y��:�+�f�X� O� � � �]�=�/�:� :�K� � �[��d�i�i�k�):�(;�<� <�K� � �K�K� � �[� )� �K�K� � � � ,r)c�B�/nURU5(aURS5 URU5(aURS5 URU5(aURS5 UR U5(aURS5 U$)Nr5r;r@rD)r8�appendr<rArE)r$r*� operationss r&�get_allowed_operations�(PermissionManager.get_allowed_operations�s���� � �=�=�� !� !� � � �f� %� �?�?�7� #� #� � � �h� '� �?�?�7� #� #� � � �h� '� �?�?�7� #� #� � � �h� '��r)c��URU5nURS/5nURS/5nUVs/sH oUU;dM UPM sn$s snfrIr6)r$r*r-rJrKrRs r&�get_allowed_fields�$PermissionManager.get_allowed_fields�sU���3�3�G�<� �$���)9�2�>��'�O�O�,?��D��$2�T�>�%�BS�5S��>�T�T��Ts � A�Ac ���URU5nUURU5URU5URS/5URS05[ URU55S.$)NrKrX)r*r�rJrKrXrt)r2r�r�rrzr7s r&�get_doctype_summary�%PermissionManager.get_doctype_summary�sm���3�3�G�<� ���5�5�g�>�"�5�5�g�>�!,���1D�b�!I�%�/�/�,��;��t�6�6�w�?�@�  � r)c��[URRS05RS05R55$)Nr-r.)r`r rry�r$s r&�get_all_doctypes�"PermissionManager.get_all_doctypes�s2���D�K�K�O�O�M�2�6�:�:�:�r�J�O�O�Q�R�Rr)c��[R"5R5URR S05UR UR 5S.$)Nr-)rrr-r�configured_doctypes)rrwrxr rrr�r�s r&�export_permissions�$PermissionManager.export_permissions�sE��!����1�1�3��;�;�?�?�=�"�=�!�/�/�#'�#8�#8�#:�  � r))rrr rr#)r5)N)NN)r"� __module__� __qualname__�__firstlineno__rr'�strr2�boolr8r<rArErPrUrrrdrorjrr�r�r�r�r��__static_attributes__�r)r&r r s���A�t�A�"<��<��<� .��.��.�0�#�0�$�0�0�#�0�$�0�0�#�0�$�0� �$� �� �� � '�c� '�#� '�#� '�[_� '��3��3��h�t�n��`e�fj�lo�fo�`p��2W[�9=��C��#��X�d�^��)1�#���BG��c� �BR��>SW�-��-�c�-�D�-�RU�-�$�T�N�-�BJ�3�-�-�@ �c� �d�3�i� �U�#�U�$�s�)�U�  �3�  �4�  �S�$�s�)�S� �D� r)r ) �jsonr�os�typingrrrrrr�pathlibr r r�r)r&�<module>r�s&�� �� �3�3���E �E r)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zero056/Mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server