
    >Tf                     T    d dl mZ d dlmZ d dlmZ dZ G d dej                  Z	dS )    )models)gettext_lazy)get_widget_class)	Dashboardc                       e Zd Z ej        dej        d          Z ej         ed          e	          Z
 ej         ed          e          Z G d d          Zd	 Zd
 ZddZd ZdS )r   z
users.User	dashboard)to	on_deleterelated_namelayout)verbose_namedefaultconfigc                   :    e Zd Z ed          Z ed          ZdS )Dashboard.Metar   
dashboardsN)__name__
__module____qualname___r   verbose_name_plural     </var/www/html/netbox-4.1.3/netbox/extras/models/dashboard.pyMetar      s+        q~~aoor   r   c                     t          |          }t          | j        |                   }t          |                    d                    } |dd|i|S )z;
        Instantiate and return a widget by its ID
        classidr   )strdictr   r   pop)selfr   r   widget_classs       r   
get_widgetzDashboard.get_widget   sV     WWdk"o&&'

7(;(;<<|,,r,V,,,r   c                     g }| j         D ]G}|                     |d                   }|                    |           |                    |           H|S )ze
        Return the dashboard's configured layout, suitable for rendering with gridstack.js.
        r   )r   r$   
set_layoutappend)r"   widgets	grid_itemwidgets       r   
get_layoutzDashboard.get_layout'   s]      	# 	#I__Yt_55Fi(((NN6""""r   Nc                     t          |j                  }|j        |j        |j        |j        d| j        |<   | j                            ||j        |j	        ||d           dS )z]
        Add a widget to the dashboard, optionally specifying its X & Y coordinates.
        )r   titlecolorr   )r   hwxyN)
r   r   namer-   r.   r   r   r'   heightwidth)r"   r*   r1   r2   r   s        r   
add_widgetzDashboard.add_widget2   sz     ^^[\\m	
 
B 	
 
 	 	 	 	 	r   c                 f    t                    | j        = fd| j        D             | _        dS )z5
        Delete a widget from the dashboard.
        c                 ,    g | ]}|d          k    |S )r   r   ).0itemr   s     r   
<listcomp>z+Dashboard.delete_widget.<locals>.<listcomp>K   s.     
 
 
DJ",<,<D,<,<,<r   N)r   r   r   )r"   r   s    `r   delete_widgetzDashboard.delete_widgetE   sI     WWKO
 
 
 
![
 
 
r   )NN)r   r   r   r   OneToOneFieldCASCADEuser	JSONFieldr   listr   r    r   r   r$   r+   r6   r<   r   r   r   r   r      s        6.   D
 VQx[[  F VQx[[  F
. . . . . . . .- - -	 	 	   &
 
 
 
 
r   r   N)
	django.dbr   django.utils.translationr   r   extras.dashboard.utilsr   __all__Modelr   r   r   r   <module>rG      s          6 6 6 6 6 6 3 3 3 3 3 3
B
 B
 B
 B
 B
 B
 B
 B
 B
 B
r   