B
    `+?                 @   s  d dl 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 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 eddZ!eddZ"eddZ#eddZ$eddZ%eddZ&eddZ'G dd dej(Z)G dd  d ej*Z+G d!d" d"ej,Z-G d#d$ d$ej*Z.G d%d& d&ej/Z0G d'd( d(ej1Z2G d)d* d*ej3Z4G d+d, d,ej(Z5G d-d. d.ej(Z6G d/d0 d0ej,Z7dS )1    N)settings)messages)transaction)HttpResponseHttpResponseRedirect)get_object_or_404)reverse)timezone)gettext_lazy)generic)get_offer_name)	get_class	get_model)slugify)sort_querysetzdashboard.vouchers.formsVoucherFormVoucherSetFormVoucherSetSearchFormVoucherSearchFormvoucherVoucher
VoucherSetofferConditionalOfferBenefit	ConditionorderOrderDiscountc                   sB   e Zd ZeZdZdZeZe	dZ
ejZdd Z fddZ  ZS )VoucherListViewvouchersz*oscar/dashboard/vouchers/voucher_list.htmlz/%(main_filter)s %(name_filter)s %(code_filter)sc             C   s*  | j j d}t|| jdddgd}tdddd| _d| jjk}|s`| 	 | _
|jd	d
S | 	| jj| _
| j
 s~|S | j
j}|d r|j|d d}td|d  | jd< |d r|j|d d}td|d  | jd< |d rt }|j||d}td| jd< |d s&|jd	d
}|S )Nz-date_creatednum_basket_additions
num_ordersdate_createdzAll vouchers )main_filtername_filtercode_filternameT)Zvoucher_set__isnull)Zname__icontainszwith name matching '%s'r%   code)r(   zwith code '%s'r&   	is_active)start_datetime__lteZend_datetime__gtezActive vouchersr$   Zin_set)modelobjectsallorder_byr   request_description_ctxGET
form_classformfilteris_validcleaned_datar	   now)selfqsis_form_submitteddatar8    r=   R/home/dcms/DCMS/lib/python3.7/site-packages/oscar/apps/dashboard/vouchers/views.pyget_queryset&   s:    




zVoucherListView.get_querysetc                sB   t  jf |}| jjr$| j| j }ntd}||d< | j|d< |S )NZVouchersdescriptionr4   )superget_context_datar4   Zis_bounddescription_templater1   r0   )r9   kwargsctxr@   )	__class__r=   r>   rB   L   s    
z VoucherListView.get_context_data)__name__
__module____qualname__r   r+   context_object_nametemplate_namer   r3   r0   rC   r   OSCAR_DASHBOARD_ITEMS_PER_PAGEpaginate_byr?   rB   __classcell__r=   r=   )rF   r>   r      s   &r   c                   sH   e Zd ZeZdZeZ fddZdd Z	e
 dd Zdd	 Z  ZS )
VoucherCreateViewz*oscar/dashboard/vouchers/voucher_form.htmlc                s   t  jf |}td|d< |S )NzCreate vouchertitle)rA   rB   r0   )r9   rD   rE   )rF   r=   r>   rB   \   s    z"VoucherCreateView.get_context_datac             C   s
   t ddS )NT)	exclusive)dict)r9   r=   r=   r>   get_initiala   s    zVoucherCreateView.get_initialc             C   s   t jj|jd t jdd}tjj|jd |jd |jd d}|jd }tjjt|tj|||jd d}t	jj||jd	 |jd
 |jd |jd d}|j
| t|  S )Nbenefit_range   )rangetypevaluebenefit_typebenefit_valuer'   rQ   )r'   
offer_typebenefit	conditionrQ   r(   usagestart_datetimeend_datetime)r'   r(   r^   r_   r`   )r   r,   creater7   COUNTr   r   r   VOUCHERr   offersaddr   get_success_url)r9   r4   r]   r\   r'   r   r   r=   r=   r>   
form_validf   s.    
zVoucherCreateView.form_validc             C   s   t | jtd tdS )NzVoucher createdzdashboard:voucher-list)r   successr/   r0   r   )r9   r=   r=   r>   rf      s    z!VoucherCreateView.get_success_url)rG   rH   rI   r   r+   rK   r   r3   rB   rS   r   atomicrg   rf   rN   r=   r=   )rF   r>   rO   W   s   rO   c                   s(   e Zd ZeZdZdZ fddZ  ZS )VoucherStatsViewz,oscar/dashboard/vouchers/voucher_detail.htmlr   c                s6   t  jf |}tjj| jjd}|d}||d< |S )N)Z
voucher_idz-order__date_placed	discounts)rA   rB   r   r,   r5   objectidr.   )r9   rD   rE   rk   )rF   r=   r>   rB      s
    
