
    #Wgm'                        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  G d d	e          Z G d
 de          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 dZdZe	d             Zd dl mZ ddl
mZ d dlmZ d dlm	Z	 e	d             Zd dl mZmZ d dlm	Z	 ddl
mZ d dlmZ e	d             Zd dl mZ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m!Z! d dlmZ e	d             Z"e e	d                         Z#e	d             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 e	d             Z'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# Z/d"S )$    )renderredirect)ListView
DetailView)
connection)login_required   )Reuniao)ReuniaoFormc                   *     e Zd ZeZdZdZ fdZ xZS )ReuniaoListViewzreuniao/listar_reunioes.htmlreunioesc                     | j         j        j        r9| j         j        j        r(t	          j        | j         j        j        j                   t                                                      S N	requestuseris_authenticatedtenantr   
set_schemaschema_namesuperget_querysetself	__class__s    "/var/www/html/cag/reuniao/views.pyr   zReuniaoListView.get_queryset   V    <- 	H$,2C2J 	H!$,"3":"FGGGww##%%%    	__name__
__module____qualname__r
   modeltemplate_namecontext_object_namer   __classcell__r   s   @r   r   r   	   sH        E2M$& & & & & & & & &r   r   c                   *     e Zd ZeZdZdZ fdZ xZS )ReuniaoDetailViewzreuniao/detalhes_reuniao.htmlreuniaoc                     | j         j        j        r9| j         j        j        r(t	          j        | j         j        j        j                   t                                                      S r   r   r   s    r   r   zReuniaoDetailView.get_queryset   r   r   r    r(   s   @r   r*   r*      sH        E3M#& & & & & & & & &r   r*   )	timedelta)parse_datetime)criar_reuniao_no_teamszfabiano.alves@grfgraph.com.brz$fc126174-2892-4101-bc09-3239cd37c01ac                    | j         dk    rt          | j                  }t          d| j                   |                                r|                    d          }| j        |_        | j        j        r8t          | j        d          r#t          j        | j        j        j                   t          d|j        t          |j                             t!          |j        t"                    rVt          d|j                   t%          |j                  |_        t          d|j        t          |j                             | j        j        t(          k    rW	 t+          |j        |j        t.                    |_        nU# t2          $ r#}d |_        t          d	|            Y d }~n-d }~ww xY wt          d
| j        j         dt(           d           |                                 |                                 t7          d          S t          d|j                   nt                      }t;          | dd|i          S )NPOSTzDEBUG: POST DATA =F)commitr   z4DEBUG: Antes de salvar no model, reuniao.data_hora =z$DEBUG: data_hora veio como string =>zDEBUG: data_hora convertido =>u!   ❌ Erro ao gerar link do Teams: u   ⚠️ O usuário u#    não pode criar reuniões. Apenas z pode criar.listar_reunioesu   DEBUG: Form inválido =>zreuniao/agendar_reuniao.htmlform)methodr   r1   printis_validsaver   
criado_porr   hasattrr   r   r   r   	data_horatype
isinstancestrr.   emailORGANIZER_EMAILr/   tituloORGANIZER_ID
link_teams	Exceptionenviar_conviter   errorsr   )r   r4   r+   es       r   agendar_reuniaorH   1   sH   ~7<(("GL111==?? &	;iiui--G!(G |, Gx1P1P G%gl&9&EFFF H'J[]abibs]t]tuuu '+S11 d<g>OPPP$273D$E$E!68I4PWPaKbKbccc |!_44	C)?)$* *G&&
 ! C C C)-G&AaAABBBBBBBBC 7<+=bq  A  A  A LLNNN""$$$-...,dk::::}}'9FD>JJJs   %F 
F2F--F2)r   c           	      t   | j         j        r/| j         j        r#t          j        | j         j        j                   t          j                                        }g }|D ]H}|	                    |j
        |j                                        |j        |j        |j        d           It!          | dd|i          S )N)titlestarturlparticipantesresumozreuniao/calendario.htmleventos)r   r   r   r   r   r   r
   objectsallappendrA   r;   	isoformatrC   rM   rN   r   )r   r   rO   r+   s       r   
calendariorT   r   s    |$ ?)< ?gl1=>>> ""$$H G  ^&0022%$2n
 
 	 	 	 	 '4y'6JKKKr   )get_object_or_404r   c                 &   | j         j        r/| j         j        r#t          j        | j         j        j                   t          t          |          }| j        dk    r#|	                                 t          d          S t          | dd|i          S )Nidr1   r3   zreuniao/deletar_reuniao.htmlr+   )r   r   r   r   r   r   rU   r
   r5   deleter   r   r   pkr+   s      r   deletar_reuniaor\      s    |$ ?)< ?gl1=>>>B///G~)***'9Iw;OPPPr   )r   rU   r   )JsonResponse)require_POST)r   AtaFormc                    | j         j        r/| j         j        r#t          j        | j         j        j                   t          t          |          }| j        dk    rft          | j
        |          }|                                r%|                                 t          ddi          S t          d|j        d          S t          |          }t          | d||d	          S )
