
    ڬfN                         d dl mZ ddlmZ ddlZddlZd dlmZ ddl	m	Z	m
Z
 ddlmZ d Zd	 Zd
 Zd ZddZd Zd Zd Zd ZddZd Zy)   )ValidationError    )validate_emailN)validation_msg)datetimetimezone)settingsc                 (   i }| j                   dk(  r|j                  | j                         nx| j                   dv r|j                  | j                         nN| j                   dv r@	 | j                  j                  d      }|j                  t        j                  |             |D cg c]  }||vs||   r| }}|rt        ddj                  |             y # t        j                  t        f$ r t        t        d          w xY wc c}w )NGET)POSTPUT)r   DELETEzutf-8jsonzMissing required parameters: z, )methodupdater   databodydecoder   loadsJSONDecodeErrorUnicodeDecodeErrorr   r   join)requestrequired_paramsrequest_datarequest_bodyparammissing_paramss         :D:\SB Projects\Vendor-App\main-backend\utils\validation.pyvalidate_required_paramsr    
   s   L ~~GKK(	?	*GLL)	,	,	?"<<..w7L

< 89
 *9qE<U]ijo]peqNq =dii>W=XYZZ  $$&89 	?!^F%;$<>>	? rs   '?C *D9D-Dc                     | j                   j                  d      }|t        |      dz
     j                         }||vrt	        t
        d          y )N.r   file)namesplitlenlowerr   r   )r#   
valid_type
file_split	file_types       r   validate_file_typer+      sP    %JC
OA-.446I
"!7 8:: #    c                    |D ]  }|dk(  rt        |       t        j                  d|      ru|j                  d      }|d   dk(  rt	        | |d d t        |d                _|d   dk(  rt	        | |d t        |d         d        t	        | |t        |d         d d        |dk(  rt        | |       |d	k(  rt        | |       |d
k(  rt        | |       |dk(  st        | |        y )Nemaillength:r   max   mincapital_lettersmall_letternumberspecial_characters)
is_emailresearchr%   
has_lengthinthas_capital_letterhas_small_letter
has_numberhas_special_character)keyvalvalidations
validationlen_strs        r   validaterF   %   s    " +
SMYYx
+ &&s+GqzE!3s4S_=U"3s4GAJ= 3s3wqz?4=**s3'.(S%("s3..!#c*)+r,   c                 b    	 t        |        y# t        $ r}t        t        d         d }~ww xY w)NTr.   )django_validate_email	Exceptionr   r   )valuees     r   r8   r8   <   s2    7e$ 7nW5667s    	.).c                    |(t        |      |k7  rt        t        d    d|  d|       |)t        |      |k  rt        t        d    d|  d| d      |*t        |      |kD  rt        t        d    d|  d| d      y y )Nr/   z: z length should be exactly z must be at least z characters long.r0   )r&   r   r   )rA   rB   exact_length
min_length
max_lengths        r   r;   r;   C   s    CH$<!9 :"SEA[\h[ijkk #c(:"5!9 :"SEAST^S__pqrr#c(:"5!9 :!C5@RS]R^^opqq #6r,   c                 L    t        d |D              st        t        d         y )Nc              3   <   K   | ]  }|j                           y wN)isupper.0cs     r   	<genexpr>z%has_capital_letter.<locals>.<genexpr>P        (qqyy{(   r4   anyr   r   rA   rB   s     r   r=   r=   O   s&    (C((n-=>?? )r,   c                 L    t        d |D              st        t        d         y )Nc              3   <   K   | ]  }|j                           y wrR   )islowerrT   s     r   rW   z#has_small_letter.<locals>.<genexpr>T   rX   rY   r5   rZ   r\   s     r   r>   r>   S   s%    (C((n^<== )r,   c                 L    t        d |D              st        t        d         y )Nc              3   <   K   | ]  }|j                           y wrR   )isdigitrT   s     r   rW   zhas_number.<locals>.<genexpr>Y   rX   rY   r6   rZ   r\   s     r   r?   r?   X   s%    (C((nX677 )r,   c                 L    t        d |D              st        t        d         y )Nc              3   $   K   | ]  }|d v  
 yw)z !@#$%^&*()-_=+[{]};:'",<.>/?\|`~N rT   s     r   rW   z(has_special_character.<locals>.<genexpr>^   s     FQq88Fs   r7   rZ   r\   s     r   r@   r@   ]   s'    F#FF~.BCD	D Gr,   c                     ||i} | j                   j                  di |j                         st        t        d          y )Nforeign_keyre   )objectsfilterexistsr   r   )model_classfield_value
field_namefilter_kwargss       r   is_valid_foreign_keyro   b   sG    -M%;%%66==?!> ?AA @r,   c                     t        j                  dt         j                        }|j                  |      st	        t
        d          y )Nz^(?:http|ftp)s?://(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|localhost|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\[?[A-F0-9]*:[A-F0-9:]+\]?)(?::\d+)?(?:/?|[/?]\S+)$url)r9   compile
IGNORECASEmatchr   r   )rA   rB   url_patterns      r   validate_urlrv   h   sF    **	 MM+K S!!6 799 "r,   )NNN)r   )	exceptionr   django.core.validatorsr   rH   r   r9   r   r   r   r   django.confr	   r    r+   rF   r8   r;   r=   r>   r?   r@   ro   rv   re   r,   r   <module>rz      sV    & J  	   '  [*;+.7	r@>
8
E
B
:r,   