
    nj@                       d dl mZ d dlmZ d dlmZ d dl d dlmZ d dl	 d dl
 d dl d dl d dlmZ d dlmZ d dlmZ d d	lmZ d d
lZd dlmZmZ d dlmZ  G d dej4                        Z G d dej8                        Z G d dej8                        Z G d dej8                        Z G d dej8                        Z  G d dej8                        Z! G d dej8                        Z" G d dej8                        Z# G d dej8                        Z$ G d d ejJ                        Z& G d! d"ej8                        Z' G d# d$ej8                        Z( G d% d&ej8                        Z) G d' d(ej8                        Z* G d) d*ej8                        Z+ G d+ d,ej8                        Z, G d- d.ej8                        Z- G d/ d0ej8                        Z. G d1 d2ej8                        Z/ G d3 d4ej8                        Z0 G d5 d6ej8                        Z1 G d7 d8ej8                        Z2 G d9 d:ej8                        Z3 G d; d<ej8                        Z4 G d= d>ej8                        Z5 G d? d@ej8                        Z6 G dA dBej8                        Z7 G dC dDej8                        Z8 G dE dFej8                        Z9 G dG dHej8                        Z: G dI dJej8                        Z; G dK dLej8                        Z< G dM dNej8                        Z= G dO dPej8                        Z> G dQ dRej8                        Z? G dS dTej8                        Z@ G dU dVej8                        ZA G dW dXej8                        ZBy
)Y    )Image)forms)apps)*)CheckboxInput)inlineformset_factory)CKEditorWidget)RegexValidator)ValidationErrorN)DecimalInvalidOperation)URLValidatorc                         e Zd Zd fd	Z xZS )MultiFileInputc                 B    t         |   |       d| j                  d<   y )Nmultiple)super__init__attrs)selfr   	__class__s     OC:\Users\Saasvaap\Desktop\Akash\Saasvaap\DEMO\Navya-Bakers\adminportal\forms.pyr   zMultiFileInput.__init__   s    !+

:    )N)__name__
__module____qualname__r   __classcell__r   s   @r   r   r      s    , ,r   r   c                      e Zd Z G d d      Z ej
                  d ej                  ddi      d      Z ej
                  d	 ej                  ddi      
      Z ej                  d ej                  ddi      
      Z
 ej                  g d ej                  ddd            Z ej
                  d ej                  ddi      
      Z ej                  ddg ej                  ddd            Zd Zd Zd Zy)UserFormc                       e Zd ZeZdZy)UserForm.Meta
first_name	last_nameemail	user_typephone_numberstatusNr   r   r   Usersmodelfields r   r   Metar"          
r   r/   r$   classform-controlr   Tlabelwidgetrequiredr%   r5   r6   r&   ))Super Adminr9   )	NBC Adminr:   )
Shop Adminr;   )PU Adminr<   form-control form-selectuser_type-selectr1   idchoicesr6   r(   activeActiveinactiveInactivestatus-selectc                 B   | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      st        j                  d      t        j                  dd|      }|j                         }|S 	Nr$      2   4First name must be between 1 and 50 characters long.^[a-zA-Z\s\'-]+$HFirst name may only contain alphabets, spaces, hyphens, and apostrophes.\s+ 	cleaned_datagetlenr   r   rematchsub
capitalizer   r$   capitalize_first_names      r   clean_first_namezUserForm.clean_first_nameK       &&**<8
z?Q#j/B"6''F  xx+Z8''Z  VVFC4
 * 5 5 7$$r   c                 B   | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      st        j                  d      t        j                  dd|      }|j                         }|S 	Nr%   rL   rM   rN   rO   rP   rQ   rR   rS   r   r%   capitalize_last_names      r   clean_last_namezUserForm.clean_last_nameY       %%))+6	y>AY"!4''F  xx+Y7''Z  FF63	2	(335##r   c                 ~    | j                   j                  d      }t        j                  d|      st	        d      |S Nr(   ^\+?1?\d{9,15}$RPhone number must be entered in the format: '+999999999'. Up to 15 digits allowed.rT   rU   rW   rX   r   r   r(   s     r   clean_phone_numberzUserForm.clean_phone_numberg   ?    ((,,^<xx*L9!d  r   N)r   r   r   r/   r   	CharField	TextInputr$   r%   
EmailFieldr&   ChoiceFieldSelectr'   r(   r)   r]   rc   rk   r.   r   r   r    r       s"   	
 	
 !ug~%>?J  /%//.8Q"RI EoeooWn4MNE "!!
 u||6>PQ

I #5??_U__G^;T%UL U%'?@u||6oN
F%$r   r    c                      e Zd Z G d d      Z ej
                  d ej                  ddi      d      Z ej
                  d	 ej                  ddi      
      Z ej                  d ej                  ddd      
      Z
 ej
                   ej                  dddd            Z ej
                  d ej                  ddi      
      Z ej                  ddg ej                  ddd            Zd Zd Zd Zy)UserEditFormc                       e Zd ZeZdZy)UserEditForm.Metar#   Nr*   r.   r   r   r/   ru   q   r0   r   r/   r$   r1   r2   r3   Tr4   r%   r8   r&   readonlyr1   rv   r>   r1   r@   rv   r6   r(   rC   rF   r=   rI   r?   rA   c                 B   | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      st        j                  d      t        j                  dd|      }|j                         }|S rK   rS   r[   s      r   r]   zUserEditForm.clean_first_name   r^   r   c                 B   | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      st        j                  d      t        j                  dd|      }|j                         }|S r`   rS   ra   s      r   rc   zUserEditForm.clean_last_name   rd   r   c                 ~    | j                   j                  d      }t        j                  d|      st	        d      |S rf   ri   rj   s     r   rk   zUserEditForm.clean_phone_number   rl   r   Nr   r   r   r/   r   rm   rn   r$   r%   ro   r&   r'   r(   rp   rq   r)   r]   rc   rk   r.   r   r   rs   rs   p   s   	
 	
 !ug~%>?J  /%//.8Q"RI Eu~:%VWE  u'(&
I #5??_U__G^;T%UL U%'?@u||6oN
F%$r   rs   c                   
    e Zd Z fdZ G d d      Z ej                  d ej                  ddi      d	      Z ej                  d
 ej                  ddi      d	      Z	 ej                  d ej                  ddi      d	      Z
 ej                  ej                  j                  d      j                          ej                   ddd      ddi      Z ej                  d ej                  ddi      d	      Z ej                  d ej                  ddi      d	      Z ej                  d ej                  ddi      d	      Z ej                  d ej                  ddi      d	      Z ej,                  d ej                  ddd      d	      Z ej                  d ej                  ddd      d	      Z ej                  d ej                  ddd      d	      Z ej                  d ej                  ddi      d	      Z ej6                  d  ej                  ddi      d	      Z ej                  d! ej                  ddi      d	      Z ej<                  d"d#g ej>                  d$d%d&      d'      Z  ejB                  d( ejD                  ddi      dd)*      Z# ej<                  d+d,g ej>                  d$d-d&      d'      Z$d. Z%d/ Z&d0 Z'd1 Z(d2 Z) xZ*S )3ShopFormc                     t        |   |i | |rd|d   ^|d   j                         }|j                  d|j	                  d      D cg c]  }|j                         dk7  s| c}       || _        y y y c c}w )Nr   unit_admin_user )r   r   copysetlistgetliststripdata)r   argskwargsr   vr   s        r   r   zShopForm.__init__   s    $)&)DG'7<<>DLL! LL):;O;qqwwyB;O DI (4 Ps   
A8
#A8
c                       e Zd ZeZdZy)ShopForm.Meta)	unit_nameunit_location	unit_coder   streetcitydistrictstate_or_provincepin_codelatitude	longitude
contact_nor&   gstdelivery_modedelivery_radiusr)   N)r   r   r   Shopr,   r-   r.   r   r   r/   r      s    
r   r/   r   r1   r2   r3   Tr4   r   r   r;   )r'   10r1   sizer7   +Please select at least one shop admin user.querysetr6   error_messagesStreetr   DistrictstatePin Code6r1   
max_lengthr   rv   rw   r   Contact NumberFEmail IDGSTIN)Shop ownr   )Third partyr   r=   delivery_mode_selectr?   rB   r6   r7   zDelivery Radius (km)g        )r5   r6   r7   initial)Openr   )Closer   rI   c                 J   | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      st        j                  d      t        j                  d|      rt        j                  d      |S )	Nr      x   4Unit name must be between 3 and 120 characters long.^[a-zA-Z0-9\s@.,-]+$pUnit name may only contain alphabets, numerics, spaces, and some special characters like '@', '.', ',', and '-'.\s{2,}Consecutive spaces not allowed)rT   rU   rV   r   r   rW   rX   search)r   	shop_names     r   clean_unit_namezShopForm.clean_unit_nameC  s    %%))+6	y>AY#!5''F  xx/;'' C  99Y	*''(HIIr   c                     | j                   j                  d      }t        |      dk7  rt        j                  d      d}t        j                  ||      st        j                  d      |S )Nr      z!GSTIN must be 15 characters long.z9^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$zInvalid GSTIN format.)rT   rU   rV   r   r   rW   rX   )r   r   gst_patterns      r   	clean_gstzShopForm.clean_gstQ  s_    ##E*s8r>''(KLLRxxS)''(?@@
r   c                     | j                   j                  d      }|s|S t        j                  d|      st	        d      |S Nr   rg   rh   ri   rj   s     r   clean_contact_nozShopForm.clean_contact_noZ  sH    ((,,\:xx*L9!d  r   c                 p    | j                   j                  d      }|dk  rt        j                  d      |S )Nr   r   z*Delivery radius must be a positive number.rT   rU   r   r   )r   r   s     r   clean_delivery_radiuszShopForm.clean_delivery_radiuse  s9    ++//0ABQ''(TUUr   c                 J   | j                   j                  d      }|st        d      t        j                  j                  |      j                         }| j                  r<| j                  j                  r&|j                  | j                  j                        }|j                         rtg }|D ]M  }|j                  |      j                         s$|j                  |j                   d|j                          O dj                  |      }t        d| d	      |S )
Nr   r   )unit_admin_user__in)pk)r   rR   , zShop Admin(s) z% is already assigned to another shop.)rT   rU   r   r   objectsfilterdistinctinstancer   excludeexistsappendr$   r%   join)r   r   shop_qsusersadmin	name_lists         r   clean_unit_admin_userzShopForm.clean_unit_admin_userk  s   ++//0AB!"OPP ,,%% / & 

