
    si#                     6   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 d dlmZ d d	lmZmZmZ d d
lmZ d dl ed        Zed        Ze ed      d               Ze ed       ed      d                      Ze ed       ed      d                      Z ej:                  d      r%d dlmZ e ed       ed      d                      Z  ej:                  d      r&d dl!m"Z" e ed       ed      d                      Z#yy)    )datetime)apps)messages)HttpResponseJsonResponse)get_object_or_404redirect)Flow)build)logger)check_integration_enabledlogin_requiredpermission_required)get_google_credentials)*c           	         t         j                  j                  | j                  j                  j                               j                         }|s!t        j                  | d       t        d      S | j                  d      }t        j                  d|j                  |j                  dd|j                  did	d
g|      }|j!                  ddd      \  }}|| j"                  d<   t        |      S )N
company_id"Google Cloud Credential not found.
gmeet-view/meet/auth-callback/web)https://accounts.google.com/o/oauth2/auth*https://accounts.google.com/o/oauth2/token	client_idclient_secretauth_uri	token_uriredirect_uris(https://www.googleapis.com/auth/calendar6https://www.googleapis.com/auth/meetings.space.createdscopesredirect_uriofflineconsenttrue)access_typepromptinclude_granted_scopesoauth_state)GoogleCloudCredentialobjectsfilteruseremployee_getget_companyfirstr   errorr	   build_absolute_urir
   from_client_configr   r   redirect_uri_listauthorization_urlsession)requestcredr%   flowauth_urlstates         6/var/www/python-projects/worksol/horilla_meet/views.pygoogle_authenticater@      s     !((//<<,,88: 0 eg 	 w DE%%--.DEL""!^^!%!3!3GI!%!7!7	
 7D
 "D" ,,% - OHe &+GOOM"H    c           	         | j                   j                  dd       }|r|| j                  j                  d      k7  rt	        dd      S t
        j                  j                  | j                  j                  j                               j                         }| j                  d      }t        j                  d|j                  |j                   d	d
|j"                  diddg|      }|j%                  | j                                |j&                  }t(        j+                  | j                  j                  |       t-        j.                  | d       t1        d      S )Nr,   r>   zInvalid statei  )statusr   r   r   r   r   r   r!   r"   r#   )authorization_responsez3Successfully authenticated with Google credentials.r   )r9   popGETgetr   r-   r.   r/   r0   r1   r2   r3   r5   r
   r6   r   r   r7   fetch_tokencredentialsGoogleCredentialfrom_google_credentialsr   successr	   )r:   r>   r;   r%   r<   rI   s         r?   google_auth_callbackrM   :   s7    OOt4EEW[[__W55OC88 ((//<<,,88: 0 eg 	 --.DEL""!^^!%!3!3GI!%!7!7	
 7D
 "D" 	G,F,F,HI""K,,W\\-F-FTWSTL!!rA   z*horilla_meet.delete_googlecloudcredentialsc                    	 t         j                  j                  |      j                          t	        j
                  | d       t        d      S # t         j                  $ r$ t	        j                  | d       t        d      cY S t        $ r.}t	        j                  | d|        t        d      cY d }~S d }~ww xY w)Nidz-Google Cloud Credential deleted successfully. r   z(Error deleting Google Cloud Credential: )
r-   r.   rG   deleter   rL   r   DoesNotExistr4   	Exception)r:   obj_ides      r?   delete_google_credentialsrW   `   s    	 %%))V)4;;="QRB --  w DEB  w"J1# NOB s$   AA 4B=B=#B82B=8B=zhorilla_meet.add_googlemeetinghorilla_meet)app_namec                     t         j                  j                  | j                  j                        }|j                         st        d      S y )N)employee_idzauthenticate-gmeet)rJ   r.   r/   r0   r1   existsr	   )r:   google_credetials     r?   create_google_meet_linkr^   o   sL     (//66LL-- 7  ""$,-- %rA   z!horilla_meet.delete_googlemeetingc                 `   t        t        |      }	 |j                  }|rHt        |       }t	        dd|      }|j                         j                  d|      j                          |j                          t        j                  | d       | j                  j                  dd	      rt        d
      S t        d      S # t        j                  $ r$ t        j                  | d       t        d      cY S t         $ r.}t        j                  | d|        t        d      cY d }~S d }~ww xY w)NrO   calendarv3)rI   primary)
