
    1i                         d dl m Z  d dlmZmZ d dlmZ d dlmZmZm	Z	m
Z
mZ  G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Zy)    )datetime)OptionalList)UUID)	BaseModelField
ConfigDictcomputed_fieldfield_validatorc                   j    e Zd ZU dZeed<   eed<   eed<   eed<   dZee   ed<   e	ed<    e
d	
      Zy)VendorSimplez*Simple vendor schema for nested responses.idname
brand_nameemailNwebsite_url	is_activeTfrom_attributes)__name__
__module____qualname____doc__r   __annotations__strr   r   boolr	   model_config     ;/var/www/html/marco-python-backend/app/schemas/violation.pyr   r      s6    4H
IOJ!%K#%Od3Lr   r   c                   H   e Zd ZU  edd      Zeed<    edd      Zeed<    edd      Z	eed<    edd      Z
eed	<   eed
<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<    ed      Zeed<    edd      Zee   ed<   y)ViolationBase.   
min_lengthproduct_namer   gtmspscraped_priceurlviolation_dateN
product_id	vendor_idvendor_namemarketplacebarcode_numberreference_id
registered)defaultsource_typePack count for this violationr4   descriptionpacks)r   r   r   r   r&   r   r   r)   floatr*   r+   r   r-   r   intr.   r   r/   r0   r1   r2   r5   r9   r   r   r    r"   r"      s    ca0L#0sq!C! +M5+SQ'C' $J$ $Ix~$!%K#%!%K#%$(NHSM("&L(3-&\2K2 8WXE8C=Xr   r"   c                       e Zd Zy)ViolationCreateN)r   r   r   r   r   r    r=   r=   #   s    r   r=   c                      e Zd ZU  edd      Zee   ed<    edd      Zee	   ed<    edd      Z
ee	   ed<   dZee   ed	<   dZee   ed
<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   dZee   ed<   y)ViolationUpdateNr#   r$   r&   r   r'   r)   r*   r+   r,   r-   r/   r0   r1   r2   )r   r   r   r   r&   r   r   r   r)   r:   r*   r+   r,   r   r-   r;   r/   r0   r1   r2   r   r   r    r?   r?   '   s    "'";L(3-; !,C%,%*4A%6M8E?6C#)-NHX&- $J$!%K#%!%K#%$(NHSM("&L(3-&r   r?   c                      e Zd ZU dZeed<   eed<   eed<   eed<   eed<   eed<   dZ	e
e   ed	<   dZe
e   ed
<   dZe
e   ed<   dZe
e   ed<   dZe
e   ed<   dZe
e   ed<   eed<    edd      Ze
e   ed<   dZe
e   ed<   dZe
e   ed<   dZeed<   dZe
e   ed<   dZe
e   ed<   eed<   eed<   dZe
e   ed<    edd      ed               Zeedefd               Z e d!"      Z!y)#ViolationResponsez1Base violation response with all required fields.r   r&   r)   r*   r+   r,   Nr-   r.   r/   r0   r1   r2   r5   r#   r6   r7   r9   price_differencepercentage_differenceconfirmation_countlast_confirmed_datenotification_sent_at
created_at
updated_atvendorafter)modec                     |r|S |j                   j                  d      r4|j                   j                  d      r|j                   d   j                  S |S )zQFor registered violations, get vendor_name from vendor relationship if available.rI   r.   )datagetr   )clsvinfos      r    populate_vendor_namez&ViolationResponse.populate_vendor_nameM   sE    
 H99=="tyy}}['A99X&+++r   returnc                 "    | j                   rdS dS )z2Return status based on notification_sent_at field.notifiedopen)rF   )selfs    r    statuszViolationResponse.statusY   s     "66zBFBr   Tr   )"r   r   r   r   r   r   r   r:   r   r-   r   r;   r.   r/   r0   r1   r2   r   r9   rB   rC   rD   rE   rF   rI   r   r   classmethodrR   r
   propertyrX   r	   r   r   r   r    rA   rA   4   sM   ;H	J	H $J$ $Ix~$!%K#%!%K#%$(NHSM("&L(3-& 8WXE8C=X(,huo,-18E?1.2(+2/3(8,3%)FH\")]1  2 C C  C d3Lr   rA   c                   <    e Zd ZU ee   ed<   eed<   eed<   eed<   y)ViolationListResponseitemstotalpagelimitN)r   r   r   r   rA   r   r;   r   r   r    r\   r\   b   s    !""J
IJr   r\   N)r   typingr   r   uuidr   pydanticr   r   r	   r
   r   r   r"   r=   r?   rA   r\   r   r   r    <module>rd      s_     !  R R	49 	4YI Y 	m 	
'i 
'+4	 +4\I r   