
    iZ                     *    d dl Z d dl  G d d      Zy)    N)*c                   l     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z xZS )CmfPluginCsvAssetsMixinc                 J   | j                   j                  d   }	 | j                  ||t        j                        }|s$t        t               d      rt        |   |       y |j                  d      st        d      | j                  ||t        j                        }|s|j                  d      }| j                  |      }| j                  ||t        j                        }|s|j                  d      }| j                  ||      }||d<   |r|j                  n||d<   |j                  d      r| j                  |d      |d<   d	d
i|d<   |j                  d      r| j!                  |       |j                  d      r| j#                  |      |d<   | j%                  d|j                  d            |d<   | j%                  d|j                  d            |d<   | j%                  d|j                  d            |d<   | j%                  d|j                  d            |d<   | j'                  |j                  d            |d<   | j)                  |j                  d            |d<   |j                  d      }|r|d= | j                   j+                  d|        dd| j                   j,                  gg ddd|d   gg}	| j                   j                  j.                  j                  dd       }
|j                  d      rd}
dd|d   g}	n\|j                  d      rd}
dd|d   g}	n@|j                  d      rd}
dd|d   g}	n$|j                  d	      rd}
ddd|d	   gd	d|d	   gg}	|
stt1        j2                  t5        |j                  d            t5        |j                  dd            z   t5        |j                  dd            z   t5        |j                  d d            z   t5        |j                  d!d            z   t5        |j                  d"d            z   t5        |j                  dd            z   t5        |j                  d	d            z   d#z   j7                               j9                         }| j:                  j<                  j?                  |d$%      }|5  | jA                  | j                   t        j                  ||	|
&      \  }}d d d        n1| jA                  | j                   t        j                  ||	|
&      \  }}rV| j                   j+                  d' d(|j                  d	       d)|j                  d       d*|j                  d       d+	       nU| j                   j+                  d, d(|j                  d	       d)|j                  d       d*|j                  d       d+	       |j                  }| j                  ||t        jB                        }|s|j                  d-      }| jE                  ||      }|r5|jF                  jI                          |jF                  jK                  |       | jM                  |      }|r!|jN                  jI                          ||_'        |jP                  r|jS                  d./       |jT                  jW                          t]                y # 1 sw Y   xY w# t        $ rJ}| xjX                  d0z  c_,        | j                   j[                  d1| d2d3       Y d }~t]                y d }~ww xY w)4Nimport_settings_process_rownameu2   Не указано название актива.parent	asset_cat
logic_typeCmfAssetext_idzasset.system:defaultworkflowstatusactivityownership_typedevice_typeenabled_statusoperational_statuslocationresponsiblesupport_groupu[   Попытка создать или обновить актив по параметрам zcmf_import.plugin==)import_originalr   Tmerge_identic_namesFcodeserial_numberimeiOR inv_nophone_numbermarkcodez.lockx   )timeout)
filter_objdont_updateu#   Создан новый актив z ext_id=z code=z name=''u   Найден актив asset_typesTsave_import   u*   Ошибка импорта актива. zERR-0084obj_type)/
cmf_importjson_settings_map_objectmodelsr   hasattrsuperr   get	ExceptionCmfAssetScheme_get_asset_schemeCmfAssetCat_get_asset_catr
   _process_logic_type_calc_workflow_process_activity_get_asset_field_choises_get_asset_location_get_asset_responsiblelogpluginvaluehashlibsha256strencode	hexdigestredis_dbredislockprocess_any_table_fieldsCmfAssetType_get_asset_typer)   loadappend_get_asset_support_groupr   
is_changedsavedpcommit_has_errors	log_error
cmf_commit)selfrowr   assetasset_schemeasset_scheme_objr   asset_cat_objsupport_group_tmp_filterr'   lock_keyrK   	asset_objasset_is_new
asset_typeasset_type_objsupport_group_objsexc	__class__s                      9./modules/settings/models/cmf_plugin_csv_mixins/assets.pyr   z$CmfPluginCsvAssetsMixin._process_row   s   //778IJp	$$S/6??KE57N3G(-99V$ TUU  ++C&BWBWXL$yy2#55lC ((ov?Q?QRI!IIk2	 //	;KLM!.E+6Cm22IYE(O yy&&*&>&>uj&Ql# "*+A BE*yy"##E* yy$$($:$:5$Aj! '+&C&C 		*+'E"# $(#@#@		-($E-  '+&C&C 		*+'E"# +/*G*G$		./+E&' !% 8 8:9N OE* $(#>#>uyy?W#XE-  %		/ : /*OO"}  D  ~E  !F  G
 %dDOO,B,BC/uV}-G #oo;;AAEEF[]bccKyy #!4v7?+#*D%2HI6"#!4v78$#T5?3tU8_5  #>>EIIf-.eii<=>eii345 eii"567 eii;<	=
 eii
