
    eh&                        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 d#l(m/Z/ d$ Z0y")%    )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                  r]| 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/cagpublico/cag/reuniao/views.pyr   zReuniaoListView.get_queryset   Z    <<--$,,2C2C2J2J!!$,,"3"3":":"F"FGw#%%    	__name__
__module____qualname__r
   modeltemplate_namecontext_object_namer   __classcell__r   s   @r   r   r   	   s    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                  r]| 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*      s    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                         |j	                         r|j                  d      }| j                  |_        | j                  j                  rIt        | j                  d      r3t        j                  | j                  j                  j                         t        d|j                  t        |j                               t!        |j                  t"              rZt        d|j                         t%        |j                        |_        t        d|j                  t        |j                               | j                  j&                  t(        k(  r,	 t+        |j,                  |j                  t.              |_        n*t        d
| j                  j&                   dt(         d       |j                          |j5                          t7        d      S t        d|j8                         n
t               }t;        | dd|i      S # t2        $ r}d |_        t        d	|        Y d }~~d }~ww xY w)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   s   ~~7<<("GLL1==?iiui-G!(G ||,,x1P%%gll&9&9&E&EF H'J[J[]abibsbs]tu '++S1<g>O>OP$273D3D$E!68I8I4PWPaPaKbc ||!!_4	C)?))$*G& *7<<+=+=*>>abqarr~  A LLN""$-..,dkk:}'9FD>JJ! ! C)-G&=aSABBCs   *H; ;	I#II#)r   c           	         | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        j                  j                         }g }|D ]Y  }|j                  |j                  |j                  j                         |j                  |j                  |j                  d       [ t!        | 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    ||$$)<)<gll11==> ""$H G ^^&&002%%$22nn
 	 '4y'6JKKr   )get_object_or_404r   c                 T   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }| j                  dk(  r|j                          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|    ||$$)<)<gll11==>B/G~~)**'9Iw;OPPr   )r   rU   r   )JsonResponse)require_POST)r   AtaFormc                    | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }| j                  dk(  r\t        | j                  |      }|j                         r|j                          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    ||$$)<)<gll11==>B/G~~w||g6==?IIKD 122EFFG$D'47  r   c                 ^   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }|j                  s$d|_        |j                          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     ||$$)<)<gll11==>B/G Y-..E4GHIIr   c           
         | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         | j                  j                  d      }|st        | dddi      S 	 t        j                  j                  |d      j                  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      s    ||$$)<)<gll11==>;;??6"Dg9GEZ;[\\%%  & 
 (;
 	
 g9!<
  	  g9s1vh/<
  	s   ?C 	C;C60C;6C;)FileSystemStoragec                    | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         | j                  dk(  rpd| j                  vrt        ddid      S | j                  d   }t               }|j                  |j                  |      }|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    ||$$)<)<gll11==>~~&*F GPSTTf- 77=--}=66(#Z233"67DDr   )	send_mail)render_to_string)settingsN)EmailMultiAlternativesc                 ~   t        | d      rLt        | j                  d      r6| j                  j                  j                  }t	        j
                  |       nt        d       y d| j                   }t        j                  d| j                        }|D cg c]#  }|j                         s|j                         % }}|st        d       y d| j                   d| j                  j                  d	       d
| j                   d| j                   ddj!                  |       
}t#        dd| i      }	 t%        ||t&        j(                  |      }|j+                  |d       |j-                          t        ddj!                  |       d| d       y c c}w # t.        $ r}	t        d|	        Y d }	~	y d }	~	ww xY w)Nr9   r   u4   ❌ Erro: Tenant não encontrado para esta reunião.u   Convite para Reunião: z[;,]\s*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+   z	text/htmlu%   ✅ Convite enviado com sucesso para z
 (Schema: )u   ❌ Erro ao enviar convite: )r:   r9   r   r   r   r   r6   rA   resplitrM   stripr;   strftimerC   rN   joinr~   r   r   DEFAULT_FROM_EMAILattach_alternativesendrD   )
r   tenant_schemasubjectemailsr?   recipient_listmessagehtml_messagemsgrG   s
             r   rE   rE     s   t\"wt'I..::m,DE'}5GXXj$"4"45F17I5;;=ekkmINIGH 0} =!^^445EFG H#/ 0} %#yy89		;  $$@4C L2$Wgx7R7RTbc|[9
5dii6O5PPZ[hZiijkl+ J,  2,QC0112s%   F.F6AF 	F<$F77F<)1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   r   rE    r   r   <module>r      sR   - 5   9  %	&h 	&	&
 	& . 9    1   .15.K .Kv $    9L L( 9 9   
Q 
Q A @ $ 5 9    ' $ ( 
J  
J  . $ $ 7 9   7 $E E  ' 3     	 3!2r   