a
    ;XhV                     @   s<  d dl mZ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Zd dlmZ d d	l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 dd Z dd Z!dd Z"G dd deej#Z$edddd Z%G dd dej&Z'G dd deej(Z)dd  Z*d!d" Z+d#d$ Z,dS )%    )renderredirectget_object_or_404)HttpResponseRedirectJsonResponse)generic)get_user_info)	mark_safe)	timedeltadatetimedateN)login_required)LoginRequiredMixin)reverse_lazyreverse)csrf_exempt)Event)Calendar)	EventFormc                 C   s2   | r*dd |  dD \}}t||ddS t S )Nc                 s   s   | ]}t |V  qd S )N)int).0x r   F/var/www/viveiro_mudafortebrasil/apps/calendarapp/views/other_views.py	<genexpr>       zget_date.<locals>.<genexpr>-   day)splitr   r   today)Zreq_dayyearmonthr   r   r   get_date   s    r$   c                 C   s:   | j dd}|tdd }dt|j d t|j }|S Nr   r   dayszmonth=r   )replacer
   strr"   r#   )dfirst
prev_monthr#   r   r   r   r,      s    r,   c                 C   sN   t | j| jd }| j|d}|tdd }dt|j d t|j }|S r%   )calendar
monthranger"   r#   r(   r
   r)   )r*   Zdays_in_monthlast
next_monthr#   r   r   r   r0   !   s
    r0   c                       s(   e Zd ZdZeZdZ fddZ  ZS )CalendarViewaccounts:signinzcalendar.htmlc                    sh   t  jf i |}t| jjdd }t|j|j}|j	dd}t
||d< t||d< t||d< |S )Nr#   T)withyearr-   r,   r0   )superget_context_datar$   requestGETgetr   r"   r#   formatmonthr	   r,   r0   )selfkwargscontextr*   calZhtml_cal	__class__r   r   r5   .   s    zCalendarView.get_context_data)	__name__
__module____qualname__	login_urlr   modeltemplate_namer5   __classcell__r   r   r>   r   r1   )   s   r1   Zsignup)rC   c                 C   s   | j dkr~t| j}| rp|jd}|jd}|jd}|jd}tjj| j	||||d t
tdS td|j nt }t| d	d
|iS )NPOSTtitledescription
start_timeend_time)userrH   rI   rJ   rK   apps.calendarapp:calendarzForm is not valid:
event.htmlform)methodr   rG   is_validcleaned_datar8   r   objectsget_or_createrL   r   r   printerrorsr   )r6   rO   rH   rI   rJ   rK   r   r   r   create_event9   s$    

rW   c                   @   s   e Zd ZeZg dZdZdS )	EventEdit)rH   rI   rJ   rK   rN   N)r@   rA   rB   r   rD   fieldsrE   r   r   r   r   rX   R   s   rX   c                   @   s8   e Zd ZdZdZeZdd Zedd Z	edd Z	dS )	CalendarViewNewr2   zcalendarapp/calendar.htmlc           
      O   sb   |j jstdS t|j j}|  }tj }tj	 }dd |D }||||d}	t
|| j|	S )Nindexc                 S   s2   g | ]*}|j |j|jd |jd |jdqS )z%Y-%m-%dT%H:%M:%S)idrH   startendrI   )r\   rH   rJ   strftimerK   rI   )r   eventr   r   r   
<listcomp>i   s   

z'CalendarViewNew.get.<locals>.<listcomp>)rO   eventsevents_month	user_info)rL   is_authenticatedr   r   r\   
form_classr   rS   get_all_eventsget_running_eventsr   rE   )
r:   r6   argsr;   rd   formsrb   rc   
event_listr<   r   r   r   r8   ^   s    

zCalendarViewNew.getc                 O   sf   |j jstddiddS | |j}| rP|jdd}|j |_ |  tdS d|i}t|| j	|S 	NmessagezUser not authenticatedi  statusF)commitrM   rO   
rL   re   r   rf   rG   rQ   saver   r   rE   r:   r6   ri   r;   rj   rO   r<   r   r   r   post}   s    zCalendarViewNew.postc                 O   sf   |j jstddiddS | |j}| rP|jdd}|j |_ |  tdS d|i}t|| j	|S rl   rq   rs   r   r   r   rt      s    N)
r@   rA   rB   rC   rE   r   rf   r8   r   rt   r   r   r   r   rZ   Y   s   
rZ   c                 C   s>   t t|d}| jdkr*|  tddiS tddiddS d S )Nr\   rG   rm   zEvent successfully deletedError!  rn   )r   r   rP   deleter   )r6   event_idr`   r   r   r   delete_event   s
    
rz   c                 C   sp   t t|d}| jdkr\|}d |_| jtdd7  _| jtdd7  _|  tddiS tddidd	S d S )
Nru   rG      r&   rm   Event successfully updatedrv   rw   rn   	r   r   rP   r\   rJ   r
   rK   rr   r   r6   ry   r`   Z
next_eventr   r   r   	next_week   s    
r   c                 C   sp   t t|d}| jdkr\|}d |_| jtdd7  _| jtdd7  _|  tddiS tddidd	S d S )
Nru   rG   r   r&   rm   r|   rv   rw   rn   r}   r~   r   r   r   next_day   s    
r   )-django.shortcutsr   r   r   django.httpr   r   django.viewsr   apps.dashboard.utilsr   django.utils.safestringr	   r   r
   r   r-   django.contrib.auth.decoratorsr   Zdjango.contrib.auth.mixinsr   django.urlsr   r   django.views.decorators.csrfr   Zapps.calendarapp.modelsr   Zapps.calendarapp.utilsr   Zapps.calendarapp.formsr   r$   r,   r0   ListViewr1   rW   
UpdateViewrX   ViewrZ   rz   r   r   r   r   r   r   <module>   s0   
B	