
    siC#                        d Z 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	Z e
d
      rddlmZ dZdedefdZddlmZ d Zd Zej0                  ej2                  d d dZd Zd Zd ZdefdZd Zy)z)
horilla_automations/methods/methods.py

    N)FieldDoesNotExist)models	QueryDict)app_installed)Employee)HorillaModelFrecruitment)	CandidateTmodelreturnc                     g }| j                   j                         D ]D  }|j                  s|j                  s|j                  s(|j
                  }|j                  |       F |S N)_meta
get_fieldsone_to_many
one_to_onemany_to_manyrelated_modelappend)r   related_modelsfieldr   s       G/var/www/python-projects/worksol/horilla_automations/methods/methods.pyget_related_modelsr      s]    N'') 1 0 0E4F4F!//M!!-01     )$get_forward_relation_paths_separatedc                    | j                  dd      \  }}t        ||g      }t        ||      }t        |t              \  }}t        |t
              \  }}||z   |z   |z   }	g }
g }|	D ]g  }t        |d   dd      r|
j                  |d    dd|d   j                  j                   d	|d   j                  j                         j                  d
d       df       |d   j                  r||d    d|d   j                  j                         j                  d
d       dfgz  }|d   j                  t        k(  s|
j                  |d    d|d   j                  j                         j                  d
d       df       |j                  |d    d|d   j                  j                         j                  d
d       df       j |t        k(  r$|
j                  	 	 d       |j                  d       |t
        k(  r|j                  d       | dk(  r|
j                  d       n| dk(  r|
j                  d       g }t        |      }||z   }t        t!        |            }|
||fS )z!
    Generate mail to choice
    .   fromlistexclude_from_automationFr   __get_email(z) z id z's mail __pkz (Template context)5__employee_work_info__reporting_manager_id__get_emailz / Reporting Manager's mail .__employee_work_info__reporting_manager_id__pkz( / Reporting Manager (Template context) )pkr   )r)   r   zemployee.models.Employee)	get_emailzEmployee's mailzrecruitment.models.Candidate)r*   zCandidate's mail)3employee_work_info__reporting_manager_id__get_emailzReporting Manager's mail )rsplit
__import__getattrr   r   r   r   r   __name__verbose_name
capitalizereplacer   r   get_textfield_pathslistset)
model_pathmodule_name
class_namemodulemodel_classemployee_fk_pathsemployee_m2m_pathscandidate_fk_pathscandidate_m2m_paths
all_fieldsall_mail_to_fieldmail_details_choicefield_tuple	to_fieldstext_area_fieldss                  r   generate_choicesrE   %   s    )//Q7Kzl;F#FJ7K -QX-))
 /SY/++
 	
	
	 	  ! {1~'@%H$$"1~&k2A,,556bQ9T9T9_9_9a9i9ijopr9s8tt|} q>..#&q>*$/&q>66AACKKERTUVVij( # q>//8;%,,*1~..cd*1~::EEGOOPUVXYZZvw (..*1~..\]*1~::EEGOOPUVXYZ  [C  D3@ h  E+	
 	""#56i""#67//  !AB	5	5  !BCIN +;7-0@@ S^$I1;>>r   c                 d    | j                  dd      \  }}t        ||g      }t        ||      }|S )zI
    method to return the model class from string 'app.models.Model'
    r   r   r    )r,   r-   r.   )r6   r7   r8   r9   r:   s        r   get_model_classrG      s;     )//Q7Kzl;F#FJ7Kr   c                     | xr |S r    xys     r   <lambda>rM      s
    a r   c                     | xs |S r   rI   rJ   s     r   rM   rM      s
    qvA r   )z==z!=andorc                     t        |       }|S r   r   )query_string
query_dicts     r   	querydictrT      s    <(Jr   c                     | j                  d      }g }t        |      D ]B  \  }}|dk7  r|j                  t        d|z                )|j                  t        |             D |S )zA
    Split the query string based on the "&logic=" substring
    z&logic=r   )split	enumerater   rT   )rR   query_partsresultiparts        r   split_query_stringr\      se     $$Y/KF[) +46MM)I$456MM)D/*	+
 Mr   c                 ^    t         j                  |      }|t        d|        || |      S )NzInvalid operator: )operator_mapget
ValueError)value1operator_strvalue2op_funcs       r   evaluate_conditionre      s7    |,G-l^<==66""r   c                     |j                  d      }|D ]U  }|dk(  r| j                  j                  }n	 | j                  j                  |      }|j
                  r|j                  } T | S  | S # t        $ r  w xY w)N__r)   )rV   r   r)   	get_fieldr   is_relationr   )r   
field_pathpartsr[   r   s        r   get_related_field_modelrl      s    T"E 4<KKNNE--d3
 ''E L!  L % s   A..A9c                 ,    g dfd	 |        S )z2
    get all text field mapping / or relation
    c                    | j                   j                         D ]  }t        |t        j                        r}j                  ||j                  z   |j                         |j                  j                         z   j                  dd      j                  dd      j                  dd       df       t        |t        j                        s |j                  ||j                  z   dz           y )Nrg   z > _idr%   _ z (As a mail template))r   r   
isinstancedjango_models	TextFieldr   namer1   r2   
ForeignKeyr   )r   prefixr   pathstraverses      r   ry   z%get_textfield_paths.<locals>.traverse   s    [[++- 		JE%!8!89+"--/%**2G2G2IIRRSWX]^ffglmopxxy|  ~A  B  C  CX  Y E=#;#;<,,fuzz.AD.HI		Jr   )r%   rI   )r   rx   ry   s    @@r   r3   r3      s     E
J UOLr   ) __doc__operatordjango.core.exceptionsr   	django.dbr   rs   django.httpr    base.templatetags.horillafiltersr   employee.modelsr   horilla.modelsr	   recruitment_installedrecruitment.modelsr   r4   r   .horilla_automations.methods.recursive_relationr   rE   rG   eqner^   rT   r\   re   rl   r3   rI   r   r   <module>r      s   
  4 - ! : $ ' , l t 
F?R ++
++
	
#8 *r   