(* 	
 ==T]]--oo)9)9o:G>>E(>>%>8??ALLE$4$4#5Qu6G!HI ) 		%(I! +PQ  r   )+r   r   r   r   r/   r   rm   rn   r   r   r   ModelMultipleChoiceFieldr+   r   r   allSelectMultipler   r   r   r   r   IntegerFieldr   r   r   r   ro   r&   r   rp   rq   r   
FloatFieldNumberInputr   r)   r   r   r   r   r   r   r   s   @r   r   r      sT   
 
,  ug~%>?I
 $EOOug~%>?M
  ug~%>?I
 5e44%%%=AAC#u##ND*QR"$QRO
 U__ug~%>?F
 5??ug~%>?D
 uug~%>?H
 (ug~%>?
 "u!!u~S%QRH
 uu~:%VWH
  u~:%VWI
 !ug~%>?J
 Eug~%>?E
 %//ug~%>?C
 &E%%)+IJu||3,
 	M 'e&&$ u  '@A	O U!#56u||6oN
 F	r   r   c                   P     e Zd Z G d d      Z fdZd Zd Zd Zd Zd Z	 xZ
S )	BankDetailsFormc                       e Zd ZeZg dZy)BankDetailsForm.Meta)account_name	bank_namebranch_name	ifsc_codeaccount_numberN)r   r   r   BankDetailsr,   r-   r.   r   r   r/   r     s    
r   r/   c                 ,   t        |   |i | | j                  d   j                  j                  j                  ddi       | j                  d   j                  j                  j                  ddi       | j                  d   j                  j                  j                  ddi       | j                  d   j                  j                  j                  ddi       | j                  d   j                  j                  j                  ddi       y )Nr   r1   r2   r   r   r   r   )r   r   r-   r6   r   update)r   r   r   r   s      r   r   zBankDetailsForm.__init__  s    $)&)N#**0077.8QRK ''--44g~5NOM"))//667PQK ''--44g~5NO$%,,22997N:STr   c                    | j                   j                  dd      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      st	        j
                  d      |S )Nr   r   rL   d   z7Account name must be between 1 and 100 characters long.rO   zJAccount name can only contain alphabets, spaces, hyphens, and apostrophes.rT   rU   r   rV   r   r   rW   rX   )r   r   s     r   clean_account_namez"BankDetailsForm.clean_account_name  s    ((,,^R@FFH|q C$5$;''I  xx+\:''\  r   c                    | j                   j                  dd      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      st	        j
                  d      |S )Nr   r   rL   r   z4Bank name must be between 1 and 100 characters long.^[a-zA-Z\s]+$z0Bank name can only contain alphabets and spaces.r   )r   r   s     r   clean_bank_namezBankDetailsForm.clean_bank_name  s    %%))+r:@@B	y>AY#!5''F  xx()4''B  r   c                    | j                   j                  dd      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      st	        j
                  d      |S )Nr   r   rL   r   z6Branch name must be between 1 and 100 characters long.r   z2Branch name can only contain alphabets and spaces.r   )r   r   s     r   clean_branch_namez!BankDetailsForm.clean_branch_name  s    ''++M2>DDF{a3{#3c#9''H  xx(+6''D  r   c                     | j                   j                  dd      j                         }t        |      dk7  rt	        j
                  d      t        j                  d|      st	        j
                  d      |S )Nr   r      z-IFSC code must be exactly 11 characters long.z^[A-Z]{4}0[A-Z0-9]{6}$zgIFSC code must be in the format: AAAA0BBBBBB where AAAA is the bank code and BBBBBB is the branch code.r   )r   r   s     r   clean_ifsc_codezBankDetailsForm.clean_ifsc_code  sn    %%))+r:@@B	y>R''(WXXxx19=''y  r   c                     | j                   j                  dd      j                         }t        |      dk  rt	        j
                  d      t        j                  d|      st	        j
                  d      |S )Nr   r   rL   z!Account number must not be empty.z
^[0-9\-]+$z3Account number can only contain digits and hyphens.r   )r   r   s     r   clean_account_numberz$BankDetailsForm.clean_account_number  so    **../?DJJL~"''(KLLxx~6''E  r   )r   r   r   r/   r   r   r   r   r   r   r   r   s   @r   r   r     s,    
 
U


r   r   c            	       ~   e Zd Z G d d      Z ej
                  d ej                  ddd      d	      Z ej
                  d
 ej                  ddd            Z ej                  dd ej                  ddd            Z ej                  dd ej                  ddd            Zd Zd Zd Zd Zy)CategoryFormc                       e Zd ZeZdZy)CategoryForm.Meta)category_namecategory_codeiconstandard_imageN)r   r   r   ProductCategoryr,   r-   r.   r   r   r/   r     s    
r   r/   r   r2   category_name_inputr?   r3   Tr4   r   category_code_inputr8   IconFuploadform-control-filer@   r1   r5   r7   r6   Standard Imageupload2c                 0   | j                   j                  d      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      rt	        j
                  d      |j                         }|S )Nr   rL   r   z8Category name must be between 1 and 120 characters long.r   r   	rT   rU   r   rV   r   r   rW   r   rZ   )r   r   captilized_category_names      r   clean_category_namez CategoryForm.clean_category_name  s    ))--o>DDF}!S%7#%=''J  99Y.''(HII#0#;#;#= ''r   c                 0   | j                   j                  d      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      rt	        j
                  d      |j                         }|S )Nr      rM   z7Category code must be between 2 and 50 characters long.r   r   r  )r   r   captilized_category_codes      r   clean_category_codez CategoryForm.clean_category_code	  s    ))--o>DDF}!S%7"%<''I  99Y.''(HII#0#;#;#= ''r   c                    	 | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }dddd	d
d}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      	 |S # t        $ r}	d|	v rt        d      t        |	      d }	~	ww xY w)Nr         Image file too large ( > KB)
image/jpeg	image/png	image/gif	image/bmp
image/tiffJPEGPNGGIFBMPTIFFunknown4Unsupported file type. Only JPG and PNG are allowed.r   r   ;Image dimensions too large. Maximum allowed dimensions are x.Upload a valid imageUpload a valid image.
rT   rU   r   r   r   openformatwidthheight	Exception
r   r   max_size_kbimgimage_formatcontent_type_mapcontent_type	max_width
max_heightes
             r   
clean_iconzCategoryForm.clean_icon  s2   %	%$$((0D Kyy;--%(A+c&RSS **T"C::L$"""$  ,//iHLy(%&\]] %-!Izyy9$

Z(?%QR[Q\\]^h]iijkm m )@ 	  	%%*%&=>>!!$$	%   C B#C 	C/C**C/c                    | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }dddd	d
d}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S )Nr  r  r  r  r  r  r  r  r  r  r  r$  r%  r&  r'  r(  r)  	rT   rU   r   r   r   r-  r.  r/  r0  	r   r  r3  r4  r5  r6  r7  r8  r9  s	            r   clean_standard_imagez!CategoryForm.clean_standard_image=  s    **../?@!! t!33!$=k]#"NOO jj(zz  
 (++L)D9$!"XYY !)	:99y CJJ$;!Mi[XYZdYeefgi i r   N)r   r   r   r/   r   rm   rn   r   r   
ImageField	FileInputr   r  r  r  r;  r@  r.   r   r   r   r     s    
 
 $EOOu*2GH
 M $EOOu*2GH