calendarIdeventIdz!Google Meet deleted successfully.detail_viewFzgmeet-list-viewrQ   zGoogle Meeting not found.zError deleting Google Meeting: )r   GoogleMeetingevent_idr   r   eventsrR   executer   rL   rF   rG   r	   r   rS   r4   rT   )r:   rP   meetingrg   rI   servicerV   s          r?   delete_google_meetrl   z   s      "5G ##09KJ+FGNN##y(#KSSU"EF;;??=%0-..B%%  w ;<B  w"A! EFB s*   B"C 6
C 4D-7D-?#D("D-(D-recruitment)InterviewSchedulec                    | j                   j                  d      }	 t        t        |      }d|j                   }|j                  xs d|j                   }t        j                  |j                  |j                        }|j                  j                         D cg c]  }|j!                          }}|j#                  |j                  j%                                t&        j(                  j+                  |      j-                         }	|	r|	j.                  j0                  }
nd }
	 t2        j(                  j5                  |
||||d      \  }}|j7                          |	s!t&        j(                  j9                  ||	       |rt;        j<                  | d
       nt;        j<                  | d       t        ddi      S # t        $ r/}t        j                  d|        t        d|i      cY d }~S d }~ww xY wc c}w # t        $ rG}t        j                  d|        t;        j                  d|        t        d|i      cY d }~S d }~ww xY w)NrP   rO   Error fetching interview: rL   zInterview for )	interviewtitle
start_timedescription	attendeesrP   defaults)rq   rj   Meeting created successfullyMeeting updated successfullyr(   (Error creating/updating Google Meeting: )rF   rG   r   rn   rT   r   r4   r   candidate_idru   r   combineinterview_dateinterview_timer[   allget_mailappend	get_emailInterviewMeetingLinkr.   r/   r3   rj   rP   rf   update_or_createrefresh_from_dbcreater   rL   )r:   rP   rq   rV   rs   ru   rt   employeerv   interview_meeting_link
meeting_idrj   createds                r?   create_inteview_google_meetingr      s0    [[__T"	0)*;CI
 !!7!7 89++X	@V@V?W/X%%$$i&>&>

 :C9N9N9R9R9TUXX&&(U	U//99;<!5!=!=!D!D "E "

%' 	 "/77::JJ	0,44EE"",#.!*	  F  GW ##%)$,,33' 4    *HI  *HIF 344U  	0LL5aS9:A//	0 VF  	0LLCA3GHNNEaSIJA//	0sB   G  G?,BH 	G<$G71G<7G<	I<I	IIpms)Meetingsc                 8   | j                   j                  d      }	 t        t        |      }|j                  }|j                  }d|j                   }|j                  j                         |j                  j                         z  }|D cg c]  }|j                          }	}t        j                  j!                  |      j#                         }
|
r|
j$                  j&                  }nd }	 t(        j                  j+                  |||||	d      \  }}|j-                          |
s!t        j                  j/                  ||	       |rt1        j2                  | d
       nt1        j2                  | d       t        ddi      S # t        $ r/}t        j                  d|        t        d|i      cY d }~S d }~ww xY wc c}w # t        $ rG}t        j                  d|        t1        j                  d|        t        d|i      cY d }~S d }~ww xY w)NrP   rO   rp   rL   zMeeting for )rj   rr   rw   )rj   google_meetingry   rz   r(   r{   )rF   rG   r   r   rT   r   r4   r   rs   dater[   r   managerr   PmsMeetingLinkr.   r/   r3   r   rP   rf   r   r   r   r   rL   )r:   rP   rj   rV   rs   rt   ru   	employeesr   rv   pms_meeting_linkr   Gmeetingr   s                 r?   create_pms_google_meetingr      s    [[__T"	0'R8G
 \\
$W]]O4''++-0C0C0EE	9BCXX&&(C	C)11888IOOQ)88;;JJ	0 - 5 5 F F"",#.!*	 !G !Hg $$&#&&--gh-W  *HI  *HIF 344K  	0LL5aS9:A//	0 D>  	0LLCA3GHNNEaSIJA//	0sB   F	 G1BG	 		G$F<6G<G		H<HHHN)$r   django.appsr   django.contribr   django.httpr   r   django.shortcutsr   r	   google_auth_oauthlib.flowr
   googleapiclient.discoveryr   base.backendsr   horilla.decoratorsr   r   r   horilla_meet.methodsr   horilla_meet.modelsr@   rM   rW   r^   rl   is_installedrecruitment.modelsrn   r   
pms.modelsr   r    rA   r?   <module>r      sd     # 2 8 * +   
 8 ! " "J "" ""J AB
  C 
  56N3. 4 7 . 89N3  4 :  . 4]#49:730 8 ; 30l 4U#9:7.0 8 ; .0 rA   