3

\>                 @   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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-Z.G d&d' d'ej/Z0G d(d) d)ej1Z2G d*d+ d+ej&Z3G d,d- d-ej&Z4G d.d/ d/ej*Z5dS )0    N)settings)messages)transaction)HttpResponseHttpResponseRedirect)get_object_or_404)reverse)timezone)gettext_lazy)generic)	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$dashboard/vouchers/voucher_list.htmlz/%(main_filter)s %(name_filter)s %(code_filter)sc             C   s*  | j jj jd}t|| jdddgd}tdddd| _d| jjk}|s`| j	 | _
|jd	d
S | j	| j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 }|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)name__icontainszwith name matching '%s'r$   code)r(   zwith code '%s'r%   	is_active)start_datetime__lte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datar9    r>   >/var/www/html/oscar2019/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 )NVouchersdescriptionr5   )superget_context_datar5   is_bounddescription_templater2   r1   )r:   kwargsctxrB   )	__class__r>   r?   rD   K   s    
z VoucherListView.get_context_data)__name__
__module____qualname__r   r,   context_object_nametemplate_namer   r4   r1   rF   r   OSCAR_DASHBOARD_ITEMS_PER_PAGEpaginate_byr@   rD   __classcell__r>   r>   )rI   r?   r      s   &r   c                   sH   e Zd ZeZdZeZ fddZdd Z	e
j dd Zdd	 Z  ZS )
VoucherCreateViewz$dashboard/vouchers/voucher_form.htmlc                s   t  jf |}td|d< |S )NzCreate vouchertitle)rC   rD   r1   )r:   rG   rH   )rI   r>   r?   rD   [   s    z"VoucherCreateView.get_context_datac             C   s
   t ddS )NT)	exclusive)dict)r:   r>   r>   r?   get_initial`   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d| tj|||jd d	}t	jj||jd
 |jd |jd |jd d}|j
j| t| j S )Nbenefit_range   )rangetypevaluebenefit_typebenefit_valuer&   zOffer for voucher '%s'rT   )r&   
offer_typebenefit	conditionrT   r(   usagestart_datetimeend_datetime)r&   r(   ra   rb   rc   )r   r-   creater8   COUNTr   r   r1   VOUCHERr   offersaddr   get_success_url)r:   r5   r`   r_   r&   r   r   r>   r>   r?   
form_valide   s.    

zVoucherCreateView.form_validc             C   s   t j| jtd tdS )NzVoucher createdzdashboard:voucher-list)r   successr0   r1   r   )r:   r>   r>   r?   ri      s    z!VoucherCreateView.get_success_url)rJ   rK   rL   r   r,   rN   r   r4   rD   rV   r   atomicrj   ri   rQ   r>   r>   )rI   r?   rR   V   s   rR   c                   s(   e Zd ZeZdZdZ fddZ  ZS )VoucherStatsViewz&dashboard/vouchers/voucher_detail.htmlr   c                s6   t  jf |}tjj| jjd}|jd}||d< |S )N)
voucher_idz-order__date_placed	discounts)rC   rD   r   r-   r6   objectidr/   )r:   rG   rH   ro   )rI   r>   r?   rD      s
    
z!VoucherStatsView.get_context_data)	rJ   rK   rL   r   r,   rN   rM   rD   rQ   r>   r>   )rI   r?   rm      s   rm   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j d
d Zdd Z  ZS )VoucherUpdateViewz$dashboard/vouchers/voucher_form.htmlc             C   s&   t | ds tjj| jd d| _| jS )Nr   pk)rq   )hasattrr   r-   getrG   r   )r:   r>   r>   r?   get_voucher   s    
zVoucherUpdateView.get_voucherc                s(   t  jf |}| jj|d< | j|d< |S )NrS   r   )rC   rD   r   r&   )r:   rG   rH   )rI   r>   r?   rD      s    
z"VoucherUpdateView.get_context_datac                s   t  j }| j |d< |S )Nr   )rC   get_form_kwargsrv   )r:   rG   )rI   r>   r?   rw      s    
z!VoucherUpdateView.get_form_kwargsc          
   C   sF   | j  }|jj d }|j}|j|j|j|j|j|j	|j
|j|jd	S )Nr   )	r&   r(   rb   rc   ra   r\   rW   r]   rT   )rv   rg   r.   r_   r&   r(   rb   rc   ra   rZ   rY   r[   rT   )r:   r   r   r_   r>   r>   r?   rV      s    zVoucherUpdateView.get_initialc             C   s   | j  }|jd |_|jd |_|jd |_|jd |_|jd |_|j  |jj	 d }|jd |j
_|j
j  |jd |_|j  |j}|jd |_|jd	 |_|jd
 |_|j  t| j S )Nr&   r(   ra   rb   rc   r   rW   rT   r\   r]   )rv   r8   r&   r(   ra   rb   rc   saverg   r.   r`   rY   rT   r_   rZ   r[   r   ri   )r:   r5   r   r   r_   r>   r>   r?   rj      s$    
