
    k7he
                         S SK JrJrJr  S SKJrJrJr  S SKJr  S SK	J
r
   " S S\5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)    )	BaseModelFieldmodel_validator)OptionalListLiteral)datetime)ObjectIdc                       \ rS rSrSrSrSrg)GeofenceShape   circlepolygon N)__name__
__module____qualname____firstlineno__CIRCLEPOLYGON__static_attributes__r       NC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\models\platform\geofences.pyr   r      s    FGr   r   c                   6    \ rS rSr% \S   \S'   \\   \S'   Srg)GeoJSONPoint   Pointtypecoordinatesr   N)	r   r   r   r   r   __annotations__r   floatr   r   r   r   r   r      s    
'
er   r   c                       \ rS rSr% \\S'   Sr\\   \S'   \\S'   Sr\\   \S'   \	S   \S'   Sr
\\   \S	'   Sr\\   \S
'   Sr\\\\         \S'   \" SS9S 5       rSrg)GeofenceBase   
account_idNuser_idnamedescriptionr   r   shapecenterradiusr   aftermodec                 .   U R                   S:X  a,  U R                  (       a  U R                  c  [        S5      e U $ U R                   S:X  aH  U R                  (       d  [        S5      e[        S U R                   5       5      (       d  [        S5      eU $ )Nr   z8Circle geofence must include both 'center' and 'radius'.r   z,Polygon geofence must include 'coordinates'.c              3      #    U  HC  n[        U[        5      =(       a'    [        U5      S :H  =(       a    [        S U 5       5      v   ME     g7f)   c              3   B   #    U  H  n[        U[        5      v   M     g 7fN
isinstancer!   .0vs     r   	<genexpr>?GeofenceBase.validate_shape_fields.<locals>.<genexpr>.<genexpr>#   s     Bcab\]:aQVCWCWab   Nr6   listlenallr8   cs     r   r:   5GeofenceBase.validate_shape_fields.<locals>.<genexpr>#   s;     ~m}hiz!T*cs1v{csBcabBc?ccm}   AA0Each coordinate must be a [lng, lat] float pair.r*   r+   r,   
ValueErrorr   r@   selfs    r   validate_shape_fields"GeofenceBase.validate_shape_fields   s    ::!;;$++"5 ![\\ #6  ZZ9$## !OPP~mqm}m}~~~ !STTr   r   )r   r   r   r   strr    r&   r   r(   r   r+   r   r,   r!   r   r   r   rJ   r   r   r   r   r#   r#      s    O!GXc]!
I!%K#%&''%)FH\")"FHUO"/3K$tE{+,3'"	 #	r   r#   c                       \ rS rSrSrg)GeofenceCreate(   r   N)r   r   r   r   r   r   r   r   rN   rN   (   s    r   rN   c                       \ rS rSr% Sr\\   \S'   Sr\\   \S'   Sr	\\
S      \S'   Sr\\   \S'   Sr\\   \S'   Sr\\\\         \S	'   \" S
S9S 5       rSrg)GeofenceUpdate,   Nr'   r(   r)   r*   r+   r,   r   r-   r.   c                    U R                   S:X  a'  U R                  b  U R                  c  [        S5      eU $ U R                   S:X  a=  U R                  (       a,  [        S U R                   5       5      (       d  [        S5      eU $ )Nr   z;If 'shape' is 'circle', 'radius' is required with 'center'.r   c              3      #    U  HC  n[        U[        5      =(       a'    [        U5      S :H  =(       a    [        S U 5       5      v   ME     g7f)r2   c              3   B   #    U  H  n[        U[        5      v   M     g 7fr4   r5   r7   s     r   r:   AGeofenceUpdate.validate_shape_fields.<locals>.<genexpr>.<genexpr>:   s      WxvwqrXbcdfkXlXlvwr<   Nr=   rA   s     r   r:   7GeofenceUpdate.validate_shape_fields.<locals>.<genexpr>:   sG       ,T  CS}~Jq$,?,xCFaK,xTWWxvwWxTx,x  CSrD   rE   rF   rH   s    r   rJ   $GeofenceUpdate.validate_shape_fields4   s    ::!{{&4;;+> !^__  ZZ9$  ,T  CG  CS  CS  ,T  )T  )T !STTr   r   )r   r   r   r   r'   r   rL   r    r(   r*   r   r+   r   r,   r!   r   r   r   rJ   r   r   r   r   rQ   rQ   ,   s    D(3-!%K#%48E8G/018%)FH\")"FHUO"/3K$tE{+,3'" #r   rQ   c                   h    \ rS rSr% Sr\\   \S'   \" \	R                  S9r\	\S'    " S S5      rSrg)	Geofence?   Nid)default_factorycreated_datec                   $    \ rS rSrSrSr\\0rSr	g)Geofence.ConfigC   Tr   N)
r   r   r   r   populate_by_namefrom_attributesr
   rL   json_encodersr   r   r   r   Configr`   C   s    !3r   re   r   )r   r   r   r   r\   r   rL   r    r   r	   utcnowr^   re   r   r   r   r   rZ   rZ   ?   s-    B"8??CL(C( (r   rZ   c                   0    \ rS rSr% \\S'   \\   \S'   Srg)GeofencesListI   total_countusersr   N)	r   r   r   r   intr    r   rZ   r   r   r   r   rh   rh   I   s    >r   rh   N)pydanticr   r   r   typingr   r   r   r	   bsonr
   rL   r   r   r#   rN   rQ   rZ   rh   r   r   r   <module>rp      sk    6 6 * *  C 
9 
9 .	\ 	Y &(| (I r   