B
    `<                 @   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)URLDoesNotExistValidatorZ	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 oscar/dashboard/pages/index.htmlz %(main_filter)s %(title_filter)sc             C   sz   t ddd| _| jj d}| | 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 )Zmain_filtertitle_filtertitle)Ztitle__icontainsz with title containing '%s'r   )_desc_ctxmodelobjectsallZorder_by
form_classrequestGETformZis_validZcleaned_datafilter)selfZquerysetdata r$   O/home/dcms/DCMS/lib/python3.7/site-packages/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    Zqueryset_description)superget_context_datar    desc_templater   )r"   kwargscontext)	__class__r$   r%   r(   7   s    
zPageListView.get_context_data)__name__
__module____qualname____doc__template_namer   r   r   r   r   ZOSCAR_DASHBOARD_ITEMS_PER_PAGEZpaginate_byr)   r&   r(   __classcell__r$   r$   )r,   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!oscar/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.htmlr4   zsafe noicon)Z
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 s$|jtj  || _t| 	 S )N)
saver   existsaddr   r   Zget_currentr5   r   r8   )r"   r    r4   r$   r$   r%   
form_validO   s
    
z PageCreateUpdateMixin.form_validN)r-   r.   r/   r1   r   r   r   r   Zcontext_object_namer8   r<   r$   r$   r$   r%   r3   B   s   r3   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'   r(   r   )r"   r*   ctx)r,   r$   r%   r(   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 |S |  }||d< | 	|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    )
r9   urlr   r   r   r   r'   r<   r(   Zrender_to_response)r"   r    r4   r>   )r,   r$   r%   r<   _   s    zPageCreateView.form_valid)r-   r.   r/   r(   r<   r2   r$   r$   )r,   r%   r=   X   s   r=   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'   r(   r5   r   )r"   r*   r>   )r,   r$   r%   r(   |   s    zPageUpdateView.get_context_data)r-   r.   r/   r0   r(   r2   r$   r$   )r,   r%   rA   x   s   rA   c               @   s   e Zd ZdZeZdd ZdS )PageDeleteViewz!oscar/dashboard/pages/delete.htmlc             C   s"   t | jtd| jj  tdS )NzDeleted page '%s'zdashboard:page-list)r   r6   r   r   r5   r   r   )r"   r$   r$   r%   r8      s    zPageDeleteView.get_success_urlN)r-   r.   r/   r1   r   r   r8   r$   r$   r$   r%   rB      s   rB   N)'Zdjango.confr   Zdjango.contribr   Zdjango.core.exceptionsr   Zdjango.httpr   Zdjango.template.loaderr   Zdjango.urlsr   Zdjango.utils.translationr   r   Zdjango.viewsr	   Zdjango.views.genericr
   Zoscar.core.loadingr   r   Zoscar.core.utilsr   Zoscar.core.validatorsr   r   r   r   r   r   r5   r3   Z
CreateViewr=   Z
UpdateViewrA   Z
DeleteViewrB   r$   r$   r$   r%   <module>   s&   

. 
