
    vg                         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e dedefdZd Zd Zej*                  ej,                  d d dZd Zd Zd Zde	fdZy)z)
horilla_automations/methods/methods.py

    N)FieldDoesNotExist	QueryDict)app_installed)Employee)HorillaModel)getattributeF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       7/var/www/horilla/horilla_automations/methods/methods.pyget_related_modelsr      s]    N'') 1 0 0E4F4F!//M!!-01     c                    | j                  dd      \  }}t        ||g      }t        ||      }g }g }t        |j                  j
                        t        |j                  j                        z   D ]  }t        |dd      r|j                  }t        g}	t        r|	j                  t               ||	v sE|j                   d|j                  j                         j                  dd       d	f}
|j                   d
|j                  j                         j                  dd      f}|j                  t        k(  r|j                  |j                   d|j                  j                         j                  dd       df       |j                  |j                   d|j                  j                         j                  dd       df       |j                  |
       |j                  |        t        g}	t        r|	j                  t               ||	v rO|j                  d|j                    df       t        |dg       }||z   }|j                  d|j                   f       t        t#        |            }|||fS )N.   fromlistexclude_from_automationF__get_emailz id z mail field __pk5__employee_work_info__reporting_manager_id__get_emailz's reporting manager.__employee_work_info__reporting_manager_id__pk	get_emailz's mailmail_to_related_fieldspk)rsplit
__import__getattrlistr   fieldsr   r   r   recruitment_installedr   r   nameverbose_name
capitalizereplace__name__set)
model_pathmodule_name
class_namemodulemodel_class	to_fieldsmail_details_choicer   r   modelsemail_fieldmail_detailr(   s                r   generate_choicesr@   "   sz   (//Q7Kzl;F#FJ7KIk''../${7H7H7U7U2VV 8u7?!//MZF$i(&zzl+.))446>>uRHIV
 zzl$'&&113;;E2F &&(2$$$zzl*_`$11<<>FFuRPQQef (..$zzl*XY$11<<>FFuRPQQef   -#**;7=8> ZFi f''(0	
 ")6NPR!S 66	""D+*>*>#?@S^$I);66r   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_classrB   \   s;     )//Q7Kzl;F#FJ7Kr   c                     | xr |S r    xys     r   <lambda>rH   i   s
    a r   c                     | xs |S r   rD   rE   s     r   rH   rH   j   s
    qvA r   )z==z!=andorc                     t        |       }|S r   r   )query_string
query_dicts     r   	querydictrO   n   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   rO   )rM   query_partsresultiparts        r   split_query_stringrW   s   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_conditionr`      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)   )rQ   r   r)   	get_fieldr   is_relationr   )r   
field_pathpartsrV   r   s        r   get_related_field_modelrg      s    T"E 4<KKNNE--d3
 ''E L!  L % s   A..A9)__doc__operatordjango.core.exceptionsr   django.httpr    base.templatetags.horillafiltersr   employee.modelsr   horilla.modelsr   3horilla_views.templatetags.generic_template_filtersr	   r/   recruitment.modelsr   r-   r   r@   rB   eqnerY   rO   rW   r`   rg   rD   r   r   <module>rs      s   
  4 ! : $ ' L ,  l t 77t ++
++
	
#8 r   