
    Mg                     \   d dl Z d dlZd dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlmZ d dlmZ  G d de
j6                        Z G d de      Z G d de      Z G d de      Z G d de      Z  eee      d        Z! G d de      Z"y)    N)ImageExifTags)display)User)models)	post_save)receiver)get_random_string)ProcessedImageFieldImageSpecField)ResizeToFillResizeToCover)generate_qr_code)Quizc                   l    e Zd Z ej                  d      Z ej                  d      Z G d d      Zy)TimeStampMixinT)auto_now_add)auto_nowc                       e Zd ZdZy)TimeStampMixin.MetaTN)__name__
__module____qualname__abstract     9/var/www/peopleoo.sandbox-dev.co.uk/apps/carers/models.pyMetar      s    r   r   N)r   r   r   r   DateTimeField
created_at
updated_atr   r   r   r   r   r      s0    %%%48J%%%t4J r   r   c                       e Zd Z ej                  eej                        Z ej                  ddd      Z	 ej                  ddd      Z
 ej                  dd      Z ej                  d      Z ej                  dd      Z ej                  dd      Z ed	 ed
d
      gdddi      Z ej*                  ddd      Z ej                  dddd      Z ej*                  ddd      Z ej                  ddd      Z ej                  d      Z ej                  ddd      Z ej                  d      Z fdZed        Zed        Z d Z!d Z" xZ#S )Profile	on_deleted   T
max_lengthnullblank)r)   r*   Fdefault)r*   r)   avatarn   WEBPqualityZ   )source
processorsformatoptionsavatars)	upload_tor)   r*      )r(   uniquer*   editableqr_codes)r7   r*   r)      c                    | j                   s| j                         | _         | j                  st        | j                         | _        | j                  rpt        | j                  d      rZt        | j                  j                  d      r:| j                  | j                  j                         t        t        | /  dg       | j                         | _        t        t        | .  |i | y )Nfilenamer-   )update_fields)pingenerate_unique_pinqr_coder   r-   hasattrr>   correct_image_orientationpathsuperr#   savecalculate_display_namedisplay_nameselfargskwargs	__class__s      r   rH   zProfile.save4   s    xx//1DH ||+DHH5DL ;;74;;7GDKKDTDTV\<]**4;;+;+;<'4%XJ%? 779gt!4262r   c                 0   	 t        j                  |       5 }|j                         }|rt        j                  j                         D ]+  }t        j                  |   dk(  s|j                  |      } n t        d        |dk(  r|j                  dd      }n1|dk(  r|j                  dd      }n|d	k(  r|j                  d
d      }|j                  |        d d d        y # 1 sw Y   y xY w# t        $ r}t        d|        Y d }~y d }~ww xY w)NOrientationzImage orientation:    r<   T)expandr8   i     r1   zError processing image: )r   open_getexifr   TAGSkeysgetprintrotaterH   	Exception)
image_pathimageexiforientationorientation_valuees         r   rE   z!Profile.correct_image_orientationH   s   	2J' +5~~''/}}'9'9'; "#==5F040E-!"
 /0A/BCD )A- %S >*a/ %S >*a/ %R =JJz*%+ + +(  	2,QC011	2s<   C4 A
C("A=C(C4 (C1-C4 1C4 4	D=DDc                  :   d} t         j                  t         j                  z   }t        | |      }t        j
                  j                  |      j                         r<t        | |      }t        j
                  j                  |      j                         r<|S )Nr8   )lengthallowed_chars)rA   )stringascii_lowercasedigitsr
   r#   objectsfilterexists)rd   re   rA   s      r   rB   zProfile.generate_unique_pinb   sx    ..>v]Koo$$$-446#6OC oo$$$-446 
r   c                     | j                   S N)rJ   rL   s    r   __str__zProfile.__str__m   s       r   c                 D   | j                   j                  r| j                  r{| j                  r3| j                   j                   d| j                   j                  d    dS | j                   j                   d| j                   d| j                   j                   S | j                  r3| j                   j                   d| j                   j                  d    dS | j                   j                   d| j                   j                   S | j                   j
                  S )N r   .z (z) )user
