
    &g                        d Z ddlZddlmZ ddlmZ ddlmZ ddlmZ ej                  D  cg c]
  \  } }|d    c}} Z
 e ej                  e
       Zdev rej                  d       d	d
dddZd Zd Zd Zd Zd Zyc c}} w )zm
Splitting and organizing applications and models into groups.
This module is mostly meant for internal use.
    N)fnmatch)import_module)ImproperlyConfigured)appsettingsmodels*z%admin_tools.dashboard.modules.AppListz'admin_tools.dashboard.modules.ModelListz$fluent_dashboard.modules.AppIconListz'fluent_dashboard.modules.CmsAppIconList)AppList	ModelListAppIconListCmsAppIconListc                  T   g } t         j                  D ]  \  }}|j                         }d|d   v r9t         j                  }t        t        |j                  dg             z   |d<   |d= nd}|j                  d|      }|t        v r	t        |   }||d<   | j                  ||f        | S )z
    Return the applications of the system, organized in various groups.

    These groups are not connected with the application names,
    but rather with a pattern of applications.
    r   r   excluder   module)	r   FLUENT_DASHBOARD_APP_GROUPScopyFLUENT_DASHBOARD_DEFAULT_MODULEALL_KNOWN_APPSlistgetMODULE_ALIASESappend)groupstitle	groupdictmodule_kwargsdefault_moduler   s         S/var/www/html/djangosite/lib/python3.12/site-packages/fluent_dashboard/appgroups.pyget_application_groupsr      s     F'CC .y!( )H%%(HHN'5]=N=NyZ\=]8^'^M)$h'-N x8^##F+F"(hum,-#.& M    c                 *    | j                  d        y)zJ
    Sort a set of CMS-related models in a custom (predefined) order.
    c                 P    t        | d         rt        | d         nd| d   | d   fS )Napp_namename  r   )
is_cms_appget_cms_model_order)models    r   <lambda>z!sort_cms_models.<locals>.<lambda>?   s4    2<U:=N2Of.UX*'N
 r   )keyN)sort)
cms_modelss    r   sort_cms_modelsr,   :   s     OO
  r   c                 J    t         j                  D ]  }t        | |      s y y)z;
    Return whether the given application is a CMS app
    TF)r   FLUENT_DASHBOARD_CMS_APP_NAMESr   )r"   pats     r   r%   r%   G   s+     99 8S! r   c                 `    t         j                  j                         D ]  \  }}|| v s|c S  y)z5
    Return a numeric ordering for a model name.
    r$   )r    FLUENT_DASHBOARD_CMS_MODEL_ORDERitems)
model_namer#   orders      r   r&   r&   R   s8     #CCIIK e:L r   c                 ,   	 | j                  d      }| d| | |dz   d }}	 t        |      }	 t        ||      S # t        $ r t        |  d      w xY w# t        $ r}t        d| d| d      d}~ww xY w# t        $ r t        d| d	| d
      w xY w)z!
    Import a class by name.
    .z isn't a Python path.N   zError importing module z: ""zModule "z" does not define a "z" class.)rindex
ValueErrorr   r   ImportErrorgetattrAttributeError)import_pathdotr   	classnamemodes         r   	get_classrC   \   s    J  % $DS);sQwy+AIFNF#`sI&&  J"k]2G#HIIJ  N"%<VHCs!#LMMN
  `"XfX5J9+U]#^__`s+   9 A A7 A	A4A//A47B)__doc__	itertoolsr   	importlibr   django.core.exceptionsr   fluent_dashboardr   r   _groupsr   chainr   remover   r   r,   r%   r&   rC   )_r   s   00r   <module>rM      s      # 7 (3>3Z3Z
[<1i9X
[oioow/0.# 7:9?	>
`_ \s   B