M 5u8=P%QRD &U%%u9>Q%RSN	(	('R!r   r   c                   0   e Zd Z G d d      Z ej
                  d ej                  dddd      d	
      Z ej
                  d ej                  dddddd      d	
      Z ej                  dd ej                  ddd            Zd Zd Zd Zy)ProductSubCategoryFormc                       e Zd ZeZdZy)ProductSubCategoryForm.Meta)sub_category_namesub_category_coder  N)r   r   r   ProductSubCategoryr,   r-   r.   r   r   r/   rF    s    "Mr   r/   rG  r2   sub_category_input_namezSub Category Name)r1   r@   placeholderr3   Tr4   rH  sub_category_input_codezSub Category Codezsub category codesub_category_submit)r1   r@   rK  zarial-labelzaria-describedbyr
  Fr  r  r  r	  c                    | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      rt        j                  d      |j                         }|S )NrG  rL   rM   z;Sub category name must be between 1 and 50 characters long.r   r   )rT   rU   rV   r   r   rW   r   title)r   rG  capitalized_sub_category_names      r   clean_sub_category_namez.ProductSubCategoryForm.clean_sub_category_name  s     --112EF !A%->)?")D''M  99Y 12''(HII(9(?(?(A%,,r   c                    | j                   j                  dd      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      rt	        j
                  d      t        j                  d|      st	        j
                  d	      |j                         r|S |d
   j                         |dd  z   S )NrH  r   rL   rM   z;Sub category code must be between 1 and 50 characters long.r   Consecutive spaces not allowed.z^[a-zA-Z0-9_-]+$z<Only letters, numbers, underscores, and hyphens are allowed.r   )rT   rU   r   rV   r   r   rW   r   rX   isupperupper)r   rH  s     r   clean_sub_category_codez.ProductSubCategoryForm.clean_sub_category_code  s     --112ErJPPR  !A%->)?")D''M 
 99Y 12''(IJJ xx+->?''(fgg $$&$$ !#))+.?.CCCr   c                    | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }ddddd	d
}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S Nr  r  r  r  r  r  r  r  r  r  r$  r%  i  8  r'  r(  r)  r>  r?  s	            r   r@  z+ProductSubCategoryForm.clean_standard_image      **../?@!! t!33!$=k]#"NOO jj(zz  
 (++L)D9$!"XYY !+	:99y CJJ$;!Mi[XYZdYeefgi i r   N)r   r   r   r/   r   rm   rn   rG  rH  rA  ClearableFileInputr  rQ  rV  r@  r.   r   r   rD  rD    s    N N (!u'/2
 
 (!u'/22$9
  &U%%'u''IGZ.[\N	-D2!r   rD  c            
       ~    e Zd Z G d d      Z fdZ ej                  d ej                  ddddd	
      dd      Z ej                  d ej                  ddddd	
      dd      Z	 ej                  d ej                  ddddd	
      dd      Z
 ej                  d ej                  ddddd	
      dd      Z ej                  d ej                  ddddd	
      dd      Z ej                  d ej                  ddd
      d      Z ej                  d ej                  dd d
      !      Z ej                  d" ej                  dd#d$d%
      &      Z ej"                  d' e       d      Z ej(                  d( e       d      Z ej                  d)d ej,                  dd*d
      +      Z ej                  d,d ej,                  dd-d
      +      Z ej                  d.d ej,                  dd/d
      +      Z ej                  d0dd1 ej,                  dd2d
      3      Z ej6                  ej:                  j=                          ej>                  d4d5d
      dd6d7i8      Z  ej6                  e!j:                  jE                          ej>                  d4d9d
      dd6d:i8      Z# ej                   ej                  dd;d<d=d>
      ?      Z$ ejJ                  d@dAg ej>                  d4dBd
      C      Z&dD Z'dE Z(dLdFZ)dG Z*dH Z+dI Z,dJ Z-dM fdK	Z. xZ/S )NProductFormc                       e Zd ZeZdZy)ProductForm.Meta)product_type	item_name	item_codei_gsts_gstc_gstcessitem_categoryitem_sub_categoryitem_descriptionveg_or_non_veg_statusimagesvideosN)r   r   r   Productsr,   r-   r.   r   r   r/   r`    s    
r   r/   c                    t        |   |i | d| j                  v rO	 | j                  j                  d      }t        j
                  j                  |      | j                  d   _        y | j                  ra| j                  j                  rJ| j                  j                  rGt        j
                  j                  | j                  j                        | j                  d   _        n0t        j
                  j                         | j                  d   _        	 t        j
                  j                  | j                        }|j                   xs d| j"                  d<   |j$                  xs d| j"                  d<   |j&                  xs d| j"                  d	<   |j(                  xs d| j"                  d
<   |j*                  xs d| j"                  d<   y t        j
                  j                         | j                  d   _        y # t        t        f$ r3 t        j
                  j                         | j                  d   _        Y y w xY w# t        j,                  $ r Y y w xY w)Nrh  )category_idri  )categoryproductr   ingredient_infonutritional_infoallergen_descriptionallergen_infoadditional_info)r   r   r   rU   rI  r   r   r-   r   
ValueError	TypeErrornoner   r   rh  ProductDescriptionrt  r   ru  rv  rw  rx  DoesNotExist)r   r   r   rp  product_descriptionr   s        r   r   zProductForm.__init__  s   $)&) dii'^"iimmO<<N<V<V<]<] + =^ =/09 ]]t}}//}}**<N<V<V<]<]!]]88 =^ =/09 =O<V<V<[<[<]/09	&8&@&@&D&DT]]&D&[#2E2U2U2[Y[./3F3W3W3][]/07J7_7_7ece340C0Q0Q0WUW_-2E2U2U2[Y[./ 9K8R8R8W8W8YDKK+,55 	* ^<N<V<V<[<[<]/09^* &22 s%   AH  B;I ?III('I(Ingredientsr2   rt  r   z)List all ingredients used in this product)r1   r@   rowsrK  r3   Fr5   r6   r7   	help_textzNutritional Informationru  z@Provide nutritional facts (calories, protein, carbs, fats, etc.)zAllergen Descriptionrv  r  z&Brief description of allergens presentzAllergen Informationrw  zBDetailed allergen information (contains nuts, gluten, dairy, etc.)zAdditional Informationrx  z&Any other relevant product information	Item Namerb  r?   Tr4   	Item Coderc  r8   zMaster Productra  rv   rx   )r   r6   Product ImagesProduct VideosIGSTrd  r	  SGSTre  CGSTrf  CESSzEnter cess valuerg  )r5   r7   r  r6   r=   id_item_categoryr7   zPlease select an item category.)r   r6   r7   r   id_item_sub_categoryz#Please select an item sub-category.   Enter descriptionrj  r1   r  rK  r@   ry   Vegr  Non Vegr  rk  rA   c                    | j                   j                  d      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      rt	        j
                  d      |S )Nrb  rL   r   4Item name must be between 1 and 120 characters long.r   rS  rT   rU   r   rV   r   r   rW   r   r   rb  s     r   clean_item_namezProductForm.clean_item_name  v    %%))+6<<>	y>AY#!5''F  99Y	*''(IJJr   c                    | j                   j                  d      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      t        j                  d|      rt	        j
                  d      |S )Nrc  rL   r   z4Item code must be between 1 and 120 characters long.r   rS  r  )r   rc  s     r   clean_item_codezProductForm.clean_item_code  r  r   c                    | j                   j                  |      }	 |4t        t        |      d      }|r|dk  rt	        j
                  | d      |S # t        t        f$ r t	        j
                  d| d      w xY w)Nr  r    must be a positive number.z!Enter a valid decimal number for r)  rT   rU   roundr   r   r   r   ry  r   
field_namer5   positivevalues        r   clean_decimalzProductForm.clean_decimal  s    !!%%j1	V gena0
//5'9T0UVV  !*- 	V''*KE7RS(TUU	V   6A )A>c                 *    | j                  ddd      S )Nrd  r  Tr  r  r   s    r   clean_i_gstzProductForm.clean_i_gst      !!'6D!AAr   c                 *    | j                  ddd      S )Nre  r  Tr  r  r  s    r   clean_s_gstzProductForm.clean_s_gst  r  r   c                 *    | j                  ddd      S )Nrf  r  Tr  r  r  s    r   clean_c_gstzProductForm.clean_c_gst  r  r   c                 &    | j                  dd      S )Nrg  r  r  r  s    r   
clean_cesszProductForm.clean_cess  s    !!&&11r   c                    t         |   |      }|rt        j                  j	                  |      \  }}| j
                  j                  dd      |_        | j
                  j                  dd      |_        | j
                  j                  dd      |_	        | j
                  j                  dd      |_
        | j
                  j                  dd      |_        |j                          |S )	Ncommitrr  rt  r   ru  rv  rw  rx  )r   saver|  r   get_or_createrT   rU   rt  ru  rv  rw  rx  )r   r  rs  r~  createdr   s        r   r  zProductForm.save  s    ',f,-+=+E+E+S+S\c+S+d(262C2C2G2GHY[]2^/373D3D3H3HI[]_3`07;7H7H7L7LMceg7h4040A0A0E0EoWY0Z-262C2C2G2GHY[]2^/$$&r   FT)0r   r   r   r/   r   r   rm   Textareart  ru  rv  rw  rx  rn   rb  rc  ra  rA  r   rl  	FileFieldrm  r   rd  re  rf  rg  ModelChoiceFieldr  r   r   rq   rh  rI  r{  ri  rj  rp   rk  r  r  r  r  r  r  r  r  r   r   s   @r   r^  r^    s   
 
$$ZP &eoou~~##F	%
  =
O 'u'u~~#$]	%
  T
 +5??$u~~#(C	%
  :
 $EOO$u~~#!_	%
  V
M &eoo&u~~##C	%
  :
O  u~[%QRI  u~[%QRI
 #5?? u'$&
	L UF U__F EOO u  w'OPE EOO u  w'OPE EOO u  w'OPE 5??$ u  v'NO	D +E** ((,,.u||,FN`"ab"$EF	M /..#++002u||,FNd"ef"$IJ	 'uu~~'2(	
	 .E--!78u||6>UV

BBB2
 r   r^  c                   n   e Zd Z G d d      Z ej
                  d ej                  ddi      d      Z ej
                  d	 ej                  ddi      d      Z ej                  d
 ej                  ddi      dddd      Z ej
                  d ej                  ddi      d      Z ej                  d ej                  ddi      dddd      Z ej                  dd eddddd            Z ej                  dd eddddd            Z ej                  d ej                  ddi      dddd      Z ej                  d ej                  ddi      dddd      Z ej*                  g d ej,                  ddi      d      Zd Zd Zd  Zd! Zd%d"Zd# Zy$)&SKUFormc                       e Zd ZeZdZy)SKUForm.Meta)
sku_namesku_codesku_quantitysku_unitsku_mrpsame_day_deliverycustomization_availablesku_expiry_durationsku_bulk_qty_limit
sku_statusN)r   r   r   SKUr,   r-   r.   r   r   r/   r        
r   r/   zSKU Namer1   r2   r3   Tr4   zSKU CodeQuantityzEnter a valid field)r7   invalid)r5   r6   r7   r   UnitMRPr  Fsame_day_delivery_idform-check-inputmargin-left: -25px;namer@   r1   styler	  r  customization_available_idzExpiry Duration (days)zBulk Quantity Limit))Visibler  )Disabledr  )Out of Stockr  r=   r   c                 (    | j                  dd      S )Nr  zSKU Quantityr5   clean_positive_integerr  s    r   clean_sku_quantityzSKUForm.clean_sku_quantityf  s    **>*PPr   c                 *    | j                  ddd      S )Nr  zSKU MRPT)r5   r  r  r  s    r   clean_sku_mrpzSKUForm.clean_sku_mrpi  s    !!)9t!LLr   c                 (    | j                  dd      S )Nr  zSKU Expiry Durationr  r  r  s    r   clean_sku_expiry_durationz!SKUForm.clean_sku_expiry_durationl  s    **+@H]*^^r   c                 (    | j                  dd      S )Nr  zSKU Bulk Quantity Limitr  r  r  s    r   clean_sku_bulk_qty_limitz SKUForm.clean_sku_bulk_qty_limito  s    **+?G`*aar   c                    | j                   j                  |      }	 |4t        t        |      d      }|r|dk  rt	        j
                  | d      |S # t        t        f$ r t	        j
                  d| d      w xY w)Nr  r   r  zEnter a valid field for r)  r  r  s        r   r  zSKUForm.clean_decimalr  s    !!%%j1		M gena0 
