wo4h ddlZddlmZmZmZddlmZddlmZddl m Z ddl m Z dd l mZeZd ed eed ed efdeded eff dZ dd ed eedeegeffdZdS)N)AnyCallableList)MyImunifyConfig)is_plesk_service_plan_enabled)wraps) check_feature)UserArgumentNotFoundname permissionsfunc.user_keyreturncR tj}|jvrtd|j j ju fdt fd}t fd}tjr|S|S)z Wrapper to enable feature management for func :param name: feature name :param func: function/method to wrap :param user_key: parameter name which contains user name :return: new callable object zExpecting argument '%s' for %scr|vrtdtjr dStr dS|j}t |dS)Nz3Argument '%s' for '%s' must be specified explicitly)r rENABLEDrgetdefaultr )kwargsuserrr rruser_key_required user_params ^/opt/imunify360/venv/lib/python3.11/site-packages/defence360agent/feature_management/lookup.pycheckerz_wrapper..checker!s  !7!7&E   "  > F ( * *  G Fzz(J$677dK.....c$di||i|SNr argsrrrs rwrapperz_wrapper..wrapper4s.&tT$V$$$rc4Kdi||i|d{VSrr r!s r async_wrapperz_wrapper..async_wrapper9sD&T4*6*********r)inspect signature parametersr remptyr iscoroutinefunction) r rrrr'r#r%rrrs ```` @@@r_wrapperr+ s!$''Iy+++" ,h   %h/J"*j.>>//////////& 4[[%%%%%[% 4[[+++++[+"4(( Nrrcfd}|S)a  Get decorator to manage function/method with feature management :param name: feature name :param user_key: parameter name which contains user name :param permissions: list of permission values, with which user can access specifig endpoint :return: decorator ctj|rvt|diD]Q\}}|ds7tj|r#t |}t|||Rn&tj|rt |}t |S)N__dict___) r&isclassgetattritems startswith isfunctionr+setattrfeaturesadd)objm_namem_objr#r rrs r decoratorzfeature..decoratorPs ?3   =!(j"!=!=!C!C!E!E 2 2 ((--2'2DU2K2K2&t[%JJGC111 2  $ $ =4c8<rEs3&&&&&&&&&&......AAAAAA$$$$$$######,,,,,, 3553 3 I3-5c3h-?3KN3 c3h3333n17  I seSjr