U
    h                     @   s|  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
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mZmZ ddlmZ eeddG dd de
ZeeddG dd deZeeddG dd deZeeddG dd de
ZeeddG dd de
Z eeddG dd deZ!eeddG dd deZ"eeddG dd deZ#dS )z
Web Views for Jingles App

This module provides web interface views for jingle detection management,
including template management, detection results, and ad break monitoring.
    )renderget_object_or_404redirect)login_required)method_decorator)ListView
DetailView
CreateView
UpdateView)Q)	Paginator)reverse_lazy)messages)JingleTemplateJingleDetectionAdBreak)JingleTemplateFormdispatch)namec                       s8   e Zd ZdZeZdZdZdZdd Z	 fddZ
  ZS )	JingleTemplateListViewzList view for jingle templateszjingles/templates/list.html	templates   c                 C   sJ   t j d}| jjd}|rF|t|dt|dB t|dB }|S )Nz-created_atsearch)name__icontains)description__icontains)Zcategory__icontains)	r   objectsallorder_byrequestGETgetfilterr   )selfquerysetr    r$   7/var/www/html/StreamProcessor/src/apps/jingles/views.pyget_queryset   s    z#JingleTemplateListView.get_querysetc                    s&   t  jf |}| jjdd|d< |S )Nr    )superget_context_datar   r   r    r"   kwargscontext	__class__r$   r%   r)   (   s    z'JingleTemplateListView.get_context_data)__name__
__module____qualname____doc__r   modeltemplate_namecontext_object_namepaginate_byr&   r)   __classcell__r$   r$   r-   r%   r      s   r   c                       s@   e Zd ZdZeZeZdZe	dZ
 fddZ fddZ  ZS )JingleTemplateCreateViewz Create view for jingle templatesjingles/templates/form.htmljingles:template_listc                    s2   | j j|j_t| j d|jj d t |S )z&Set the created_by user before saving.Jingle template "z" created successfully!)	r   userinstance
created_byr   successr   r(   
form_validr"   formr-   r$   r%   r@   6   s    z#JingleTemplateCreateView.form_validc                    s   t | jd t |S zHandle form validation errors.z Please correct the errors below.r   errorr   r(   form_invalidrA   r-   r$   r%   rF   <   s    z%JingleTemplateCreateView.form_invalidr/   r0   r1   r2   r   r3   r   
form_classr4   r   success_urlr@   rF   r7   r$   r$   r-   r%   r8   .   s   r8   c                       s@   e Zd ZdZeZeZdZe	dZ
 fddZ fddZ  ZS )JingleTemplateUpdateViewz Update view for jingle templatesr9   r:   c                    s&   t | jd|jj d t |S )z"Handle successful form submission.r;   z" updated successfully!)r   r?   r   r=   r   r(   r@   rA   r-   r$   r%   r@   J   s    z#JingleTemplateUpdateView.form_validc                    s   t | jd t |S rC   rD   rA   r-   r$   r%   rF   O   s    z%JingleTemplateUpdateView.form_invalidrG   r$   r$   r-   r%   rJ   B   s   rJ   c                       s8   e Zd ZdZeZdZdZdZdd Z	 fddZ
  ZS )	JingleDetectionListViewzList view for jingle detectionszjingles/detections/list.html
detectionsr   c                 C   s6   t jddd}| jjd}|r2|j|d}|S )Ntemplatesession-detection_time)template_id)r   r   select_relatedr   r   r   r    r!   )r"   r#   rP   r$   r$   r%   r&   ]   s
    z$JingleDetectionListView.get_querysetc                    s8   t  jf |}tjjdd|d< | jjdd|d< |S )NT)	is_activer   rM   r'   Zselected_template)r(   r)   r   r   r!   r   r   r    r*   r-   r$   r%   r)   d   s    z(JingleDetectionListView.get_context_data)r/   r0   r1   r2   r   r3   r4   r5   r6   r&   r)   r7   r$   r$   r-   r%   rK   U   s   rK   c                       s8   e Zd ZdZeZdZdZdZdd Z	 fddZ
  ZS )	AdBreakListViewzList view for ad breakszjingles/adbreaks/list.html	ad_breaksr   c                 C   s4   t jdd}| jjd}|r0|j|d}|S )NrN   z-start_time)
session_id)r   r   rQ   r   r   r   r    r!   )r"   r#   rU   r$   r$   r%   r&   s   s
    zAdBreakListView.get_querysetc                    s   t  jf |}|S )N)r(   r)   r*   r-   r$   r%   r)   z   s    z AdBreakListView.get_context_data)r/   r0   r1   r2   r   r3   r4   r5   r6   r&   r)   r7   r$   r$   r-   r%   rS   k   s   rS   c                       s,   e Zd ZdZeZdZdZ fddZ  Z	S )JingleTemplateDetailViewzDetail view for jingle templatezjingles/templates/detail.htmlrM   c                    s@   t  jf |}|  }tjj|dddd d |d< |S )N)rM   rN   rO   
   Zrecent_detections)r(   r)   
get_objectr   r   r!   rQ   r   )r"   r+   r,   rM   r-   r$   r%   r)      s    
z)JingleTemplateDetailView.get_context_data)
r/   r0   r1   r2   r   r3   r4   r5   r)   r7   r$   r$   r-   r%   rV      s
   rV   c                   @   s   e Zd ZdZeZdZdZdS )JingleDetectionDetailViewz Detail view for jingle detectionzjingles/detections/detail.html	detectionN)r/   r0   r1   r2   r   r3   r4   r5   r$   r$   r$   r%   rY      s   rY   c                       s,   e Zd ZdZeZdZdZ fddZ  Z	S )AdBreakDetailViewzDetail view for ad breakzjingles/adbreaks/detail.htmlad_breakc                    sD   t  jf |}|  }tjj|j|j|jgd	d
d|d< |S )N)rN   Zdetection_time__rangerM   detection_timerL   )r(   r)   rX   r   r   r!   rN   
start_timeend_timerQ   r   )r"   r+   r,   r\   r-   r$   r%   r)      s    
z"AdBreakDetailView.get_context_data)
r/   r0   r1   r2   r   r3   r4   r5   r)   r7   r$   r$   r-   r%   r[      s
   r[   N)$r2   django.shortcutsr   r   r   django.contrib.auth.decoratorsr   django.utils.decoratorsr   Zdjango.views.genericr   r   r	   r
   django.db.modelsr   django.core.paginatorr   django.urlsr   django.contribr   apps.jingles.modelsr   r   r   Zapps.jingles.formsr   r   r8   rJ   rK   rS   rV   rY   r[   r$   r$   r$   r%   <module>   s4   