NrW   r1   )instancesuccessTF)rb   rF   zreuniao/editar_ata.html)r4   r+   )r   r   r   r   r   r   rU   r
   r5   r_   r1   r7   r8   r]   rF   r   )r   r[   r+   r4   s       r   
editar_atarc      s    |$ ?)< ?gl1=>>>B///G~w|g666==?? 	3IIKKKD 1222EEFFFG$$$D'47 7   r   c                 .   | j         j        r/| j         j        r#t          j        | j         j        j                   t          t          |          }|j        s,d|_        |	                                 t          ddi          S t          ddd          S )NrW   Trb   Fu   Ata já arquivada)rb   error)r   r   r   r   r   r   rU   r
   	arquivadar8   r]   rZ   s      r   arquivar_atarg      s     |$ ?)< ?gl1=>>>B///G / Y-...E4GHHIIIr   c           
         | j         j        r/| j         j        r#t          j        | j         j        j                   | j                            d          }|st          | dddi          S 	 t          j
                            |d                              d          }t          | d||d          S # t          $ r-}t          | ddd	t          |           i          cY d }~S d }~ww xY w)
Ndatazreuniao/buscar_atas.htmlre   u   Data não fornecidaT)data_hora__daterf   r;   )atasdata_pesquisazErro na busca: )r   r   r   r   r   r   GETgetr   r
   rP   filterorder_byrD   r>   )r   ri   rk   rG   s       r   buscar_atasrq      s5   |$ ?)< ?gl1=>>>;??6""D ]g9GEZ;[\\\%%  & 
 
 (;

 	
 g9!<
 <
   	    g9/s1vv//<
   	 	 	 	 	 	s   ,AB4 4
C+>"C& C+&C+)FileSystemStoragec                    | j         j        r/| j         j        r#t          j        | j         j        j                   | j        dk    rxd| j        vrt          ddid          S | j        d         }t                      }|
                    |j        |          }|                    |          }t          d|i          S t          ddid	          S )
Nr1   filere   zNenhum arquivo encontrado.i  )statusfile_urlu   Método inválido.i  )r   r   r   r   r   r   r5   FILESr]   rr   r8   namerL   )r   uploaded_filefsfilenamerv   s        r   upload_filer|      s    |$ ?)< ?gl1=>>>~&&*F GPSTTTTf-  77=-}==66(##Z2333"67DDDDr   )	send_mail)render_to_string)settingsNc                    t          | d          r;t          | j        d          r&| j        j        j        }t	          j        |           nt          d           dS d| j         }t          j	        d| j
                  }d |D             }|st          d           dS d	| j         d
| j                            d           d| j         d| j         dd                    |           
}t!          dd| i          }	 t#          ||t$          j        ||           t          dd                    |           d| d           dS # t(          $ r}t          d|            Y d}~dS d}~ww xY w)u3    Envia um convite por e-mail ao criar uma reunião r9   r   u4   ❌ Erro: Tenant não encontrado para esta reunião.Nu   Convite para Reunião: z[;,]\s*c                 ^    g | ]*}|                                 |                                 +S  )strip).0r?   s     r   
<listcomp>z"enviar_convite.<locals>.<listcomp>  s-    III5;;==IekkmmIIIr   u7   ❌ Nenhum destinatário válido para envio do convite.u%   Você foi convidado para a reunião: u   

📅 Data e Hora: z%d/%m/%Y %H:%Mu   
🔗 Link do Teams: u   

📝 Resumo: u   
👥 Participantes: z, zreuniao/email_convite.htmlr+   )html_messageu%   ✅ Convite enviado com sucesso para z
 (Schema: )u   ❌ Erro ao enviar convite: )r:   r9   r   r   r   r   r6   rA   resplitrM   r;   strftimerC   rN   joinr~   r}   r   DEFAULT_FROM_EMAILrD   )r   tenant_schemasubjectemailsrecipient_listmessager   rG   s           r   rE   rE      s    t\"" wt'I'I .:m,,,,DEEE555G Xj$"455FIIIIIN GHHH	; 	; 	;!^445EFF	; 	;#	; 	; 	; 	;  $yy88		; 	;  $$@4C  L
2'%	
 	
 	
 	
 	kdii6O6Okk[hkkklllll 2 2 20Q001111111112s   >AE 
E.E))E.)0django.shortcutsr   r   django.views.genericr   r   	django.dbr   django.contrib.auth.decoratorsr   modelsr
   reuniao.formsr   r   r*   datetimer-   django.utils.dateparser.   forms
teams_authr/   r@   rB   rH   rT   rU   r\   django.httpr]   django.views.decorators.httpr^   r_   rc   rg   rq   django.core.files.storagerr   r|   django.core.mailr}   django.template.loaderr~   django.confr   r   rE   r   r   r   <module>r      sk   - - - - - - - - 5 5 5 5 5 5 5 5             9 9 9 9 9 9       % % % % % %	& 	& 	& 	& 	&h 	& 	& 	&	& 	& 	& 	& 	&
 	& 	& 	& . - - - - - - - 9 9 9 9 9 9                   1 1 1 1 1 1             . . . . . .15.K .K .Kv $ # # # # #                   9 9 9 9 9 9L L L( 9 8 8 8 8 8 8 8 9 9 9 9 9 9                  
Q 
Q 
Q A @ @ @ @ @ @ @ @ @ $ $ $ $ $ $ 5 5 5 5 5 5 9 9 9 9 9 9                   ' ' ' ' ' ' ' ' $ $ $ $ $ $  ( 
J 
J  
J   . $ # # # # # $ $ $ $ $ $ 7 7 7 7 7 7 9 9 9 9 9 9             7 7 7 7 7 7 $ $ $ $ $ $E E E  ' & & & & & 3 3 3 3 3 3                         				+2 +2 +2 +2 +2r   