//5'9T0UVV  !*- 	M''*B5'(KLL	Mr  c                     | j                   j                  |      }|t        |      dk  rt        j                  | d      |S )Nr   r  rT   rU   intr   r   )r   r  r5   r  s       r   r  zSKUForm.clean_positive_integer  sE    !!%%j1=CJ!O''5'1L(MNNr   Nr  )r   r   r   r/   r   rm   rn   r  r  r   r   r  r  r   r  BooleanFieldr   r  r  r  r  rp   rq   r  r  r  r  r  r  r  r.   r   r   r  r    s7   
 
 uug~%>?H uug~%>?H &5%% u  '@A-,
	L uug~%>?H e u  '@A-,
	G +**!,?G]hz-B$D E 1e00',EMi  uG-B$D E -%,,& u  '@A-,
	 ,++# u  '@A-,
		 #""du||7,F"GHJQM_br   r  c                       e Zd Zd Zy)!ShopAdminSelectorModelChoiceFieldc                 F    | j                  ddi       d|j                  z  S )Nr  zwidth:200px;z%s)widget_attrsmodule_name)r   objs     r   label_from_instancez5ShopAdminSelectorModelChoiceField.label_from_instance  s)    n%	
 coo%%r   N)r   r   r   r  r.   r   r   r  r    s    &r   r  c                       e Zd Z G d d      Z edd      Z ej                  deg ej                  ddi	      
      xZ	Z	 ej                   ej                  ddi	            Zd Zy)StoreUserFormc                       e Zd ZeZdZy)StoreUserForm.Meta)phoner&   Nr*   r.   r   r   r/   r    s    #r   r/   rg   zRPhone number must be entered in the format: '9999999999'. Up to 10 digits allowed.)regexmessage
   r1   r2   r3   )r   
validatorsr6   ry   c                     | j                   j                  d      }t        j                  j	                  |      j                         rt        d      |S )Nr  )r  zPhone number already exists.)rT   rU   r+   r   r   r   r   )r   r  s     r   clean_phonezStoreUserForm.clean_phone  sG    !!%%g.==e,335!"@AAr   N)r   r   r   r/   r
   phone_regexr   rm   rn   r  ro   
EmailInputr&   r  r.   r   r   r  r    s~    $ $ ! dK $EOO=ug~%>? EE
 E$4E$4$4G^;T$UVEr   r  c                        e Zd Z G d d      Zy)StoreUserFormStatusEditc                   h    e Zd ZeZdZ ej                  ddg ej                  ddd            Z	y	)
StoreUserFormStatusEdit.Meta)r)   rD   rD   rG   rG   r=   rI   r?   r3   rA   N)
r   r   r   r+   r,   r-   r   rp   rq   r)   r.   r   r   r/   r    s<    """)+CD5<<0JRa&bc
r   r/   Nr   r   r   r/   r.   r   r   r   r     s    
 
r   r   c            	          e Zd Z G d d      Z ej
                  d ej                  ddi      d      Z ej
                  d	 ej                  ddi      
      Z ej                  d ej                  ddi      
      Z
 ej
                   ej                  ddddd            Z ej
                  d ej                  ddi      
      Z ej                  ddg ej                  ddd            Zd Zd Zd Zy)UserModalFormc                       e Zd ZeZdZy)UserModalForm.Metar#   Nr*   r.   r   r   r/   r	    r0   r   r/   r$   r1   r2   r3   Tr4   r%   r8   r&   r>   rv   r;   )r1   r@   rv   r  ry   r(   r  r  r=   rI   r?   rA   c                    | j                   j                  d      }t        |      dk  rt        j                  d      t        j                  d|      rt        j                  d      |j                         rt        j                  d      t        j                  d|      rt        j                  d      |j                         }|S )	Nr$   r   z,Username must be at least 3 characters long.[!@#$%^&*(),.?":{}|<>]3Special characters are not allowed in the username.Username could not be numbers.r   r   	rT   rU   rV   r   r   rW   r   	isnumericrZ   r[   s      r   r]   zUserModalForm.clean_first_name  s    &&**<8
z?Q''(VWW99.
;''(]^^!''(HII99Y
+''(HII * 5 5 7$$r   c                 R   | j                   j                  d      }t        j                  d|      rt	        j
                  d      |j                         rt	        j
                  d      t        j                  d|      rt	        j
                  d      |j                         }|S )Nr%   r  r  r  r   r   )rT   rU   rW   r   r   r   r  rZ   ra   s      r   rc   zUserModalForm.clean_last_name  s    %%))+6	99.	:''(]^^ ''(HII99Y	*''(HII(335##r   c                 ~    | j                   j                  d      }t        j                  d|      st	        d      |S rf   ri   rj   s     r   rk   z UserModalForm.clean_phone_number  s9    ((,,^<xx*L9!"vwwr   Nr}   r.   r   r   r  r    s   	
 	
 !ug~%>?J  /%//.8Q"RI EoeooWn4MNE  u'(&%	
	I #5??_U__G^;T%UL U%'?@u||,Fo"^_F
%$r   r  c                   ^   e Zd Z G d d      Z ej
                  d ej                  dddddd	      d
      Z ej                  dd ej                  ddd	            Z
 ej                  ej                  j                          ej                  dddd	      ddi      Zd Zd Zy)TagFormc                       e Zd ZeZdZy)TagForm.Meta)tag_namer   productsN)r   r   r   Tagsr,   r-   r.   r   r   r/   r    s    
r   r/   r  tag_name_idr2   textz	Enter tagr  r@   r1   typerK  r3   Tr4   r  Fr  r  r  r	  r   
product_idr1   r   r@   r7   #Please select at least one product.r   c                    | j                   j                  d      }t        |      dk  rt        j                  d      t        j                  d|      rt        j                  d      |j                         rt        j                  d      t        j                  d|      rt        j                  d      |j                         }|S )	Nr  r   z,Tag name must be at least 3 characters long.r  3Special characters are not allowed in the tag name.Tag name could not be numbers.r   r   	rT   rU   rV   r   r   rW   r   r  rO  )r   r  capitalize_tag_names      r   clean_tag_namezTagForm.clean_tag_name  s    $$((4x=1''(VWW99.9''(]^^''(HII99Y)''(HII&nn.""r   c                    	 | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }ddddd	d
}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      	 |S # t        $ r}	d|	v rt        d      t        |	      d }	~	ww xY wNr   r  r  r  r  r  r  r  r  r  r$  r%  rY  r'  r(  r)  r*  r+  r,  r2  s
             r   r;  zTagForm.clean_icon-  2   &	%$$((0D
 Kyy;--%(A+c&RSS **T"C::L$"""$  ,//iHLy(%&\]] %/!Izyy9$

Z(?%QR[Q\\]^h]iijkm m )@ 	  	%%*%&=>>!!$$	%r<  N)r   r   r   r/   r   rm   rn   r  rA  r\  r   r   rn  r   r   r   r  r%  r;  r.   r   r   r  r    s    
 
 uuzXfou  GR  &S  TH 5'u''HFY.Z[D .u--!!%%'#u##NDXd*ef"$IJH#(r   r  c                      e Zd Z G d d      Z ej
                  d ej                  dddddd	      d
      Z ej                  e	j                  j                          ej                  dddd	      ddi      Zd Zy)DynamicFilterFormc                       e Zd ZeZdZy)DynamicFilterForm.Meta)filter_namer  N)r   r   r   DynamicFilteringr,   r-   r.   r   r   r/   r,  ]  s     
