3

\                 @   s<   d dl Z d dlZd dlmZ d dlmZ G dd deZdS )    N)Widget)reversec               @   sp   e Zd ZdZdZdZdZdZdd Zdd	 Z	e
d
d Ze
dd Zdd Zdd Zdd Zdd Zdd ZdS )RelatedFieldWidgetWrapperzd
    This class is a wrapper to a given widget to add the add icon for the
    Oscar dashboard.
    z3oscar/dashboard/widgets/related_widget_wrapper.html1_popup	_to_fieldc             C   s(   |j | _ |j| _|j| _|| _|| _d S )N)needs_multipart_formattrschoiceswidgetrel)selfr   r    r   7/var/www/html/oscar2019/oscar/apps/dashboard/widgets.py__init__   s
    z"RelatedFieldWidgetWrapper.__init__c             C   s4   t j | }t j| j||_| jj|_||t| < |S )N)copydeepcopyr   r	   id)r   memoobjr   r   r   __deepcopy__   s
    

z&RelatedFieldWidgetWrapper.__deepcopy__c             C   s   | j jS )N)r   	is_hidden)r   r   r   r   r   !   s    z#RelatedFieldWidgetWrapper.is_hiddenc             C   s   | j jS )N)r   media)r   r   r   r   r   %   s    zRelatedFieldWidgetWrapper.mediac             G   sB   |d }|d }dj tjdd|j j }td|||f |dS )Nr      -z([a-z])([A-Z])z\1 \2zdashboard:%s-%s-%s)args)joinresublowersplitr   )r   infoactionr   	app_labelZmodel_object_namer   r   r   get_related_url)   s    z)RelatedFieldWidgetWrapper.get_related_urlc             C   s   | j jj}|j|jf}| j| j_djdd tj	| j j
 jftjtjfgD }| jj||||||jd}| j|dd}|j|d | j|d}	|j|	d	 | j|d
d}
|j|
d |S )N&c             s   s   | ]}d | V  qdS )z%s=%sNr   ).0paramr   r   r   	<genexpr>6   s    z8RelatedFieldWidgetWrapper.get_context.<locals>.<genexpr>)rendered_widgetname
url_paramsmodelupdate__fk__)change_related_template_urlcreate)add_related_urldelete)delete_related_template_url)r   r,   _metar#   object_namer
   r   r   r   TO_FIELD_VARget_related_fieldr*   IS_POPUP_VARIS_POPUP_VALUErenderverbose_namer$   r-   )r   r*   valuer	   rel_optsr!   r+   contextr/   r1   r3   r   r   r   get_context2   s(    



z%RelatedFieldWidgetWrapper.get_contextc             C   s   | j j|||S )N)r   value_from_datadict)r   datafilesr*   r   r   r   r@   N   s    z-RelatedFieldWidgetWrapper.value_from_datadictc             C   s   | j j|||S )N)r   value_omitted_from_data)r   rA   rB   r*   r   r   r   rC   Q   s    z1RelatedFieldWidgetWrapper.value_omitted_from_datac             C   s   | j j|S )N)r   id_for_label)r   id_r   r   r   rD   T   s    z&RelatedFieldWidgetWrapper.id_for_labelN)__name__
__module____qualname____doc__template_namer9   r8   r6   r   r   propertyr   r   r$   r?   r@   rC   rD   r   r   r   r   r      s   	r   )r   r   Zdjango.formsr   django.urlsr   r   r   r   r   r   <module>   s   