B
    ?c[8                 @   s   d dl 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 dlmZ d d	lmZ d d
lmZ dd Zdd ZG dd dejZe	ejeddd Ze	ejeddd ZdS )    N)models)signals)settings)receiver)gettext_lazy)	force_str)CountryField)db_const)Featurec             C   s   | j }d|S )Nz"parent_vendor_software_logo/{}.jpg)hex_idformat)selffilenamecompany_hex_id r   :G:\easytimepro\master/mysite/cloud\models\model_company.py/upload_parent_vendor_software_logo_path_handler   s    r   c             C   s   | j }d|S )Nz!parent_vendor_company_logo/{}.jpg)r   r   )r   r   r   r   r   r   .upload_parent_vendor_company_logo_path_handler   s    r   c                   sx  e Zd ZejeddejddZej	ede
jddddZejede
jddd	Zej	ed
e
jddd	ZeedZej	ede
jddd	Zej	ede
jddd	Zejede
jdddZeeZejddZejddZ ejdddZ!ejdddZ"ejdddZ#ejdddZ$ejdddZ%ej	ede
jddd	Z&ej	ede
j'ddddZ(ej	ede
j)ddd	Z*ej	ede
j+ddd	Z,ej	ede
j'ddddZ-ej	ede
j+ddd	Z.ej	ede
j'ddddZ/ej	ede
j0ddddZ1ej	ede
j2ddddZ3ej4ede5e
j6ddddZ7ej4ede8e
j6ddddZ9d d! Z:e;d"d# Z<G d$d% d%Z=d) fd'd(	Z>  Z?S )*CompanyZcompany_field_id$   T)
max_lengthdefaultZprimary_keyZcompany_field_nameF)r   uniquenullblankZcompany_field_sub_domain)r   r   r   Zcompany_field_address_1Zcompany_field_countryZcompany_field_provinceZcompany_field_cityZcompany_field_payment_type)choicesr   r   )Zauto_now_add)r   r   Zcompany_field_company_addressZcompany_field_company_phone)r   r   r   ZeditableZcompany_field_company_cnrZcompany_field_owner_nameZcompany_field_owner_phoneZcompany_field_contact_nameZcompany_field_contact_phoneZcompany_field_business_typeZcompany_field_parent_vendorZ(company_field_parent_vendor_company_logo   )Z	upload_toZstorager   r   r   Z)company_field_parent_vendor_software_logoc             C   s   | j S )N)name)r   r   r   r   __str__   s    zCompany.__str__c             C   s   | j jS )N)idhex)r   r   r   r   r      s    zCompany.hex_idc               @   s    e Zd ZdZedZeZdZdS )zCompany.MetaZ	personnelZpsnl_model_company)r   N)__name__
__module____qualname__Z	app_label_Zverbose_nameZverbose_name_pluralZorderingr   r   r   r   Meta   s   r%   Nc          #      s  t t| |||| dd l}ddlm} ddlm} ddlm	} ddl
m}	 ddlm}
m}m} ddlm} ddlm} dd	lm} dd
lm}m} ddlm} ddlm} ddlm} ddlm }m!} ddl"m#} ddlm$} ddl%m&} |j'j(| d) dkrtj') dkr|| ddt*d dd  || dt+t*ddd  || ddt*d dd  |	| ddt*d dd  |
| dt,| j-.d d! t/0|d"  x$|D ]}|f d#| i|  qW || dd$dt/0|t/0|d%jdd& || d'd|1d(ddd)d)d)d)d*ddddddd)dd)ddddddd*dd|1ddd|1d+dd|1d,dddd-  || d.ddddddddd/
  || d0ddddddddd/
  t/0|}d1|t,| j-.d d!d2}||j2j3|\}}||| || j-d3d3d3d3d4  d S )5Nr   )Area)
