3

\*                 @   s  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 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 eddZeddZedd\ZZG dd deZG dd deZ G dd de ej!Z"G dd de ej#Z$G dd dej%Z&dS )     )settings)messages)ValidationError)HttpResponseRedirect)render_to_string)reverse)gettext_lazy)generic)ListView)get_classes	get_model)slugify)URLDoesNotExistValidator	flatpagesFlatPagesitesSitezdashboard.pages.formsPageSearchFormPageUpdateFormc                   s>   e Zd ZdZdZeZeZe	j
ZdZdd Z fddZ  ZS )PageListViewz2
    View for listing all existing flatpages.
    zdashboard/pages/index.htmlz %(main_filter)s %(title_filter)sc             C   sz   t ddd| _| jjj jd}| j| jj| _	| j	j
 s@|S | j	j}|d rv|j|d d}t d|d  | jd< |S )z
        Get queryset of all flatpages to be displayed. If a
        search term is specified in the search form, it will be used
        to filter the queryset.
        z	All pages )main_filtertitle_filtertitle)title__icontainsz with title containing '%s'r   )_desc_ctxmodelobjectsallorder_by
form_classrequestGETformis_validcleaned_datafilter)selfquerysetdata r+   ;/var/www/html/oscar2019/oscar/apps/dashboard/pages/views.pyget_queryset   s    

zPageListView.get_querysetc                s,   t  jf |}| j|d< | j| j |d< |S )zc
        Get context data with *form* and *queryset_description* data
        added to it.
        r$   queryset_description)superget_context_datar$   desc_templater   )r(   kwargscontext)	__class__r+   r,   r0   7   s    
zPageListView.get_context_data)__name__
__module____qualname____doc__template_namer   r   r   r!   r   OSCAR_DASHBOARD_ITEMS_PER_PAGEpaginate_byr1   r-   r0   __classcell__r+   r+   )r4   r,   r      s   r   c               @   s,   e Zd ZdZeZeZdZdd Z	dd Z
dS )PageCreateUpdateMixinzdashboard/pages/update.htmlpagec             C   s*   t dd| ji}tj| j|dd tdS )Nz)oscar/dashboard/pages/messages/saved.htmlr>   zsafe noicon)
extra_tagszdashboard:page-list)r   objectr   successr"   r   )r(   msgr+   r+   r,   get_success_urlI   s    z%PageCreateUpdateMixin.get_success_urlc             C   s6   |j  }|jj s$|jjtjj  || _t| j	 S )N)
saver   existsaddr   r   get_currentr@   r   rC   )r(   r$   r>   r+   r+   r,   
form_validO   s
    
z PageCreateUpdateMixin.form_validN)r5   r6   r7   r9   r   r   r   r!   context_object_namerC   rH   r+   r+   r+   r,   r=   B   s   r=   c                   s(   e Zd Z fddZ fddZ  ZS )PageCreateViewc                s   t  jf |}td|d< |S )NzCreate New Pager   )r/   r0   r   )r(   r2   ctx)r4   r+   r,   r0   Z   s    zPageCreateView.get_context_datac                sn   |j dd}|js"dt|j |_yt |j W n tk
rF   Y nX t j|S | j }||d< | j	|S )z
        Store new flatpage from form data.
        Additionally, if URL is left blank, a slugified
        version of the title will be used as URL after checking
        if it is valid.
        F)commitz/%s/r$   )
rD   urlr   r   r   r   r/   rH   r0   render_to_response)r(   r$   r>   rK   )r4   r+   r,   rH   _   s    zPageCreateView.form_valid)r5   r6   r7   r0   rH   r<   r+   r+   )r4   r,   rJ   X   s   rJ   c                   s    e Zd ZdZ fddZ  ZS )PageUpdateViewz9
    View for updating flatpages from the dashboard.
    c                s   t  jf |}| jj|d< |S )Nr   )r/   r0   r@   r   )r(   r2   rK   )r4   r+   r,   r0   |   s    zPageUpdateView.get_context_data)r5   r6   r7   r8   r0   r<   r+   r+   )r4   r,   rO   x   s   rO   c               @   s   e Zd ZdZeZdd ZdS )PageDeleteViewzdashboard/pages/delete.htmlc             C   s"   t j| jtd| jj  tdS )NzDeleted page '%s'zdashboard:page-list)r   rA   r"   r   r@   r   r   )r(   r+   r+   r,   rC      s    zPageDeleteView.get_success_urlN)r5   r6   r7   r9   r   r   rC   r+   r+   r+   r,   rP      s   rP   N)r   r   )'django.confr   django.contribr   django.core.exceptionsr   django.httpr   django.template.loaderr   django.urlsr   django.utils.translationr   r   Zdjango.viewsr	   Zdjango.views.genericr
   oscar.core.loadingr   r   oscar.core.utilsr   Zoscar.core.validatorsr   r   r   r   r   r   r@   r=   
CreateViewrJ   
UpdateViewrO   
DeleteViewrP   r+   r+   r+   r,   <module>   s&   

. 
