
    OEf                         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  e j                  e      Z G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Zy)    N)OrderedDict)NON_FIELD_ERRORS)	force_str)gettext_lazy)Datasetc                       e Zd ZddZy)ErrorNc                 <    || _         || _        || _        || _        y N)error	tracebackrownumber)selfr   r   r   r   s        N/var/www/VTS_Report/venv/lib/python3.12/site-packages/import_export/results.py__init__zError.__init__   s    
"    )NNN)__name__
__module____qualname__r    r   r   r	   r	      s    r   r	   c                   v    e Zd ZdZdZdZdZdZdZdZ	 e
eeeeg      Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)	RowResultz.Container for values relating to a row import.updatenewdeleteskipr   invalidc                     g | _         d | _        d | _        d | _        i | _        d | _        d | _        d | _        d | _        y r   )	errorsvalidation_errordiffimport_type
row_values	object_idobject_reprinstanceoriginalr   s    r   r   zRowResult.__init__'   sV      !% 	        r   c                 <    | j                   t        j                  k(  S )zT
        :return: ``True`` if import type is 'update', otherwise ``False``.
        )r#   r   IMPORT_TYPE_UPDATEr)   s    r   	is_updatezRowResult.is_updateF        9#?#???r   c                 <    | j                   t        j                  k(  S )zQ
        :return: ``True`` if import type is 'new', otherwise ``False``.
        )r#   r   IMPORT_TYPE_NEWr)   s    r   is_newzRowResult.is_newL   s     9#<#<<<r   c                 <    | j                   t        j                  k(  S )zT
        :return: ``True`` if import type is 'delete', otherwise ``False``.
        )r#   r   IMPORT_TYPE_DELETEr)   s    r   	is_deletezRowResult.is_deleteR   r-   r   c                 <    | j                   t        j                  k(  S )zR
        :return: ``True`` if import type is 'skip', otherwise ``False``.
        )r#   r   IMPORT_TYPE_SKIPr)   s    r   is_skipzRowResult.is_skipX   s     9#=#===r   c                 <    | j                   t        j                  k(  S )zS
        :return: ``True`` if import type is 'error', otherwise ``False``.
        )r#   r   IMPORT_TYPE_ERRORr)   s    r   is_errorzRowResult.is_error^   s     9#>#>>>r   c                 <    | j                   t        j                  k(  S )zU
        :return: ``True`` if import type is 'invalid', otherwise ``False``.
        )r#   r   IMPORT_TYPE_INVALIDr)   s    r   
is_invalidzRowResult.is_invalidd   s     9#@#@@@r   c                 2    | j                   | j                  v S )zn
        :return: ``True`` if import type is not 'error' or 'invalid', otherwise
          ``False``.
        )r#   valid_import_typesr)   s    r   is_validzRowResult.is_validj   s    
 4#:#:::r   c           	          |$t        |dd       | _        	 t        |      | _        y y # t        $ r4}t
        j                  t        dt        |      z               Y d }~y d }~ww xY w)Npkz*call to force_str() on instance failed: %s)	getattrr%   r   r&   	Exceptionloggerdebug_str)r   r'   es      r   add_instance_infozRowResult.add_instance_infoq   sc    $XtT:DNW#,X#6 	  
  WQKcRSfTUVVWs   ( 	A%*A  A%N)r   r   r   __doc__r+   r/   r2   r5   r8   r;   	frozensetr>   r   r,   r0   r3   r6   r9   r<   r?   rI   r   r   r   r   r      su    8!O!#"		
>@=@>?A;Wr   r   c                   F    e Zd ZdZd Zed        Zed        Zed        Zy)
InvalidRowzVA row that resulted in one or more ``ValidationError``
    being raised during import.c                     || _         || _        || _        	 |j                  | _        y # t
        $ r t        |j                  i| _        Y y w xY wr   )r   r   valuesmessage_dict
error_dictAttributeErrorr   messages)r   r   r!   rO   s       r   r   zInvalidRow.__init__   sN    %
	L.;;DO 	L/1A1J1JKDO	Ls   )  AAc                 |    | j                   j                         D ci c]  \  }}|t        k7  r|| c}}S c c}}w )zFReturns a dictionary of field-specific validation errors for this row.)rQ   itemsr   )r   keyvalues      r   field_specific_errorsz InvalidRow.field_specific_errors   sB    
 #oo335