Department)Position)Location)AttRuleLeaveCategoryAttReportSetting)DEFAULT_ATT_RULE_PARAMS)DEFAULT_REPORT_PARAMS)DEFAULT_LEAVE_DATA)	FUNC_KEYS	ATT_ITEMS)TimeInterval)AttShift)DeviceConfig)get_sql
p_mutiexec)	customSql)ReportParam)getSQL_insert_new)company   1z%sZarea_name_defaultValueT)r:   Z	area_codeZ	area_name
is_defaultZdefault_department)r:   Z	dept_codeZ	dept_namer=   Zposition_default_value)r:   Zposition_codeZposition_namer=   Zlocation_default_value)r:   Zlocation_codeZlocation_namer=   Zglobal_att_rule_- )r:   
param_nameparam_valuer:      )r:   Z
resign_empZ
short_dateZ
short_timefunc_keyZatt_item)force_insertzGeneral Time Table	   <   i        )r:   aliasZuse_modeZin_timeZin_ahead_marginZin_above_marginZout_ahead_marginZout_above_marginZdurationZin_requiredZout_requiredZ
allow_lateZallow_leave_earlyZwork_dayZearly_inZmin_early_inZlate_outZmin_late_outZovertime_lvZovertime_lv1Zovertime_lv2Zovertime_lv3Zmultiple_punchZavailable_intervalZwork_time_durationrC   Z	work_typeZ
day_changeZfirst_half_out_timeZsecond_half_in_timer=   zGeneral Shift)
r:   rI   Z
cycle_unitZshift_cycleZwork_weekendZweekend_typeZwork_day_offZday_off_typeZ
auto_shiftr=   ZWeekoffZreport_setting)r@   rA   
company_idi'  )rJ   Ztransaction_retentionZcommand_retentionZdev_log_retentionZupload_log_retention)4superr   savedatetimeZ"mysite.personnel.models.model_arear&   Z(mysite.personnel.models.model_departmentr'   Z&mysite.personnel.models.model_positionr(   Z&mysite.personnel.models.model_locationr)   Zmysite.att.modelsr*   r+   r,   Zmysite.att.models.model_attruler-   Z#mysite.att.models.model_reportparamr.   Z%mysite.att.models.model_leavecategoryr/   Z%mysite.att.models.model_reportsettingr0   r1   Z$mysite.att.models.model_timeintervalr2   Z mysite.att.models.model_attshiftr3   Zmysite.iclock.modelsr4   Zmysite.sql_utilsr5   r6   Zmysite.utilsr7   r8   Zmysite.core.zktoolsr9   Zobjectsfiltercountr$   r   strr   replacejsondumpstimeZ_metaZdb_table)r   rD   Zforce_updateZusingZupdate_fieldsrM   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   datavalZinsert_report_paramZsqlparams)	__class__r   r   rL      s    (






zCompany.save)FFNN)@r!   r"   r#   r   Z	UUIDFieldr$   uuidZuuid1r   Z	CharFieldr	   ZMAX_COMPANY_NAMEr   ZURLFieldZMAX_COMPANY_DOMAINZ
sub_domainZMAX_COMPANY_ADDRESSZ	address_1r   countryZMAX_COMPANY_PROVINCEprovinceZMAX_COMPANY_CITYcityZIntegerFieldZCOMPANY_PAYMENT_TYPEZpayment_typeZManyToManyFieldr
   ZfeatureZDateTimeFieldZsubscription_start_dateZsubscription_end_dateZmax_employees_limitZmax_devices_limitZmax_transactions_limitZmax_mobile_applications_limitZmax_whatsapp_push_limitcompany_addressZMAX_COMPANY_PHONEcompany_phoneZMAX_COMPANY_CNRcompany_cnrZMAX_OWNER_NAME
owner_nameZowner_phoneZcontact_nameZcontact_phoneZMAX_COMPANY_BUSINESSbusiness_typeZMAX_PARENT_VENDORZparent_vendorZ
ImageFieldr   ZMEDIA_LOGO_STORAGEZparent_vendor_company_logor   Zparent_vendor_software_logor   propertyr   r%   rL   __classcell__r   r   )rX   r   r   !   s   
r   )senderc             K   s$  t jr ddlm} |r|j|jt|j|jr4|jnd|jd|j	rH|j	nd|j
rV|j
nd|jrd|jnd|jrr|jnd|jjd}d}|||d d}| }	n|j}
d	}|
d
dd}||d |d}| }	|	d r |	d d d d }|j|j|j|j	|j
d}d|}|||d d}| }	d S )Nr   )!HttpRequestInterfaceForIoTServicezMinerva IoTzrobin.chen@zkteco.comr?   )r   coderegistrationNumberownerindustryemailphoneaddressr\   staterZ   z9 https://authorization.minervaiotdev.com/api/v2.0/company)bodyrW   z@ https://authorization.minervaiotdev.com/api/v2.0/company/searchr;   )r   
pageNumberrj   rU   r:   r   )rg   rh   ri   rk   rl   z< https://authorization.minervaiotdev.com/api/v2.0/company/{})r   CLOUD_VERSION"mysite.cloud.minerva_iot_interfacere   r   rP   r   r`   ra   r^   r]   r\   r[   rZ   Zpostgetr_   r   Zput)rd   instanceZcreatedrawkwargsre   rn   urlinterface_objectcontentr   rW   rJ   r   r   r   /save_or_update_company_to_authorization_serviceD  s@    



ry   c       
      K   s|   t jrxddlm} |j}d}|ddd}||d |d}| }|d rx|d d	 d d
 }	|	rxd|	}||}| }d S )Nr   )re   z@ https://authorization.minervaiotdev.com/api/v2.0/company/searchr;   zrobin.chen@zkteco.com)r   ro   rj   )rn   rW   rU   r:   r   z< https://authorization.minervaiotdev.com/api/v2.0/company/{})r   rp   rq   re   r   rr   r   delete)
rd   rs   ru   re   r   rv   rW   rw   rx   rJ   r   r   r   'delete_company_to_authorization_servicep  s    
r{   )rY   rR   Z	django.dbr   Zdjango.db.modelsr   Zdjango.confr   Zdjango.dispatch.dispatcherr   Zdjango.utils.translationr   r$   Zdjango.utils.encodingr   Zdjango_countries.fieldsr   Zmysite.personnelr	   Zmysite.cloud.modelsr
   r   r   ZModelr   Z	post_savery   Zpost_deleter{   r   r   r   r   <module>   s"     %,