zVoucherUpdateView.form_validc             C   s   t j| jtd tdS )NzVoucher updatedzdashboard:voucher-list)r   rk   r0   r1   r   )r:   r>   r>   r?   ri      s    z!VoucherUpdateView.get_success_url)rJ   rK   rL   rN   r   r,   r   r4   rv   rD   rw   rV   r   rl   rj   ri   rQ   r>   r>   )rI   r?   rr      s   rr   c               @   s    e Zd ZeZdZdZdd ZdS )VoucherDeleteViewz&dashboard/vouchers/voucher_delete.htmlr   c             C   s   t j| jtd tdS )NzVoucher deletedzdashboard:voucher-list)r   warningr0   r1   r   )r:   r>   r>   r?   ri      s    z!VoucherDeleteView.get_success_urlN)rJ   rK   rL   r   r,   rN   rM   ri   r>   r>   r>   r?   ry      s   ry   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(dashboard/vouchers/voucher_set_form.htmlc                s   t  jf |}td|d< |S )NzCreate voucher setrS   )rC   rD   r1   )r:   rG   rH   )rI   r>   r?   rD      s    z%VoucherSetCreateView.get_context_datac             C   s   t j t j dS )N)rb   rc   )r	   r9   )r:   r>   r>   r?   rV      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d| tj||d}t	jj||jd	 |jd
 |jd |jd |jd |d t
| j S )NrW   rX   )rY   rZ   r[   r\   r]   r&   zOffer for voucher '%s')r&   r^   r_   r`   countcode_lengthrB   rb   rc   )r&   r|   r}   rB   rb   rc   r   )r   r-   rd   r8   re   r   r   r1   rf   r   r   ri   )r:   r5   r`   r_   r&   r   r>   r>   r?   rj      s.    

zVoucherSetCreateView.form_validc             C   s   t j| jtd tdS )NzVoucher set createdzdashboard:voucher-set-list)r   rk   r0   r1   r   )r:   r>   r>   r?   ri     s    z$VoucherSetCreateView.get_success_url)rJ   rK   rL   r   r,   rN   r   r4   rD   rV   rj   ri   rQ   r>   r>   )rI   r?   r{      s   r{   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(dashboard/vouchers/voucher_set_form.htmlc                s(   t  jf |}| jj|d< | j|d< |S )NrS   r   )rC   rD   rp   r&   )r:   rG   rH   )rI   r>   r?   rD     s    
z%VoucherSetUpdateView.get_context_datac             C   s&   t | ds tjj| jd d| _| jS )N
vouchersetrs   )rq   )rt   r   r-   ru   rG   r   )r:   r>   r>   r?   get_voucherset!  s    
z#VoucherSetUpdateView.get_vouchersetc          
   C   s>   | j  }|j}|j}|j|j|j|j|j|j|j	|j