U&& J
 	
 
s   8c                 B    | j                   j                  t        g       S )zDReturns a list of non field-specific validation errors for this row.)rQ   getr   r)   s    r   non_field_specific_errorsz$InvalidRow.non_field_specific_errors   s     ""#3R88r   c                 d    d}| j                   j                         D ]  }|t        |      z  } |S )z;Returns the total number of validation errors for this row.r   )rQ   rO   len)r   count
error_lists      r   error_countzInvalidRow.error_count   s8     //002 	%JS_$E	%r   N)	r   r   r   rJ   r   propertyrX   r[   r`   r   r   r   rM   rM   {   sI    #L 
 
 9 9  r   rM   c                       e Zd ZdZd Zy)ErrorRowzEA row that resulted in one or more errors being raised during import.c                      || _         || _        y r   r   r    )r   r   r    s      r   r   zErrorRow.__init__   s    r   N)r   r   r   rJ   r   r   r   r   rc   rc      s
    Or   rc   c                   f     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 xZS )Resultc           	         t         |           g | _        g | _        g | _        g | _        g | _        t               | _        t        t        j                  dft        j                  dft        j                  dft        j                  dft        j                  dft        j                   dfg      | _        d| _        y )Nr   )superr   base_errorsdiff_headersrowsinvalid_rows
error_rowsr   failed_datasetr   r   r/   r+   r2   r5   r8   r;   totals
total_rows)r   argskwargs	__class__s      r   r   zResult.__init__   s    	%i!**A.--q1--q1++Q/,,a0..2	
 r   c                 z    | j                   D cg c]!  }|j                  t        j                  v s |# c}S c c}w r   )rl   r#   r   r>   )r   rs     r   
valid_rowszResult.valid_rows   s+    99Va9U9U(UVVVs   !88c                 :    | j                   j                  |       y r   )rl   appendr   
row_results     r   append_row_resultzResult.append_row_result   s    		$r   c                 :    | j                   j                  |       y r   )rj   ry   )r   r   s     r   append_base_errorzResult.append_base_error   s    &r   c                 J    |s
t               n|}|dgz   | j                  _        y )Nr	   )listro   headers)r   r   s     r   add_dataset_headerszResult.add_dataset_headers   s"     '$&W&-	&9#r   c                 &   |j                         D cg c]  \  }}|	 }}}	 |j                  t        |j                               | j
                  j                  |       y c c}}w # t        $ r |j                  t        |             Y Gw xY wr   )rU   ry   rG   r   rR   ro   )r   r   r   kvr$   s         r   append_failed_rowzResult.append_failed_row   sy    &)iik2FQa2
2	*c%++./ 	"":. 3  	*c%j)	*s   A$$A* *#BBc                     t        fd| j                  D              }| j                  j                  t	        |||             y )Nc              3   B   K   | ]  }j                  |d         yw)z---N)rZ   ).0colr   s     r   	<genexpr>z,Result.append_invalid_row.<locals>.<genexpr>   s     HsswwsE*Hs   )r   r!   rO   )tuplerk   rm   ry   rM   )r   r   r   r!   rO   s     `  r   append_invalid_rowzResult.append_invalid_row   s=     Hd6G6GHH  f7GPVW	
r   c                 P    | j                   j                  t        ||             y )Nre   )rn   ry   rc   )r   r   r   r    s       r   append_error_rowzResult.append_error_row   s    xvfEFr   c                 `    |j                   r"| j                  |j                   xx   dz  cc<   y y N   )r#   rp   rz   s     r   increment_row_result_totalz!Result.increment_row_result_total   s*    !!KK
../14/ "r   c                     t        | j                        D cg c]#  \  }}|j                  s|dz   |j                  f% c}}S c c}}w r   )	enumeraterl   r    )r   ir   s      r   
row_errorszResult.row_errors   s6    2;DII2FU3#**Q

#UUUs
   AAc                 P    t        | j                  xs | j                               S )zReturns a boolean indicating whether the import process resulted in
        any critical (non-validation) errors for this result.)boolrj   r   r)   s    r   
has_errorszResult.has_errors   s!     D$$9(9::r   c                 ,    t        | j                        S )zrReturns a boolean indicating whether the import process resulted in
        any validation errors for this result.)r   rm   r)   s    r   has_validation_errorszResult.has_validation_errors   s     D%%&&r   c                 ,    t        | j                        S r   )iterrl   r)   s    r   __iter__zResult.__iter__   s    DIIr   )r   r   r   r   rw   r|   r~   r   r   r   r   r   r   r   r   r   __classcell__)rt   s   @r   rg   rg      sG    0W%':/
G5V;
'
r   rg   )loggingcollectionsr   django.core.exceptionsr   django.utils.encodingr   django.utils.translationr   rF   tablibr   	getLoggerr   rD   r	   r   rM   rc   rg   r   r   r   <module>r      sc     # 3 + 6 			8	$ dW dWN! !H K Kr   