r   r/   r-  filter_name_idr2   r  zEnter dynamic filterr  r3   Tr4   r   r  r  r7   r  r   c                    | j                   j                  d      }t        |      dk  rt        j                  d      t        j                  d|      rt        j                  d      |j                         rt        j                  d      t        j                  d|      rt        j                  d      |j                         }|S )	Nr-  r   z7Dynamic filter name must be at least 3 characters long.r  r!  r"  r   r   r  )r   r-  capitalize_filter_names      r   clean_filter_namez#DynamicFilterForm.clean_filter_nameq  s    ''++M:{a''(abb99.<''(]^^  "''(HII99Y,''(HII!,!7!7!9%%r   N)r   r   r   r/   r   rm   rn   r-  r   rn  r   r   r   r  r2  r.   r   r   r*  r*  \  s    
 
 "%//u}DT^lu{  Mc  &d  eK .u--!!%%'#u##NDXd*ef"$IJH&r   r*  c                      e Zd Z G d d      Z ej
                  d ej                  dddddd	      d
      Z ej                  dd ej                  ddd	            Z
 ej                  dd ej                  ddd	            Z ej                  dd ej                  ddd	            Z ej                  ej                  j!                          ej"                  dddd	      ddi      Zd Zd Zd Zd Zy )!SpecialListFormc                       e Zd ZeZdZy)SpecialListForm.Meta)special_namer   r  banner_imager  N)r   r   r   SpecialListr,   r-   r.   r   r   r/   r6    s    
r   r/   r7  special_name_idr2   r  zEnter special namer  r3   Tr4   r  Fr  r  r  r	  r
  r  Banner Imageupload3r   r  r  r7   r  r   c                    | j                   j                  d      }t        |      dk  rt        j                  d      t        j                  d|      rt        j                  d      |j                         rt        j                  d      t        j                  d|      rt        j                  d      |j                         }|S )	Nr7  r   z0Special name must be at least 3 characters long.r  z7Special characters are not allowed in the special name.z"Special name could not be numbers.r   r   r#  )r   r7  capitalize_special_names      r   clean_special_namez"SpecialListForm.clean_special_name  s    ((,,^<|q ''(Z[[99.=''(abb!!#''(LMM99Y-''(HII"."4"4"6&&r   c                    	 | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }ddddd	d
}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      	 |S # t        $ r}	d|	v rt        d      t        |	      d }	~	ww xY wr'  r,  r2  s
             r   r;  zSpecialListForm.clean_icon  r(  r<  c                    | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }ddddd	d
}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S rX  r>  r?  s	            r   r@  z$SpecialListForm.clean_standard_image  r[  r   c                    | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }ddddd	d
}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S )Nr8  r  r  r  r  r  r  r  r  r  r$  r%  rY  r'  r(  r)  r>  	r   r8  r3  r4  r5  r6  r7  r8  r9  s	            r   clean_banner_imagez"SpecialListForm.clean_banner_image  s    ((,,^<  {T11!$=k]#"NOO jj&zz  
 (++L)D9$!"XYY !+	:99y CJJ$;!Mi[XYZdYeefgi i r   N)r   r   r   r/   r   rm   rn   r7  rA  r\  r   r  r8  r   rn  r   r   r   r  r?  r;  r@  rD  r.   r   r   r4  r4    s8   
 
 #5??u~EV`nw}  Oc  &d  eL 5'u''HFY.Z[D &U%%'u''IGZ.[\N $5##'u''IGZ.[\L .u--!!%%'#u##NDXd*ef"$IJH'(T!F"r   r4  c                   *   e Zd Z G d d      Z ej
                  d ej                  ddddd      d	
      Z ej
                  d ej                  ddddddd      d	
      Z ej                  d	dd ej                  ddd            Zd Zy)DeliveryBoyFormc                       e Zd ZeZdZy)DeliveryBoyForm.Meta)team_member_namer(   r&   N)r   r   r   DeliveryBoysr,   r-   r.   r   r   r/   rH  -  s    
r   r/   rI  team_member_name_idr2   r  r  r@   r1   r  r3   Tr4   r(   phone_number_id+91zaddCountryCode())r  r@   r1   r  r  onfocuszEmail Address   zEnter your email)rK  r1   )r7   r5   r   r6   c                 8   | j                   d   j                         }|j                  d      st        j                  d      |j                  dd      j                         }|j                         rt        |      dk7  rt        j                  d      d|z   S )Nr(   rN  z!Phone number must start with +91.r   r  z$Enter a valid 10-digit phone number.)rT   r   
startswithr   r   replaceisdigitrV   )r   r  r(   s      r   rk   z"DeliveryBoyForm.clean_phone_numberG  s    !!.1779&''(KLL }}UB/557##%\):b)@''(NOO|##r   N)r   r   r   r/   r   rm   rn   rI  r(   ro   r  r&   rk   r.   r   r   rF  rF  ,  s    
 
 'u u/AI^hv  @F  &G  H #5??u~EV`nw}  HM  Yk  &l  mL
 Eu6HSa&bc	E$r   rF  c            
       x   e Zd Z G d d      Z ej
                  d ej                  ddddd      d	
      Z ej
                  d ej                  ddddd      d	
      Z ej                   ej                  dddi      ddgd	      Z ej
                  d ej                  ddddd      d	
      Zy)CourierDetailsFormc                       e Zd ZeZdZy)CourierDetailsForm.Meta)courier_service_namepackage_numberexpected_date_of_deliverytracking_linkN)r   r   r   OrderDeliveryr,   r-   r.   r   r   r/   rX  Z  s    
r   r/   rY  courier_service_name_idr2   r  rL  r3   Tr4   rZ  package_number_id%Y-%m-%dr  dater.  r   %d/%m/%Y)r6   input_formatsr7   r\  tracking_link_idN)r   r   r   r/   r   rm   rn   rY  rZ  	DateField	DateInputr[  r\  r.   r   r   rV  rV  Y  s    
 
 +5??$u/EMfp~  HN  &O  P %U__u/?GZdr  |B  &C  DN !0uj8HI!:.! $EOOuFXbpy  &A  BMr   rV  c                      e Zd Z G d d      Z ej
                  d ej                  dddd      d	
      Z ej
                  d ej                  ddi      d	
      Z ej
                  d ej                  ddi      d	
      Z	 ej                  dd ej                  ddd            Z ej                  g d ej                  ddd      d	      Z ej                   ej$                  j'                         j)                          ej*                  ddd      d      Z ej                   ej$                  j)                          ej*                  ddd      d      Z ej                   ej$                  j)                          ej*                  ddd      d      Z ej                   ej$                  j)                          ej*                  ddd      d      Z ej
                  d ej                  ddi      d	
      Z ej<                  dddd ej>                  dd d      !      Z  ej<                  ddd"d# ej>                  dd$d      !      Z! ejD                  d% ej>                  dd&d      dd'(      Z# ej                  d)d*g ej                  dd+d      d	      Z$ ejJ                  d, ej                  dd-d.      d	
      Z& ejN                   ejP                  d/d0dd12      d3d/g4      Z) ejN                   ejP                  d/d0dd12      d3d/g4      Z* ej
                   ejV                  dd5d6      d7d	8      Z,d9 Z-d: Z.d; Z/d< Z0y=)>
