o
    ÓLV  ã                   @   sz   d dl mZmZ d dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 dZejdk Zdd„ Zeƒ  G d	d
„ d
eƒZdS )é    )Úabsolute_importÚunicode_literalsN)ÚBaseCommand©Úsetenvz¦DatabaseWrapper objects created in a thread can only be used in that same thread.  The object with alias '{0}' was created in thread id {1} and this is thread id {2}.)é   é   c                     sˆ   t tddƒrd S z1ddlm} m‰  d| jv r4dd l}|j‰| j‰‡‡fdd„}‡ ‡fdd	„}|| _|| _	d
t_
W d S  tyC   Y d S w )NÚcalledFr   )ÚBaseDatabaseWrapperÚDatabaseErrorÚvalidate_thread_sharingc                    s"   ˆ | g|¢R i |¤Ž ˆƒ | _ d S ©N)Ú_thread_ident)ÚselfÚargsÚkwargs)Ú__old__init__Ú
_get_ident© úJ/var/www/html/env/lib/python3.10/site-packages/djcelery/management/base.pyÚ_init%   s   z!patch_thread_ident.<locals>._initc                    s2   | j s| jˆƒ krˆ t| j| jˆƒ f ƒ‚d S d S r   )Úallow_thread_sharingr   ÚDB_SHARED_THREADÚalias©r   )r   r   r   r   Ú_validate_thread_sharing)   s   ÿÿþz4patch_thread_ident.<locals>._validate_thread_sharingT)ÚgetattrÚpatch_thread_identÚdjango.db.backendsr
   r   Ú__dict__ÚthreadÚ	get_identÚ__init__r   r	   ÚImportError)r
   r    r   r   r   )r   r   r   r   r      s"   
ÿÿr   c                       s€   e Zd ZejZg d¢ZeZdZ	e
je
jZZdd„ Z‡ fdd„Zdd„ Z‡ fd	d
„Zdd„ Zdd„ Zdd„ Zedd„ ƒZ‡  ZS )ÚCeleryCommand)z--appz--loaderz--configz
--no-colorFc                 C   s   dj ttd�S )Nz4celery {c.__version__}
django-celery {d.__version__})ÚcÚd)ÚformatÚceleryÚdjceleryr   r   r   r   Úget_versionB   s   ÿzCeleryCommand.get_versionc                    s2   |  d¡}|r|  |¡ tt| ƒj|i |¤Ž d S )NÚbroker)ÚgetÚ
set_brokerÚsuperr$   Úexecute)r   r   Úoptionsr+   ©Ú	__class__r   r   r/   G   s   

zCeleryCommand.executec                 C   s   t d|ƒ d S )NÚCELERY_BROKER_URLr   )r   r+   r   r   r   r-   M   s   zCeleryCommand.set_brokerc                    s"   |   |dd … ¡ tt| ƒ |¡S )Né   )Úhandle_default_optionsr.   r$   Úrun_from_argv)r   Úargvr1   r   r   r6   P   s   zCeleryCommand.run_from_argvc           	      C   s¶   g }d }t |ƒD ]D\}}d|v r| d¡\}}td|ƒ qd|v r0| d¡\}}tj d|¡ qd|v r<| d¡\}}q|dkrG||d  }q| |¡ q|rT|  |¡ | jrY|S |S )	Nz--settings=ú=ÚDJANGO_SETTINGS_MODULEz--pythonpath=r   z	--broker=z-br   )	Ú	enumerateÚsplitr   ÚsysÚpathÚinsertÚappendr-   Úkeep_base_opts)	r   r7   Úaccr+   ÚiÚargÚ_Úsettings_moduleÚ
pythonpathr   r   r   r5   T   s"   
z$CeleryCommand.handle_default_optionsc                 C   s$   t j |¡ t j d¡ t  ¡  d S )NÚ
)r<   ÚstderrÚwriteÚexit)r   Úmsgr   r   r   Údiek   s   zCeleryCommand.diec                 C   s   |j o
|j d | jv S )Nr   )Ú
_long_optsÚ	skip_opts)r   Úoptionr   r   r   Ú_is_unwanted_optionp   s   z!CeleryCommand._is_unwanted_optionc                    s   ‡ fdd„ˆ j D ƒS )Nc                    s   g | ]	}ˆ   |¡s|‘qS r   )rP   )Ú.0Úxr   r   r   Ú
<listcomp>u   s    z-CeleryCommand.option_list.<locals>.<listcomp>)r0   r   r   r   r   Úoption_lists   s   zCeleryCommand.option_list)Ú__name__Ú
__module__Ú__qualname__r   rT   r0   rN   ÚVALIDATE_MODELSÚrequires_model_validationr@   r<   ÚstdoutrH   r*   r/   r-   r6   r5   rL   rP   ÚpropertyÚ__classcell__r   r   r1   r   r$   ;   s    r$   )Ú
__future__r   r   r(   r)   Údjangor<   Údjango.core.management.baser   Údjcelery.compatr   r   ÚVERSIONrX   r   r$   r   r   r   r   Ú<module>   s    #