B789 eii345 eii"567 "" VX )+  }}**//#/F .2.K.K#*$/ /L /+I|  +/*G*GOOOO& + +H +'	< ##9)HUYYW_M`La b!IIf-.geii6G5HK
 ##.yk%))HBUAV W!IIf-.geii6G5HK  -33))#@S@STJ"YY}5
!11*>NON%%**,%%,,^< "&!>!>?P!Q!'',,.*<	'##40LL! 	s b  	!OO%%<SEB# &   		s8   A[ #Q[ )2[G[ [[ 	\"6\\"c                    |j                         D ]  }|d   }|j                  d      st        d      |j                  d      s|d   |d<   dd|d   g}| j                  | j                  t
        j                  ||      \  }}|j                  j                          |s| j                  |d   |       | j                  |d   |       | j                  |d	   |        y )
Ndataasset_code_prefixuI   У схемы не указан префикс кодов активов.r   =)r&   asset_type_catsr)   
asset_cats)valuesr5   r6   rL   r/   r2   r7   rT   rU   _process_asset_type_cats_process_asset_types_process_asset_cats)rY   asset_schemesr\   asset_scheme_datar`   r]   _s          ri   _process_asset_schemesz.CmfPluginCsvAssetsMixin._process_asset_schemes   s    )002 	WL ,V 4$(()<= kll$((2.?@S.T!(+*C1BCV1WXG"&"?"?%%!"	 #@ #a &&(--l;L.MO_`)),}*EGWX((l)CEUV+	W    c                    | j                   j                  d   }| j                  ||t        j                        }|rg d}|D ]9  }|j                  |d      }|s| j                  j                  |i       }||d<    n j                  dg       }| j                  ||t        j                        }	|	r|	|vr|j                  |	       ||d<   |j                  dg       }
| j                  ||t        j                        }|r|	|d<   ||
vr|
j                  |       |
|d<   |j                  di       }| j                  ||t        j                        }|rfg d	}|D ]/  }|j                  |d      }|s|j                  |i       }||d<    n j                  dg       }|	r|	|vr|j                  |	       ||d<   ||d<   y y )
Nr   )r   rl   r   r    rk   rn   r)   asset_type_catro   r   r   r	   )r/   r0   r1   r2   r7   r5   rt   
setdefaultCmfAssetTypeCatrP   rM   r9   )rY   rZ   r   ru   uniq_fields
uniq_fielduniq_field_valuer\   rn   asset_type_cat_datar)   asset_type_dataro   asset_cat_datar   s                  ri   _prepare_asset_dataz+CmfPluginCsvAssetsMixin._prepare_asset_data   s   //778IJ !,,S/6CXCXYAK) 
#4#8#8R#H ##'#5#5#@#@AQSU#VL+<L( +../@"EO"&"2"23I_I_"`"':/'Q&&':;.=L*+ '**="=K"..sOVEXEXYO4G 01"+5&&7*5L' &)),;J!--c?FDVDVWN8"- J'5'9'9*b'I$'$.$9$9:JB$O	,:	&) #,--0A2"F&+>o+U#**+>?/>	+,)3L&S rx   c                    d }|rg }g d}|D ]h  }|j                  |d      j                         }|s&|dk(  r|j                  d|d|gdd|gg       n"|j                  |d|j                         g        n |r t        j
                  j                  |      }|st        d| d	      |S t        j
                  j                  g d
      }| j                  j                  j                  d       |S )N)r   r   rl   r    r   r   rm   r   filteru/   Не найдена схема активов "uf   ", создайте схему и укажите префикс кода активов в файле.)systemrm   Tu   Не указана схема активов. Установлена схема активов по-умолчанию (системная))