|jd	S )N)	r&   r|   r}   rb   rc   rB   r\   rW   r]   )r   r   r_   r&   r|   r}   rb   rc   rB   rZ   rY   r[   )r:   r   r   r_   r>   r>   r?   rV   &  s    z VoucherSetUpdateView.get_initialc       	      C   s  |j  }|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
d| ttj||dd	\}}||_x~|jj D ]}||jj kr|jj| qW nP|jj}|jd |_|jd |_|jd |_|j   |jj}|jd |_|j   |j   t| j S )
NrW   rX   )rY   rZ   r[   r\   r]   r&   zOffer for voucher '%s')r^   r_   r`   )r&   defaults)rx   r   r   r-   rd   r8   re   r   r   update_or_creater1   rU   rf   r   r.   rg   rh   r_   rY   rZ   r[   r`   r   ri   )	r:   r5   r   r`   r_   r&   r   __r   r>   r>   r?   rj   6  s>    

zVoucherSetUpdateView.form_validc             C   s&   t j| jtd tdd| jjidS )NzVoucher updatedzdashboard:voucher-setrs   )rG   )r   rk   r0   r1   r   rp   rs   )r:   r>   r>   r?   ri   ^  s    z$VoucherSetUpdateView.get_success_url)rJ   rK   rL   rN   r   r,   r   r4   rD   r   rV   rj   ri   rQ   r>   r>   )rI   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   z*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 )Nrs   )rs   )r   r   voucher_setrC   dispatch)r:   r0   argsrG   )rI   r>   r?   r   l  s    zVoucherSetDetailView.dispatchc             C   s   | j jj| jdjd}t|| jdddgd}tdddd| _d	| jj	kpVd
| jj	k}|sj| j
 | _|S | j
| jj	| _| jj s|S | jj}|d
 r|j|d
 d}td|d
  | jd< |d rtj }|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*   end_datetime__gtzActive vouchersr#   )r,   r-   r6   r   r/   r   r0   r1   r2   r3   r4   r5   r7   r8   r	   r9   )r:   r;   r<   r=   r9   r>   r>   r?   r@   p  s4    



z!VoucherSetDetailView.get_querysetc                s2   t  jf |}| j|d< | jj|d< | j|d< |S )Nr   rB   r5   )rC   rD   r   r&   r5   )r:   rG   rH   )rI   r>   r?   rD     s
    

z%VoucherSetDetailView.get_context_data)rJ   rK   rL   r   r,   rM   rN   r   r4   r1   rF   rP   r   r@   rD   rQ   r>   r>   )rI   r?   r   c  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(dashboard/vouchers/voucher_set_list.htmlz/%(main_filter)s %(name_filter)s %(code_filter)sc             C   s,   | j jj jd}t|| jdddgd}|S )Nz-date_createdr   r    r!   )r,   r-   r.   r/   r   r0   )r:   r;   r>   r>   r?   r@     s
    zVoucherSetListView.get_querysetc                s"   t  jf |}td}||d< |S )NzVoucher setsrB   )rC   rD   r1   )r:   rG   rH   rB   )rI   r>   r?   rD     s    z#VoucherSetListView.get_context_data)rJ   rK   rL   r   r,   rM   rN   r1   rF   r   rO   rP   r@   rD   rQ   r>   r>   )rI   r?   r     s   r   c               @   s    e Zd ZdZeZeZdd ZdS )VoucherSetDownloadViewz(dashboard/vouchers/voucher_set_form.htmlc             O   sX   | j  }tdd}dt|j |d< tj|}x$|jjdddD ]}|j|g q@W |S )Nztext/csv)content_typezattachment; filename="%s.csv"zContent-Dispositionr(   T)flat)	
get_objectr   r   r&   csvwriterr   values_listwriterow)r:   r0   r   rG   r   responser   r(   r>   r>   r?   ru     s    

zVoucherSetDownloadView.getN)	rJ   rK   rL   rN   r   r,   r   r4   ru   r>   r>   r>   r?   r     s   r   )6r   django.confr   django.contribr   	django.dbr   django.httpr   r   django.shortcutsr   django.urlsr   django.utilsr	   django.utils.translationr
   r1   Zdjango.viewsr   oscar.core.loadingr   r   oscar.core.utilsr   oscar.viewsr   r   r   r   r   r   r   r   r   r   r   ListViewr   FormViewrR   
DetailViewrm   rr   
DeleteViewry   
CreateViewr{   
UpdateViewr~   r   r   r   r>   r>   r>   r?   <module>   s@   









93C
3M;