z!VoucherStatsView.get_context_data)	rG   rH   rI   r   r+   rK   rJ   rB   rN   r=   r=   )rF   r>   rj      s   rj   c                   s\   e Zd ZdZeZeZdd Z fddZ	 fddZ
dd	 Ze d
d Zdd Z  ZS )VoucherUpdateViewz*oscar/dashboard/vouchers/voucher_form.htmlc             C   s&   t | ds tjj| jd d| _| jS )Nr   pk)rm   )hasattrr   r,   getrD   r   )r9   r=   r=   r>   get_voucher   s    
zVoucherUpdateView.get_voucherc                s(   t  jf |}| jj|d< | j|d< |S )NrP   r   )rA   rB   r   r'   )r9   rD   rE   )rF   r=   r>   rB      s    
z"VoucherUpdateView.get_context_datac                s   t   }|  |d< |S )Nr   )rA   get_form_kwargsrr   )r9   rD   )rF   r=   r>   rs      s    
z!VoucherUpdateView.get_form_kwargsc          
   C   sB   |   }|j }|j}|j|j|j|j|j|j	|j
|j|jd	S )N)	r'   r(   r_   r`   r^   rY   rT   rZ   rQ   )rr   rd   firstr\   r'   r(   r_   r`   r^   rW   rV   rX   rQ   )r9   r   r   r\   r=   r=   r>   rS      s    
zVoucherUpdateView.get_initialc             C   s   |   }|jd |_|jd |_|jd |_|jd |_|jd |_|  |j	 }|jd |j
_|j
  |jd |_t|j|_|  |j}|jd |_|jd |_|jd	 |_|  t|  S )
Nr'   r(   r^   r_   r`   rT   rQ   rY   rZ   )rr   r7   r'   r(   r^   r_   r`   saverd   rt   r]   rV   rQ   r   r\   rW   rX   r   rf   )r9   r4   r   r   r\   r=   r=   r>   rg      s&    

zVoucherUpdateView.form_validc             C   s   t | jtd tdS )NzVoucher updatedzdashboard:voucher-list)r   rh   r/   r0   r   )r9   r=   r=   r>   rf      s    z!VoucherUpdateView.get_success_url)rG   rH   rI   rK   r   r+   r   r3   rr   rB   rs   rS   r   ri   rg   rf   rN   r=   r=   )rF   r>   rn      s   rn   c               @   s    e Zd ZeZdZdZdd ZdS )VoucherDeleteViewz,oscar/dashboard/vouchers/voucher_delete.htmlr   c             C   s   t | jtd tdS )NzVoucher deletedzdashboard:voucher-list)r   warningr/   r0   r   )r9   r=   r=   r>   rf      s    z!VoucherDeleteView.get_success_urlN)rG   rH   rI   r   r+   rK   rJ   rf   r=   r=   r=   r>   rv      s   rv   c                   s@   e Zd ZeZdZeZ fddZdd Z	dd Z
dd	 Z  ZS )
VoucherSetCreateViewz.oscar/dashboard/vouchers/voucher_set_form.htmlc                s   t  jf |}td|d< |S )NzCreate voucher setrP   )rA   rB   r0   )r9   rD   rE   )rF   r=   r>   rB      s    z%VoucherSetCreateView.get_context_datac             C   s   t  t  dS )N)r_   r`   )r	   r8   )r9   r=   r=   r>   rS      s    z VoucherSetCreateView.get_initialc          	   C   s   t jj|jd t jdd}tjj|jd |jd |jd d}|jd }tjjt|tj||d}t	jj||jd |jd	 |jd
 |jd |jd |d t
|  S )NrT   rU   )rV   rW   rX   rY   rZ   r'   )r'   r[   r\   r]   countcode_lengthr@   r_   r`   )r'   ry   rz   r@   r_   r`   r   )r   r,   ra   r7   rb   r   r   r   rc   r   r   rf   )r9   r4   r]   r\   r'   r   r=   r=   r>   rg      s.    
zVoucherSetCreateView.form_validc             C   s   t | jtd tdS )NzVoucher set createdzdashboard:voucher-set-list)r   rh   r/   r0   r   )r9   r=   r=   r>   rf     s    z$VoucherSetCreateView.get_success_url)rG   rH   rI   r   r+   rK   r   r3   rB   rS   rg   rf   rN   r=   r=   )rF   r>   rx      s   rx   c                   sH   e Zd ZdZeZeZ fddZdd Z	dd Z
dd	 Zd
d Z  ZS )VoucherSetUpdateViewz.oscar/dashboard/vouchers/voucher_set_form.htmlc                s(   t  jf |}| jj|d< | j|d< |S )NrP   r   )rA   rB   rl   r'   )r9   rD   rE   )rF   r=   r>   rB     s    
z%VoucherSetUpdateView.get_context_datac             C   s&   t | ds tjj| jd d| _| jS )N
vouchersetro   )rm   )rp   r   r,   rq   rD   r|   )r9   r=   r=   r>   get_voucherset#  s    
z#VoucherSetUpdateView.get_vouchersetc          
   C   s>   |   }|j}|j}|j|j|j|j|j|j|j	|j