CouponFormc                       e Zd ZeZdZy)CouponForm.Meta)
CouponName
CouponCodeCouponDescriptionr  CouponOnApplicableCategoryApplicableSubCategoryApplicableProductApplicableSkuTotalBillAmountDiscountAmountDiscountPercentageMaxDiscountAmountForPercentage
CouponTypeMaxNumberofUsersValidity_start_datevalidity_end_dateTermsAndConditionsN)r   r   r   Couponsr,   r-   r.   r   r   r/   rk  }  s    
r   r/   Coupon Namer2   zPlease fill out this fieldr7   )r1   rK  r7   r3   Tr4   rm  r1   rn  r  Fr  r  r  r	  )Categoryr  )SubCategoryr  Productr  )Skur  r=   coupon_selectr?   r   r   r   r   r6   r7   r   r  r  zDiscount Amountdiscount_amount_field)r7   decimal_places
max_digitsr5   r6   r  Discount Percentagediscount_percentage_fieldz&Maximum Discount Amount for Percentagemax_discount_fieldz7Maximum discount amount when coupon type is percentage.r  )amountr  )
percentager  coupon_typery  r   r   r`  ra  )r  r1   rb  rc  )r6   rd  zEnter your comments...)r1   rK  r|  r6   r5   r7   c                 j    | j                   j                  d      }|st        j                  d      |S )Nrl  zThis field is required.r   r   r   s     r   clean_CouponNamezCouponForm.clean_CouponName  s2      $$\2''(ABBr   c                    	 | j                   j                  d      }|s|S d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }ddddd	d
}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      	 |S # t        $ r}	d|	v rt        d      t        |	      d }	~	ww xY w)Nr  r  r  r  r  r  r  r  r  r  r$  r%  rY  r'  r(  r)  r*  r+  r,  )
r   r  r3  r4  r5  r6  r7  r8  r9  r:  s
             r   
clean_IconzCouponForm.clean_Icon  s2   %	%$$((0D Kyy;--%(A+c&RSS **T"C::L$"""$  ,//iHLy(%&\]] %/!Izyy9$

Z(?%QR[Q\\]^h]iijkm m )@ 	  	%%*%&=>>!!$$	%r<  c                     | j                   j                  d      }| j                   j                  d      }|r|r||k  rt        d      |S )Nrz  r{  z/End date cannot be earlier than the start date.rT   rU   r   )r   
start_dateend_dates      r   clean_validity_end_datez"CouponForm.clean_validity_end_date9  sM    &&**+@A
$$(()<=(x*'<!"STTr   c                    | j                   j                  dd      }| j                   j                  dd      }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }|dk(  r|st        dd	i      t        j                  j                  |
      }|D ]h  }t        j                  j                  |j                        j                         }	t        |      t        |	j                        k\  s]t        ddi       |dk(  r|st        dd	i      t        j                  j                  |      }|D ]h  }t        j                  j                  |j                        j                         }	t        |      t        |	j                        k\  s]t        ddi       |dk(  r|st        dd	i      t        j                  j                  |      }|D ]h  }t        j                  j                  |j                        j                         }	t        |      t        |	j                        k\  s]t        ddi       |dk(  re|st        dd	i      t        j                  j                  |      }
|
D ]0  }	t        |      t        |	j                        k\  s%t        ddi       y y )Nro  r   rt  rp  rq  rr  rs  r  Field required!)item_category__inrr  z/Coupon not valid for some products on category!r  item_sub_category__inz3Coupon not valid for some products on sub category!r  )id__inz"Coupon not valid for some product!r  zCoupon not valid for SKU!)rT   rU   r   rn  r   r   r  r@   firstfloatr  )r   	coupon_onminimum_bill_amountapplicable_categoryapplicable_subcategoryapplicable_productapplicable_skur  iskuskuss              r   cleanzCouponForm.cleanB  s   %%))*b9	"//334ErJ"//334H$O!%!2!2!6!67NPT!U!..223FM**..E
"&%';=N&OPP''..AT.UHkk(((6<<>,-s{{1CC)+<>o*pqq 
 %)%'>@Q&RSS''..E[.\Hkk(((6<<>,-s{{1CC)+<>s*tuu 
 	!%%':<M&NOO''..8J.KHkk((144(8>>@,-s{{1CC)+<>b*cdd 
 !%8I&JKK;;%%~%>D,-s{{1CC)+<>Y*Z[[  r   N)1r   r   r   r/   r   rm   rn   rl  rm  rn  rA  r\  r  rp   rq   ro  r   r  r   r   r   r   rp  rI  rq  rn  rr  r  rs  rt  DecimalFieldr   ru  rv  r   rw  rx  r   ry  rf  rg  rz  r{  r  r|  r  r  r  r  r.   r   r   ri  ri  |  s   
 
0 !u#7"&
 
 J !ug~%>?J (!ug~%>? 5'u''HFY.Z[D !u  qu||3%
 	H 877 ((//1557#u##ND*QR
 ;E::#++//1#u##ND*QR
 766!!%%'#u##ND*QR
 3E22"#u##ND*QRM &eooug~%>?O
 (U''qR?P u  G^'_`N ,++qQ>S u  Gb'cd &6U%5%56 u  G['\]K	&" #""&(DEu||3#
 	J *u)) u~S%QR
 *%//ujR`8ab!:.
 (ujR`8ab!:. )u~~nMe$fg"'R/\r   ri  c                   d   e Zd Z G d d      Z ej
                   ej                  ddddd      d	d
      Z ej
                   ej                  ddddd      dd
      Z ej                  dd e
ddddd            Z ej                  ddg ej                  ddd      d
      Zy)DeliverySlotFormc                       e Zd ZeZdZy)DeliverySlotForm.Meta)
start_timeend_timeis_availabler)   N)r   r   r   DeliverySlotr,   r-   r.   r   r   r/   r  x  s    
r   r/   timestart_time_namestart_time_idr2   )r  r  r@   r1   r3   r  Tr  end_time_nameend_time_idr  r  Fis_available_checkboxr  r  r  r	  r  r  r=   status_selectr?   r   N)r   r   r   r/   r   	TimeField	TimeInputr  r  r  r   r  rp   rq   r)   r.   r   r   r  r  w  s    
 
& !u#->o_mnp	J uuf_Talz%{|H
 'E&&nD[fx  F[  &\  ]L U%'?@u||3%
 	Fr   r  c            
          e Zd Z G d d      Z ej
                  d ej                  ddi      d      Z ej
                  d	 ej                  ddi      d      Z ej
                  d
 ej                  ddi      d      Z	 ej                  g d ej                  ddd      d      Z ej                  ej                  j!                         j#                          ej$                  ddd      d      Z ej                  ej                  j#                          ej$                  ddd      d      Z ej                  ej                  j#                          ej$                  ddd      d      Z ej                  ej                  j#                          ej$                  ddd      d      Z ej4                  d ej6                  ddi      ddddi      Z ej:                  dd ej<                  dddd            Z ej:                  dd ej<                  d d!dd            Z d" Z!d# Z"d$ Z#d% Z$d& Z%d' Z&d( Z'y))*DiscountFormc                       e Zd ZeZdZy)DiscountForm.Meta)DiscountNameDiscountCodeDiscountDescription
DiscountOnrp  rq  rr  rs  rv  StandardImageBannerImageN)r   r   r   Discountr,   r-   r.   r   r   r/   r    s    
r   r/   r  r1   r2   r3   Tr4   r  r  r  r=   discount_selectr?   r   r   r   Fr  r  rL   	min_valuez.Discount percentage must be a positive number.)r5   r6   r7   r  r   r
  r  r  r  r@   r  r1   r	  r;  r<  r  c                 p    | j                   j                  d      }|dk  rt        j                  d      |S )Nrv  r   z4Discount percentage must be a positive whole number.r   )r   discount_percentages     r   clean_DiscountPercentagez%DiscountForm.clean_DiscountPercentage  s:    "//334HI!#''(^__""r   c                 <    | j                   j                  d      }|S )Nrp  rT   rU   r  s     r   clean_ApplicableCategoryz%DiscountForm.clean_ApplicableCategory  s      $$%9:r   c                 <    | j                   j                  d      }|S )Nrq  r  r  s     r   clean_ApplicableSubCategoryz(DiscountForm.clean_ApplicableSubCategory  s      $$%<=r   c                    | j                   j                  d      }|st        d      d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }dddd	d
d}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S )Nr  Standard image neededr  r  r  r  r  r  r  r  r  r$  r%  )rZ  i  r'  r(  r)  r>  r?  s	            r   clean_StandardImagez DiscountForm.clean_StandardImage      **..?!$9;; t!33!$=k]#"NOO jj(zz  
 (++L)D9$!"XYY !*	:99y CJJ$;!Mi[XYZdYeefgi i r   c                    | j                   j                  d      }|st        d      d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }dddd	d
d}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S Nr  zBanner image neededr  r  r  r  r  r  r  r  r  r$  r%  )ih     r'  r(  r)  r>  rC  s	            r   clean_BannerImagezDiscountForm.clean_BannerImage?      ((,,]; !$799{T11!$=k]#"NOO jj&zz  
 (++L)D9$!"XYY !)	:99y CJJ$;!Mi[XYZdYeefgi i r   c                 
   | j                   j                  d      }t        j                  j	                  |      j                  | j                  j                        j                         rt        j                  d      |S )Nr  )r  zCA discount with this code already exists. Please use a unique code.)rT   rU   r  r   r   r   r   r  r   r   r   )r   discount_codes     r   clean_DiscountCodezDiscountForm.clean_DiscountCodeb  sk    ))--n=""">FFTXTaTaTnTnFovvx''(mnnr   c                    | j                   j                  dd      }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }| j                   j                  dd       }|dk(  r|st        ddi      |d	k(  r/|st        ddi      t        j                  j                  |
      }|dk(  r|st        ddi      |dk(  r|st        ddi      y y )Nr  r   rp  rq  rr  rs  r  r  r  r  r  r  )rT   rU   r   rn  r   r   )r   discount_onr  r  r  r  r  s          r   r  zDiscountForm.cleanh  s   ''++L"="//334H$O!%!2!2!6!67NPT!U!..223FM**..E*$&%';=N&OPP -')%'>@Q&RSS''..E[.\H )#%%':<M&NOO %!%8I&JKK "  r   N)(r   r   r   r/   r   rm   rn   r  r  r  rp   rq   r  r   r  r   r   r   r   rp  rI  rq  rn  rr  r  rs  r   r   rv  rA  r\  r  r  r  r  r  r  r  r  r  r.   r   r   r  r    s   
 
  #5??ug~%>?L
 #5??ug~%>?L
 *%//#ug~%>?
 #""ru||3'
 	J 877 ((//1557#u##ND*QR
 ;E::#++//1#u##ND*QR
 766!!%%'#u##ND*QR
 3E22"#u##ND*QRM ,++# u  '@A#%UV %E$$'u''Ybu.vwM
 #%""'u''Y`s.tuK#
 D!FLr   r  c            
           e Zd Zg dZ G d d      Z ej                  d ej                  ddi      d	      Z ej                  d
 ej                  ddi      d	      Z	 ej                  e ej                  ddi      d      Z ej                  g d ej                  ddd      d      Z ej                   ej$                  j'                         d ej                  ddd      d      Z ej                   ej$                  j'                         d ej                  ddd      d      Z ej                   ej$                  j'                         d ej                  ddd      d      Z ej0                  dd ej2                  ddd d!      "      Z ej0                  d#d ej2                  d$d%d d!      "      Z fd&Zd' Zd( Zd) Zd* Z d+ Z!d, Z"d. fd-	Z# xZ$S )/AdForm))Topr  )Bottomr  )Bannerr  c                       e Zd ZeZdZy)AdForm.Meta)	AdTitleAdDescriptionAdPlacementAdTyper  r  r  Couponr  N)r   r   r   Adsr,   r-   r.   r   r   r/   r    r  r   r/   zAd Titler1   r2   r3   Tr4   zAd Descriptionr@   zmulti-selectFr   ))r  r  )r  r  r  r=   Ad_communication_selectr?   r  zform-control discountdiscount_id)r   r5   r6   r7   r  zform-control coupon	coupon_idr  zform-control productr  r
  r  r  r  r  r	  r;  r<  r  c                     |j                  dd       | _        |j                  d      }|r%|j                  di       }|j	                         |d<   t        |   |i | y )Nrequestr   r   r  )popr  rU   
setdefaultget_placement_displayr   r   )r   r   r   r   r   r   s        r   r   zAdForm.__init__  s]    zz)T2::j)''	26G%-%C%C%EGM"$)&)r   c                    | j                   j                  d      }|st        d      d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }dddd	d
d}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S )Nr  r  r  r  r  r  r  r  r  r  r  r$  r%  )rZ  iN  r'  r(  r)  r>  r?  s	            r   r  zAdForm.clean_StandardImage  r  r   c                 V    | j                   j                  d      }|st        d      |S )Nr  z"Please select atleast 1 placement!r  )r   ad_placements     r   clean_AdPlacementzAdForm.clean_AdPlacement	  s-    ((,,];!$FHHr   c                    | j                   j                  d      }|st        d      d}|j                  |dz  kD  rt        d| d      t	        j
                  |      }|j                  }dddd	d