r5   striprP   upperr2   r7   r6   r/   loggerwarning)rY   r\   r]   r`   r~   r   r   s          ri   r8   z)CmfPluginCsvAssetsMixin._get_asset_scheme  s   GAK) 
#/#3#3J#C#I#I#K #!X-z3@P.QTZ\_aqSr'st
C9I9O9O9Q'RS #)#8#8#<#<G#<#L #El^ Tz {     &4488@U8VOO""** _  rx   c           	      8   d }|r|j                  d      xs$ |j                  d      xs |j                  d      }|rH|j                         }t        j                  j                  dd|gdddd| dgdd|gdd	|gggdg
      }|st	        d| d| d      |S )Nr   r   r	   r
   rm   r   LIKE%ILIKE)r   fieldsu1   Не найдена группа активов "u   " в схеме uY   , создайте группу и укажите ID, код или имя в файле.)r5   r   r2   r9   r6   )rY   r   r]   r^   r   s        ri   r:   z&CmfPluginCsvAssetsMixin._get_asset_cat#  s    (}}X6h)--:OhS\S`S`agSh#3#9#9#;  & 2 2 6 6!3(89 %v3C2DA/FG#S*:;#W.>?	 %: !7 ! !G	{Rbcsbt un o 
 rx   c                 D   d }|rg }g d}|D ]Z  }|j                  |d      j                         }|s&|dk(  r|j                  d|d|gdd|gg       n|j                  |d|g        n |r4|j                  dd|g       t        j                  j                  |      }|S 	Nr{   r    r   r   rm   r   r
   r   )r5   r   rP   r2   rM   )rY   rd   r]   re   r`   r~   r   r   s           ri   rN   z'CmfPluginCsvAssetsMixin._get_asset_type?  s    G4K) 
#->>*b#A#G#G#I #!X- $!+S2B C!'.> ?  
C9I'JK #/?@A!'!4!4!8!8!8!Hrx   c                 D   d }|rg }g d}|D ]Z  }|j                  |d      j                         }|s&|dk(  r|j                  d|d|gdd|gg       n|j                  |d|g        n |r4|j                  dd|g       t        j                  j                  |      }|S r   )r5   r   rP   r2   r}   )rY   rz   r]   asset_type_cat_objr`   r~   r   r   s           ri   _get_asset_type_catz+CmfPluginCsvAssetsMixin._get_asset_type_catZ  s    !G4K) 
#1#5#5j"#E#K#K#M #!X- $!+S2B C!'.> ?  
C9I'JK #/?@A%+%;%;%?%?w%?%O"!!rx   c           
         t         j                  j                  j                  |      }|j                  }|s|S |j
                  }|j                         D ci c]  \  }}|j                         | }}}|j                         j                         }|j                  |      }	|	sR||vrN|j                         D cg c]  }d| d
 }
}t        d| d|j                   ddj                  |
             |	xs |xs |S c c}}w c c}w )N"u&   Не найдено значение "u
   " для "u2   ". Укажите одно из значений: z, )r2   r   r   r5   defaultchoicesitemslowerr   rp   r6   captionjoin)rY   
field_namerC   fieldfield_defaultfield_choiseskvr   field_valuerp   s              ri   r>   z0CmfPluginCsvAssetsMixin._get_asset_field_choisesu  s   &&**:6   &++-
1 GGIqL
 

 ##%kk%(uM9(5(<(<(>?1!Ah?F?8z%-- YBBF))FBSATV 
 4e4}4
 @s   D>D
c           	      n   d }|r|j                  d      r|d   j                         }t        j                  j                  dddd| dgdd|gdd|gdd|gg	      }|s1t        j                  j                  dddd| dgd
d|gdd|gg	      }|s"| j
                  j                  d| ddd       |S )Nr   r   r   r   loginr   emailr	   r   r   rm   u7   Не найдена группа владельцев "r   zERR-0085r   r-   )r5   r   r2   	CmfPersonCmfPersonGroupr/   rW   )rY   r   responsible_objresponsible_ext_ids       ri   r@   z.CmfPluginCsvAssetsMixin._get_asset_responsible  s   ;??84!,X!6!<!<!>$..22v+=*>a'@Ag'9:g'9:W&89 3 O #"("7"7";";!6Q/A.B!+DE&89*<=	 #< # #))MN`Maabc' *  rx   c           
         g }|r|j                  d      r|d   }|j                  d      D ]  }|j                         }t        j                  j                  dddd| dgdd|gdd|gd	d|gg
      }|s1t        j
                  j                  dddd| dgdd|gd	d|gg
      }|s#| j                  j                  d| ddd       |j                  |        |S )Nr   ;r   r   r   r   r   r   r	   r   r   rm   u5   Не найдена группа поддержки "r   zERR-0086r   r-   )	r5   splitr   r2   r   r   r/   rW   rP   )rY   support_group_datarf   support_groupsr   support_group_ext_idsupport_group_objs          ri   rQ   z0CmfPluginCsvAssetsMixin._get_asset_support_group  sG   "4"8"8"B/9N!/!5!5c!: A'4':':'<$$*$4$4$8$8!6Q/C.DA+FG '+?@ '+?@*>? %9 %! )(.(=(=(A(A %v3G2H/JK#S*>?#W.BC	  )B )% )OO--OPdOeefg"!+ .  '--.?@9A< "!rx   c                     d }|ry|j                  d      rh|d   j                         }t        j                  j                  dddd| dgdd|gdd|gg	      }|s"| j                  j                  d