first_namepreferred_nameenabled_privacy_mode	last_nameusernamern   s    r   rI   zProfile.calculate_display_namep   s    99"",,"ii2231TYY5H5H5K4LANN"ii2232d6I6I5J"TYYM`M`Labb,,"ii2231TYY5H5H5K4LANN"ii2231TYY5H5H4IJJ 99%%%r   )$r   r   r   r   OneToOneFieldr   CASCADErs   	CharFieldmiddle_namesemployer_name
EmailFieldemployer_emailBooleanFieldhas_completed_setup	TextFieldhobbies
extra_textr   r   avatar_thumbnail
ImageFieldr-   rA   rC   ru   rv   rJ   sent_welcome_emailrH   staticmethodrE   rB   ro   rI   __classcell__rO   s   @r   r#   r#      s   6?D#6##sTJL$F$$$dKM&V&&D=N-&--e<fT5G!!!48J%X2>sC2H1I-3/8"o( VTJF
&

aD5
QCf*DtLG%V%%4tLN.6..u=#6##sTJL,,,U;3( 2 22  !&r   r#   c                   t    e Zd Z ej                  d      Z ej                  eej                        Z	d Z
y)Qualification   r(   r$   c                     | j                   S rm   r?   rn   s    r   ro   zQualification.__str__       yyr   Nr   r   r   r   r{   r?   
ForeignKeyr   rz   rs   ro   r   r   r   r   r      1    6s+D6TV^^<Dr   r   c                   t    e Zd Z ej                  d      Z ej                  eej                        Z	d Z
y)WorkExperiencer   r   r$   c                     | j                   S rm   r   rn   s    r   ro   zWorkExperience.__str__   r   r   Nr   r   r   r   r   r      r   r   r   c                       e Zd ZdZ ej
                  eej                  d      Z ej                  ed      Z
 ej                         Z ej                  ddd      Z ej                  ddd      Z ej                  ddd      Z ej                  d	      Z ej$                         Z ej                  d	      Z ej*                  d
      Z ej*                  d
      Z ej                  d	      Z fdZ xZS )Review))   z1 Star)   z2 Stars)rR   z3 Stars)   z4 Stars)   z5 Starsreviews)r%   related_namer   )choicesr,      Tr'   r   Fr+   c                 r   | j                   r| j                  rW| j                  r&| j                   d    | j                  d    | _        nY| j                    d| j                  d    d| _        n4| j                  r| j                   d    | _        n| j                    | _        t	        t
        |   |i | y )Nr   rq   rr   )reviewer_first_namereviewer_last_namedisplay_initials_onlyreview_display_namerG   r   rH   rK   s      r   rH   zReview.save   s    ##&&--262J2J12M1NtOfOfghOiNj/kD,262J2J1K1TMdMdefMgLhhi/jD,--262J2J12M1ND,262J2J1KD,fd $1&1r   )r   r   r   STAR_CHOICESr   r   r   rz   rs   IntegerFieldratingr   textr{   reviewer_namer   r   reviewer_phoner~   reviewer_emailrelationship_to_userr   is_flagged_for_reviewr   r   rH   r   r   s   @r   r   r      s   L 6TV^^)TD V  qAF6D$F$$$dKM*&**cDQ)))St4P%V%%5N&V&&(N+6++s;/F//>/F//>*&**c:2 2r   r   )senderc                 J    |r!t         j                  j                  |       y y )N)rs   )r#   ri   create)r   instancecreatedrN   s       r   create_user_profiler      s    H- r   c                       e Zd Z ej                  ej                  d      Z ej                  eej                  d      Z
y)UserActivationCodeF)r,   r:   T)r%   r9   N)r   r   r   r   	UUIDFielduuiduuid4r   r   rz   rs   r   r   r   r   r      s4    6DJJ?D6TV^^DIDr   r   )#rf   r   PILr   r   django.contrib.adminr   django.contrib.auth.modelsr   	django.dbr   django.db.models.signalsr   django.dispatchr	   django.utils.cryptor
   imagekit.modelsr   r   pilkit.processorsr   r   apps.carers.lib.qr_code_genr   apps.quiz.modelsr   Modelr   r#   r   r   r   r   r   r   r   r   <module>r      s       ( +  . $ 1 ? 9 8 !V\\ b&n b&JN ^ %2^ %2T 
)D!. ".J Jr   