d}|j                  |d      }|dk(  rt        d      d\  }}|j                  |kD  s|j                  |kD  rt        d| d| d      |S r  r>  rC  s	            r   r  zAdForm.clean_BannerImage	  r  r   c                     | j                   j                  d      }|dk(  r*| j                   j                  d      dk(  rt        d      y y )Nr  r  r   zDiscount Cannot be empty!r  r   ad_types     r   clean_DiscountzAdForm.clean_Discount2	  sO    ##''1z!  $$Z0B6%&ABB 7 "r   c                     | j                   j                  d      }|dk(  r*| j                   j                  d      dk(  rt        d      y y )Nr  r  r   zCoupon Cannot be  empty!r  r  s     r   clean_CouponzAdForm.clean_Coupon7	  sO    ##''1x  $$X."4%&@AA 5  r   c                     | j                   j                  d      }|dk(  r*| j                   j                  d      dk(  rt        d      y y )Nr  r  r   zProduct Cannot be empty!r  r  s     r   clean_ProductzAdForm.clean_Product?	  sO    ##''1y   $$Y/25%&@AA 6 !r   c                     t         |   d      }dj                  | j                  d         |_        |r|j                          |S )NFr  ,r  )r   r  r   rT   r  )r   r  r   r   s      r   r  zAdForm.saveE	  sB    7<u<-  #xx(9(9-(HIMMOr   r  )%r   r   r   placement_choicesr/   r   rm   rn   r  r  MultipleChoiceFieldCheckboxSelectMultipler  rp   rq   r  r  r  r   r   r}  r  rn  r  rA  r\  r  r  r   r  r  r  r   r  r  r  r   r   s   @r   r  r    s!   T
 
 eooug~%>?G
 $EOOug~%>?M
 ,%++!+u++D.2IJK UXu||3/
 	F &u%%!!%%'u||,C="YZ	H $U##$$&u||,A"UV	F %e$$!!%%'u||,B,"WX	G %E$$'u''Ybu.vwM
 #%""'u''Y`s.tuK* D!LC
BB r   r  c            	       Z   e Zd Z G d d      Z ej
                  d ej                  ddd      d	      Z ej
                  d
 ej                  ddd      d	      Z ej
                  d ej                  dddd      d	      Z
 ej                  ddg ej                  ddd            Z ej                  d ej                  ddd      d	      Z ej                  d ej                  ddd      d	      Z ej                  g d ej                  ddd      d      Z ej&                  d e       d	      Z ej,                  d e       d	      Z ej                  dej2                   ej                  ddd      d       Zd! Zd" Zd# Zd$ Zd% Zd& Z y')(CustomProductFormc                       e Zd ZeZdZy)CustomProductForm.Meta)
rb  rc  rj  rk  min_sizemax_size	size_unitrl  rm  availabilityN)r   r   r   CustomProductr,   r-   r.   r   r   r/   r  Y	  s    
r   r/   r  r2   rb  r?   r3   Tr4   r  rc  zItem Descriptionrj  r  )r1   r@   r  r  r  rk  rA   zMinimum Sizer  zMaximum Sizer  ))gr  )kgr  )mlr  )ltrr  r  r   r  Fr  Availabilityr  r5   rB   r6   r7   c                     | j                   j                  d      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      |S )Nrb  rL   r   r  rT   rU   r   rV   r   r   r  s     r   r  z!CustomProductForm.clean_item_name	  sV    %%))+6<<>	y>AY#!5''F  r   c                     | j                   j                  d      j                         }t        |      dk  st        |      dkD  rt	        j
                  d      |S )Nrj  rL   i  z7Description must be between 1 and 1300 characters long.r  )r   rj  s     r   clean_item_descriptionz(CustomProductForm.clean_item_description	  s\    ,,001CDJJL 1$,<(=(D''I   r   c                 p    | j                   j                  d      }|dk  rt        j                  d      |S )Nr  r   z$Minimum size must be greater than 0.r   )r   r  s     r   clean_min_sizez CustomProductForm.clean_min_size	  6    $$((4q=''(NOOr   c                 p    | j                   j                  d      }|dk  rt        j                  d      |S )Nr  r   z$Maximum size must be greater than 0.r   )r   r  s     r   clean_max_sizez CustomProductForm.clean_max_size	  r  r   c           
      `   | j                   j                  d      }|sy d}d\  }}g d}g }|D ]$  }t        d|j                   d|j                   d|j                  dz  d	d
       |j                  |dz  kD  r|j                  d| d       c	 t        j                  |      }|j                          |j                  d       t        j                  |      }|j                  r|j                  j                         nd }	|	|vr|j                  d       |j                  |kD  s|j                  |kD  r|j                  d| d| d       %' |r t        t!        t#        |            d         |S # t        $ r*}
t        d|
        |j                  d       Y d }
~
zd }
~
ww xY w)Nrl  r  )   r#  )r  r   JPGzImage: z, Size: z bytes, r  z.2fz KBz"Image file size should not exceed zKB.r   z+Only JPG and PNG image formats are allowed.z#Image dimensions should not exceed r(  z pixels.zImage validation error: z:Invalid image file. Please check the format and try again.)filesr   printr  r   r   r   r-  verifyseekr.  rU  r/  r0  r1  r   listset)r   rl  r3  r8  r9  allowed_formatsr   imager4  r5  r:  s              r   clean_imageszCustomProductForm.clean_images	  s   ##H-  (	:0E%** &H::$S). zzK$..%%8SI jj'

 

1jj'58ZZszz//1T  6"))*WX 99y(CJJ,C"))=i[*U]^ 	 -D? X !$s>':";A">??  045%%P s   BE:6E::	F-F((F-c           	      ^   | j                   j                  d      }|sy d}g d}|D ]  }|j                  |dz  dz  kD  rt        d|j                   d| d      |j                  j                  d      d	   j                         }||vset        d
| ddj                  |              |S )Nrm  r  )mp4avimovmkvr  zVideo z is too large (>zMB).r)  zUnsupported video format: z. Allowed formats: r   )r%  r   r   r   r  splitlowerr   )r   rm  max_size_mballowed_video_formatsvideofile_extensions         r   clean_videoszCustomProductForm.clean_videos	  s    ##H-   <EzzK$.55%uzzl:J;-W[&\]] #ZZ--c226<<>N%::%(B>BRRefjfofo  qF  gG  fH  'I  J  J  r   N)!r   r   r   r/   r   rm   rn   rb  rc  r  rj  rp   rq   rk  r   r   r  r  r  rA  r   rl  r  rm  r  AVAILABILITY_CHOICESr  r  r  r  r!  r-  r:  r.   r   r   r  r  X	  s   
 
  u~[%QRI
  u~[%QRI 'u u~~nDV`a$bc .E--!78u||NBY"Z[
  u u  z'RSH  u u  z'RSH "!!Hu||N+"NOI UF U__F %5$$22u||N."QR	L <|r   r  c                      e Zd Z G d d      Z ej
                  d ej                  ddi      d      Z ej
                  d	 ej                  ddi      d      Z ej
                  d
 ej                  ddi      d      Z	 ej
                  d ej                  ddi      d      Z
 ej
                  d ej                  ddi      d      Z ej
                  d ej                  ddi      d      Z ej
                  d ej                  ddi      d      Z ej                  d ej                  ddd      d      Z ej
                  d ej                  ddd      d      Z ej
                  d ej                  ddd      d      Z ej
                  d ej                  ddi      d      Z ej&                  d ej                  ddi      d      Z ej
                  d ej                  ddi      d      Z ej,                  ddg ej.                  ddd      d      Zd  Zd! Zy")#ProductionUnitFormc                       e Zd ZeZdZy)ProductionUnitForm.Meta)pu_namepu_locationpu_coder   r   r   r   r   r   r   r   r&   r   r)   N)r   r   r   ProductionUnitr,   r-   r.   r   r   r/   r?  
  s    
r   r/   r   r1   r2   r3   Tr4   r   r   r   r   r   r   r   r   r   r   rv   rw   r   r   Fr   r   )r-  r-  )closerD  r=   rI   r?   r   c                 j   | j                   j                  d      }t        |      dk  st        |      dkD  rt        j                  d      t        j                  d|      st        j                  d      t        j                  d|      rt        j                  d      |j                         }|S )	Nr@  r   r   r   r   r   r   r   )	rT   rU   rV   r   r   rW   rX   r   rZ   )r   r@  r\   s      r   clean_pu_namez ProductionUnitForm.clean_pu_name
  s    ##''	2w<!s7|c1''F  xx/9'' C  99Y(''(HII ' 2 2 4r   c                 ~    | j                   j                  d      }t        j                  d|      st	        d      |S r   ri   rj   s     r   r   z#ProductionUnitForm.clean_contact_no
  s?    ((,,\:xx*L9!d  r   N)r   r   r   r/   r   rm   rn   r@  rA  rB  r   r   r   r   r   r   r   r   r   ro   r&   r   rp   rq   r)   rF  r   r.   r   r   r=  r=  
  s   
 
& eooug~%>?G
 "%//ug~%>?K eooug~%>?G U__ug~%>?F
 5??ug~%>?D
 uug~%>?H
 (ug~%>?
 "u!!u~S%QRH
 uu~:%VWH
  u~:%VWI
 !ug~%>?J
 Eug~%>?E %//ug~%>?C U!#56u||6oN
 F&r   r=  c                   8   e Zd Z G d d      Z ej
                  dej                   ej                  dddd      d	
      Z	 ej                  d ej                  ddddd      d	      Z ej                  d ej                  dddddd      d	      Zy)FAQFormc                       e Zd ZeZdZy)FAQForm.Meta)rq  questionanswerN)r   r   r   FAQr,   r-   r.   r   r   r/   rK  
  s    3r   r/   r  rq  rp  r2   )r  r@   r1   r3   Tr  QuestionrL  question_idr  rL  r4   AnswerrM  	answer_idr  (   )r  r@   r1   r  colsN)r   r   r   r/   r   rp   rN  CATEGORY_CHOICESrq   rq  rm   rn   rL  r  rM  r.   r   r   rI  rI  
  s    4 4 !u  $$u||##
 
 	H uu#	&
  	H U__u~~#%
  