| ddd       |S )Nr   r   r   r   r   rm   r	   r   r   u/   Не найдена локация/адрес "r   zERR-0087r   r-   )r5   r   r2   CmfLocationr/   rW   )rY   r   location_objlocation_ext_ids       ri   r?   z+CmfPluginCsvAssetsMixin._get_asset_location  s    X.&x0668O!--11v?*;1'=>S/2Wo6	 2 L  ))EoEVVWX' *  rx   c                     t         j                  |d      }|D ]T  }||d<   ||d<   | j                  | j                  t         j                  |      \  }}|j
                  j                          V y )Nr)   r
   sys_typer
   tree_parent)r2   	CmfFolderrL   r/   r}   rT   rU   )rY   rn   r]   asset_types_folderrz   r   rv   s          ri   rq   z0CmfPluginCsvAssetsMixin._process_asset_type_cats  sz    #--5EP]-^- 	+N'7N8$,>N=)$($A$A&&%!
 !!((*	+rx   c                     |D ]g  }||d<   | j                  |d   |      |d<   | j                  | j                  t        j                  |      \  }}|j
                  j                          i y )Nr
   rz   )r   rL   r/   r2   rM   rT   rU   )rY   r)   r]   rd   re   rv   s         ri   rr   z,CmfPluginCsvAssetsMixin._process_asset_types  sv    % 	'J#3Jx +/+C+CJO_D`br+sJ'( $ = =##!NA
 $$&	'rx   c                 P   t         j                  j                  |d      }|j                         D ]  }|d   }||d<   ||d<   |j                  d      r| j	                  |d      |d<   n#t         j
                  j                  d	      |d<   | j                  | j                  t         j                  |      \  }}|j                  j                          |s|d
   D ]2  }| j                  ||      }	|	s|j                  j                  |	       4 |j                  d        y )Nassetsr   rk   r
   r   default_logic_typer9   zasset.device:default)r   rn   Tr*   )r2   r   r5   rp   r;   CmfLogicTyperL   r/   r9   rT   rU   r   asset_types_catrP   rS   )
rY   ro   r]   assets_folderr   r   r^   rv   rz   r   s
             ri   rs   z+CmfPluginCsvAssetsMixin._process_asset_cats  s2   ((,,4Dx,X#**, 	5I&v.N'7N8$,9N=)!!"677;7O7OP^`m7n347=7J7J7N7NTj7N7k34#<<"" M1
 ##%&/0A&B QN)-)A)A.Rb)c&)%55<<=OPQ ""t"4+	5rx   )__name__
__module____qualname__r   rw   r   r8   r:   rN   r   r>   r@   rQ   r?   rq   rr   rs   __classcell__)rh   s   @ri   r   r      sO    unW0.4` >86"650B#"J2
+	'5rx   r   )rD   cmf.includer    rx   ri   <module>r      s     V5 V5rx   