o
    ǯhZ	                     @   s<   d dl mZ d dlmZ d dlmZmZ G dd deZ	dS )    )settings)apps)has_multi_type_tenantsget_tenant_typesc                   @   s"   e Zd ZdZdd ZdddZdS )TenantSyncRouterz
    A router to control which applications will be synced,
    depending if we are syncing the shared apps or the tenant apps.
    c                 C   s:   |dkrdS t |}d|j|jj}|j|v p||v S )a  
        Is 'app_label' present in 'apps_list'?

        apps_list is either settings.SHARED_APPS or settings.TENANT_APPS, a
        list of app names.

        We check the presence of the app's name or the full path to the apps's
        AppConfig class.
        https://docs.djangoproject.com/en/1.8/ref/applications/#configuring-applications

        We also short-circut check for 'django_cache' app in case someone is using
        Django's DatabaseCache backend and needs to create a cache table
        django_cacheTz{}.{})django_appsget_app_configformat
__module__	__class____name__name)self	app_label	apps_list	appconfigappconfig_full_name r   S/var/www/Befach/backend/venv/lib/python3.10/site-packages/django_tenants/routers.pyapp_in_list   s   

zTenantSyncRouter.app_in_listNc                 K   s   ddl m} ddlm}m} || krdS || }| }	t r:t }
|j|	kr.|
|	 d }n|j	 }|
| d }n|j|	krCt
j}nt
j}| ||sNdS d S )Nr   )connections)get_public_schema_nameget_tenant_database_aliasFAPPS)	django.dbr   django_tenants.utilsr   r   r   r   schema_nametenantget_tenant_typer   SHARED_APPSTENANT_APPSr   )r   dbr   
model_namehintsr   r   r   
connectionpublic_schema_nametenant_typesinstalled_appstenant_typer   r   r   allow_migrate"   s$   



zTenantSyncRouter.allow_migrate)N)r   r   __qualname____doc__r   r*   r   r   r   r   r      s    r   N)
django.confr   django.appsr   r   r   r   r   objectr   r   r   r   r   <module>   s    