Fr   rI  c                   P    e Zd Z ej                   e             Z G d d      Zy)AboutUsFormry   c                       e Zd ZeZddgZy)AboutUsForm.Metacontentr,  N)r   r   r   AboutUsr,   r-   r.   r   r   r/   rY  
  s    W%r   r/   Nr   r   r   r   rm   r	   rZ  r/   r.   r   r   rW  rW  
  s    eoo^%56G& &r   rW  c                   P    e Zd Z ej                   e             Z G d d      Zy)PrivacyPolicyFormry   c                       e Zd ZeZdgZy)PrivacyPolicyForm.MetarZ  N)r   r   r   PrivacyPolicyr,   r-   r.   r   r   r/   r`  
  s    r   r/   Nr\  r.   r   r   r^  r^  
      eoo^%56G r   r^  c                   P    e Zd Z ej                   e             Z G d d      Zy)TermsAndConditionsFormry   c                       e Zd ZeZdgZy)TermsAndConditionsForm.MetarZ  N)r   r   r   r|  r,   r-   r.   r   r   r/   rf  
  s    "r   r/   Nr\  r.   r   r   rd  rd  
  rb  r   rd  c                        e Zd Z G d d      Zy)ContactUsFormc                       e Zd ZeZddgZy)ContactUsForm.Metar(   r&   N)r   r   r   	ContactUsr,   r-   r.   r   r   r/   rj  
  s     '*r   r/   Nr  r.   r   r   rh  rh  
  s    + +r   rh  c                        e Zd Z G d d      Zy)
AppUrlFormc                       e Zd ZeZddgZy)AppUrlForm.Metaplaystore_linkappstore_linkN)r   r   r   AppUrlr,   r-   r.   r   r   r/   ro  
  s    "O4r   r/   Nr  r.   r   r   rm  rm  
  s    5 5r   rm  c                   P    e Zd Z ej                   e             Z G d d      Zy)RefundPolicyFormry   c                       e Zd ZeZdgZy)RefundPolicyForm.MetarZ  N)r   r   r   ReturnPolicyr,   r-   r.   r   r   r/   rv  
  s    r   r/   Nr\  r.   r   r   rt  rt  
  rb  r   rt  c            	          e Zd Z G d d      Z ej
                  d ej                  dddd      	      Z ej                  d
 ej                  dd
d      d      Z
 ej                  d ej                  ddd      d      Z ej                  d ej                  ddd      d      Z ej                  d ej                  dddd      d      Z ej                  d ej                  ddd      d      Zd Zy)CustomOrderFormc                       e Zd ZeZdZy)CustomOrderForm.Meta)order_ID	sub_totaltaxes_and_chargesdelivery_chargesdiscountgrand_totalN)r   r   r   Ordersr,   r-   r.   r   r   r/   r{  
  s    nr   r/   r|  r2   order_Idrv   rx   r3   r8   r}  r?   Tr4   r~  r  r  r  c                     | j                   j                  d      }t        |      dk  rt        j                  d      |S )Nr  r   z$Grand Total should be greater than 0r  )r   r  s     r   clean_grand_totalz!CustomOrderForm.clean_grand_total  sC    ''++M:{a''6  r   N)r   r   r   r/   r   rm   rn   r|  r   r   r}  r~  r  r  r  r  r.   r   r   ry  ry  
  s5   o o
 uZO 9 H !   u  {'STI )((! u  GZ'[\
 (u''  u  GY'Z[ #%"" u  }bf'ghK  u u  z'RSHr   ry  c            
       D    e Zd Z G d d      Z ej
                  d ej                  ddddd	      d
      Z ej                  de	j                   ej                  ddd	      d
      Z ej
                  d ej                  dddd	      d      Z fdZ xZS )MessageFormc                       e Zd ZeZdZy)MessageForm.Meta)message_typesubjectr  N)r   r   r   Messager,   r-   r.   r   r   r/   r     s    7r   r/   r  r2   5zEnter your message here...message_inputr  r3   Tr4   zMessage Typer=   message_type_selectr?   r  SubjectzEnter email subject...subject_input)r1   rK  r@   Fc                     t         |          }|j                  d      }|j                  d      }|dk(  r|s| j                  dd       |S )Nr  r  r&   z'Subject is required for email messages.)r   r  rU   	add_error)r   rT   r  r  r   s       r   r  zMessageForm.cleanC  sO    w}#''7""9- 7"7NN9&OPr   )r   r   r   r/   r   rm   r  r  rp   r  MESSAGE_TYPE_CHOICESrq   r  rn   r  r  r   r   s   @r   r  r    s    8 8 eoou~~#7!	%
  	G %5$$,,u||/'#
  L eoou#3!&
 
 G	 	r   r  c            
       4   e Zd Z G d d      Z ej
                  ej                  j                          ej                  ddddd      d	d
id      Z
 ej                  ej                  j                          ej                  dddd      d	di      Zy)YouMayAlsoLikeFormc                       e Zd ZeZdZy)YouMayAlsoLikeForm.Meta)rs  liked_productsN)r   r   r   YouMayAlsoLiker,   r-   r.   r   r   r/   r  P  s    
r   r/   rs  product_selectzform-control select2zSelect Product)r  r@   r1   rK  r3   r7   zPlease select a product.T)r   r6   r   r7   r2   r   r  r  r  r   N)r   r   r   r/   r   r  rn  r   r   rq   rs  r   r   r  r.   r   r   r  r  O  s    
 
 %e$$0@0@0D0D0F|u||kt  }M  Xn  O  cP  PQ  cm  oI  bJ  TX  YG3U33!!%%'#u##NDXd*ef"$IJNr   r  c                        e Zd Z G d d      Zy)DeliverySettingsFormc                       e Zd ZeZg dZ ej                  ddi       ej                  ddi       ej                  ddi       ej                  ddi       ej                  ddi      dZy)DeliverySettingsForm.Meta)base_feebase_km
per_km_feefree_delivery_min_order_valuefree_delivery_max_distancer1   r2   r3   N)	r   r   r   DeliverySettingsr,   r-   r   r   widgetsr.   r   r   r/   r  `  s     

 *)).0IJ(u((/HI+%++7N2KL->U->->g~E^-_*;%*;*;7NB[*\
r   r/   Nr  r.   r   r   r  r  _  s    
 
r   r  c                        e Zd Z G d d      Zy)DeliveryDiscountFormc                   x    e Zd ZeZddgZ ej                  ddi       ej                  ddi      dZdddZ	y	)
DeliveryDiscountForm.Metamin_order_valuediscount_percentr1   r2   r3   )r  r  u   Starts From Order Value (₹)z
Discount %N)
r   r   r   DeliveryDiscountr,   r-   r   r   r  labelsr.   r   r   r/   r  o  sR     #%780u007PQ 1 1 1.8Q R

  ? ,
r   r/   Nr  r.   r   r   r  r  n  s    

 

r   r  c                        e Zd Z G d d      Zy)CustomCouponSettingsFormc                       e Zd ZeZg dZ ej                  ddi       ej                  ddddd       ej                  ddi       ej                  ddi       ej                  ddi      d	Z
d
ddddZy)CustomCouponSettingsForm.Meta)coupon_namecoupon_descriptionlower_limit_pricehigher_limit_pricediscount_amountr1   r2   r3   r  r  r  r  )r  r  r  r  r  r~  zCoupon DescriptionzLower Order PricezUpper Order Price)r  r  r  r  N)r   r   r   CustomCouponSettingsr,   r-   r   rn   r  r   r  r  r.   r   r   r/   r  |  s    $t*5??'>1JK"0%..'2*	9 #  1u007PQ!2!2!2'>9R!S"3%"3"37N:S"T
 )"6 3"5	
r   r/   Nr  r.   r   r   r  r  {  s    
 
r   r  c                   2     e Zd Z G d d      Z fdZ xZS )ShopSlobIdFormc                       e Zd ZeZddgZy)ShopSlobIdForm.Metashopslob_idN)r   r   r   
ShopSlobIdr,   r-   r.   r   r   r/   r    s    )$r   r/   c                 |   t         |          }|j                  d      }|j                  d      }|rCt        j                  j                  |      j                         rt        j                  d      |rCt        j                  j                  |      j                         rt        j                  d      |S )Nr  r  )r  z)This shop already has a Slob ID assigned.)r  z1This Slob ID is already assigned to another shop.)	r   r  rU   r  r   r   r   r   r   )r   rT   r  r  r   s       r   r  zShopSlobIdForm.clean  s    w}'""9- J&&--4-8??A''; 
 z))000AHHJ''C  r   )r   r   r   r/   r  r   r   s   @r   r  r    s    % % r   r  )CPILr   djangor   django.appsr   
cms.modelsdjango.formsr   shops.modelsaccounts.modelsproducts.modelsorders.modelsdjango.forms.modelsr   ckeditor.widgetsr	   django.core.validatorsr
   django.core.exceptionsr   rW   decimalr   r   r   r\  r   	ModelFormr    rs   r   r   r   rD  r^  r  r  r  r  r   r  r  r*  r4  rF  rV  ri  r  r  r  r  r=  rI  rW  r^  rd  rh  rm  rt  ry  r  r  r  r  r  r  r.   r   r   <module>r     s       &     5 + 1 2 	 - /
,U-- ,Ru RjP5?? PfAu AHIeoo IXK5?? KdiU__ iXQ%// Qf@eoo @L&(>(> &EOO .
eoo 
LEOO L^Seoo St!& !&Jgeoo gV'$eoo '$Z   Fu\ u\v.u .DKL5?? KLl~U__ ~R{ {L D%eoo %P&%// & U__ +EOO +
5 5
u 2eoo 2h-%// -`  
5?? 

5?? 

u 
2U__ r   