|jd	S )N)	r'   ry   rz   r_   r`   r@   rY   rT   rZ   )r}   r   r\   r'   ry   rz   r_   r`   r@   rW   rV   rX   )r9   r|   r   r\   r=   r=   r>   rS   (  s    z VoucherSetUpdateView.get_initialc       	      C   s  |  }|jstjj|jd tjdd}tjj|jd |jd |jd d}|jd }tjj	t
|ttj||dd\}}||_x~|j D ]}||j kr|j| qW nP|jj}|jd |_|jd |_|jd |_|   |jj}|jd |_|   |   t|  S )	NrT   rU   )rV   rW   rX   rY   rZ   r'   )r[   r\   r]   )r'   defaults)ru   r   r   r,   ra   r7   rb   r   r   Zupdate_or_creater   rR   rc   r   r-   rd   re   r\   rV   rW   rX   r]   r   rf   )	r9   r4   r|   r]   r\   r'   r   __r   r=   r=   r>   rg   8  s>    
zVoucherSetUpdateView.form_validc             C   s&   t | jtd tdd| jjidS )NzVoucher updatedzdashboard:voucher-setro   )rD   )r   rh   r/   r0   r   rl   ro   )r9   r=   r=   r>   rf   `  s    z$VoucherSetUpdateView.get_success_url)rG   rH   rI   rK   r   r+   r   r3   rB   r}   rS   rg   rf   rN   r=   r=   )rF   r>   r{     s   (r{   c                   sL   e Zd ZeZdZdZeZe	dZ
dZ fddZdd Z fd	d
Z  ZS )VoucherSetDetailViewr   z0oscar/dashboard/vouchers/voucher_set_detail.htmlz/%(main_filter)s %(name_filter)s %(code_filter)s2   c                s&   t t|d d| _t j|f||S )Nro   )ro   )r   r   voucher_setrA   dispatch)r9   r/   argsrD   )rF   r=   r>   r   n  s    zVoucherSetDetailView.dispatchc             C   s   | j jj| jdd}t|| jdddgd}tdddd| _d	| jj	kpVd
| jj	k}|sj| 
 | _|S | 
| jj	| _| j s|S | jj}|d
 r|j|d
 d}td|d
  | jd< |d rt }|j||d}td| jd< |S )N)r   z-date_createdr    r!   r"   zAll vouchersr#   )r$   r%   r&   r'   r(   )Zcode__icontainszwith code '%s'r&   r)   )r*   Zend_datetime__gtzActive vouchersr$   )r+   r,   r5   r   r.   r   r/   r0   r1   r2   r3   r4   r6   r7   r	   r8   )r9   r:   r;   r<   r8   r=   r=   r>   r?   r  s4    



z!VoucherSetDetailView.get_querysetc                s2   t  jf |}| j|d< | jj|d< | j|d< |S )Nr   r@   r4   )rA   rB   r   r'   r4   )r9   rD   rE   )rF   r=   r>   rB     s
    

z%VoucherSetDetailView.get_context_data)rG   rH   rI   r   r+   rJ   rK   r   r3   r0   rC   rM   r   r?   rB   rN   r=   r=   )rF   r>   r   e  s   &r   c                   s>   e Zd ZeZdZdZedZe	j
Zdd Z fddZ  ZS )VoucherSetListViewr   z.oscar/dashboard/vouchers/voucher_set_list.htmlz/%(main_filter)s %(name_filter)s %(code_filter)sc             C   s,   | j j d}t|| jdddgd}|S )Nz-date_createdr    r!   r"   )r+   r,   r-   r.   r   r/   )r9   r:   r=   r=   r>   r?     s
    zVoucherSetListView.get_querysetc                s"   t  jf |}td}||d< |S )NzVoucher setsr@   )rA   rB   r0   )r9   rD   rE   r@   )rF   r=   r>   rB     s    z#VoucherSetListView.get_context_data)rG   rH   rI   r   r+   rJ   rK   r0   rC   r   rL   rM   r?   rB   rN   r=   r=   )rF   r>   r     s   r   c               @   s    e Zd ZdZeZeZdd ZdS )VoucherSetDownloadViewz.oscar/dashboard/vouchers/voucher_set_form.htmlc             O   sX   |   }tdd}dt|j |d< t|}x$|jjdddD ]}||g q@W |S )Nztext/csv)content_typezattachment; filename="%s.csv"zContent-Dispositionr(   T)Zflat)	Z
get_objectr   r   r'   csvwriterr   Zvalues_listwriterow)r9   r/   r   rD   r   responser   r(   r=   r=   r>   rq     s    

zVoucherSetDownloadView.getN)	rG   rH   rI   rK   r   r+   r   r3   rq   r=   r=   r=   r>   r     s   r   )8r   Zdjango.confr   Zdjango.contribr   Z	django.dbr   Zdjango.httpr   r   Zdjango.shortcutsr   Zdjango.urlsr   Zdjango.utilsr	   Zdjango.utils.translationr
   r0   Zdjango.viewsr   Zoscar.apps.voucher.utilsr   Zoscar.core.loadingr   r   Zoscar.core.utilsr   Zoscar.viewsr   r   r   r   r   r   r   r   r   r   r   ZListViewr   ZFormViewrO   Z
DetailViewrj   rn   Z
DeleteViewrv   Z
CreateViewrx   Z
UpdateViewr{   r   r   r   r=   r=   r=   r>   <module>   sB   









93D
3M;