o
    2i>                     @  sn   d dl mZ d dlmZmZmZ d dlmZ ddlm	Z	 ddd	Z
dddZd ddZd!ddZd"ddZdS )#    )annotations)AnyDictList)	urlencode   ZoneOperationreturnList[ZoneOperation]c                   C  s4   t dddddddt dd	d
ddt dddddgS )uD   
    Operaciones de la sección 'JOIN customfields' bajo Users.
    get_users_with_customfieldszGet Users and customfieldsz-Devuelve usuarios activos y sus customfields.and|archived|=|false   )wherepage)codelabeldescriptiondefault_paramsupdate_user_customfieldzUpdate Users customfieldz0Actualiza un customfield de un usuario concreto.POST)r   r   r   http_methodcreate_user_with_customfieldszCreate User with Custom Fieldsz,Crea uno o varios usuarios con customfields.r    r   r   U/var/www/html/flask_server/apps/aroflo_connector_app/zones/users/join_customfields.pyget_operations
   s*   	r   operation_codestrboolc                   s   t  fddt D S )Nc                 3  s    | ]}|j  kV  qd S )N)r   ).0opr   r   r   	<genexpr>(   s    zsupports.<locals>.<genexpr>)anyr   r!   r   r!   r   supports'   s   r$   useridfieldidvaluec                 C  s   d|  d| d| d S )Nz<users><user><userid>z-</userid><customfields><customfield><fieldid>z</fieldid><value><![CDATA[ z8 ]]></value></customfield></customfields></user></users>r   )r%   r&   r'   r   r   r   !_build_update_customfield_postxml0   s   r(   userDict[str, Any]c              
   C  s  ddl m} g d}g }|d |D ]}| |}|dvr-|d| d| d| d q| d	}|rH|d
 |d| d |d | dpNg }|r{|d |D ]}|d}	|	sbqX|d |d|	 d |d qX|d | dpg }
|
r|d |
D ]M}|d}|d}|d}|dd}|d |r|d| d |r|d | d! |r|d"| d# |d$t| d%  |d& q|d' |d( d|S ))Nr   )r   )

givennamessurnameusernamepasswordemailemail2phonefaxmobile
accesstypez<users><user>)N <>z</orgidz<org>z<orgid>z</orgid>z</org>permissiongroupsz<permissiongroups>groupidz<permissiongroup>z	<groupid>z
</groupid>z</permissiongroup>z</permissiongroups>customfieldsz<customfields>r&   nametyper'   r5   z<customfield>z	<fieldid>z
</fieldid>z<name>z</name>z<type>z</type>z<value><![CDATA[ z ]]></value>z</customfield>z</customfields>z</user></users>)typingr   appendgetr   join)r)   _Listsimple_fields	xml_partskeyr'   r8   perm_groupspgr:   r;   cfr&   r<   ctyper   r   r   $_build_create_user_postxml_from_dict@   sZ   
















rJ   clientr   paramsc                 C  s   | dkr-| dd}| dd}dd|fddt|fg}t|}t|}|jdd	||d
S | dv r9td|  dtd|  )z
    Implementa las llamadas reales a AroFlo para JOIN customfields.

    Por ahora solo usamos el GET (Get Users and customfields),
    que es el que estamos probando con la CLI.
    Los POST quedan para la siguiente fase.
    r   r   r   r   r   )zoneusers)rA   r;   r5   GET)methodrL   
var_string)r   r   u&   [Users.join_customfields] Operación 'u   ' aún no implementada.u3   [Users.join_customfields] Operación no soportada: )r@   r   r   dictrequestNotImplementedError
ValueError)r   rK   rL   r   r   params_listrQ   query_paramsr   r   r   execute   s*   	

rX   N)r
   r   )r   r   r
   r   )r%   r   r&   r   r'   r   r
   r   )r)   r*   r
   r   )r   r   rK   r   rL   r*   r
   r   )
__future__r   r>   r   r   r   urllib.parser   baser	   r   r$   r(   rJ   rX   r   r   r   r   <module>   s   


	
G