
    >Tf                     b    d dl mZ d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ  G d de          ZdS )	    )ContentType)BaseCommandCommandError)gettext)registry)search_backendc                   $    e Zd ZdZd Zd Zd ZdS )CommandzReindex objects for searchc                 h    |                     dddd           |                     ddd	           d S )
Nargszapp_label[.ModelName]*z%One or more apps or models to reindex)metavarnargshelpz--lazy
store_truezFFor each model, reindex objects only if no cache entries already exist)actionr   )add_argument)selfparsers     G/var/www/html/netbox-4.1.3/netbox/extras/management/commands/reindex.pyadd_argumentszCommand.add_arguments   s]    +8	 	 	
 	
 	
 	Y 	 	
 	
 	
 	
 	
    c                 b   i }|s-t           d                                         D ]}|||j        <   n|D ]}|                                                    d          }t          |          dk    rI|\  }}	 t           d         | d|          }|||j        <   e# t          $ r t          d|           w xY wt          |          dk    rP|d         dz   }t           d                                         D ]$\  }}|	                    |          r
|||j        <   %t          d| d          |S )	Nsearch.   zNo indexer registered for    r   zInvalid model: zL. Model names must be in the format <app_label> or <app_label>.<model_name>.)
r   valuesmodellowersplitlenKeyErrorr   items
startswith)	r   model_namesindexersidxlabellabels	app_label
model_nameindexer_labels	            r   _get_indexerszCommand._get_indexers   s     	)0022 * *&)##*
 %  ,,S11 v;;!##,2)IzQ&x0I1L1L
1L1LM.1++# Q Q Q*+O+O+OPPPQ [[A%% &q	CI.6x.@.F.F.H.H 6 6*s(33I>> 625HSY/6
 '}%}}}   s   6"BB6c                     | j         | }|st          t          d                    | j                            dt          |           d           |d         s|rd |                                D             }nd }| j                            dd           | j                                         t          j	        |	          }| j                            | d
           | j                            d           |
                                D ] \  }}|j        j        }|j        j        }	| j                            d| d|	 dd           | j                                         |d         rVt          j                            |          }
t          j        |
g	          x}r| j                            d| d           t          j        |j                                        d          }|r| j                            | d           | j                            d           "d}t          j        x}r|d| z  }| j                            || j        j                   d S )NzNo indexers found!zReindexing z models.lazyc                 L    g | ]!}t           j                            |          "S  )r   objectsget_for_model).0r   s     r   
<listcomp>z"Command.handle.<locals>.<listcomp>H   s)     g g ge!4!B!B5!I!I g g gr   zClearing cached values...  )ending)object_typesz entries deleted.zIndexing modelsz  r   z... zSkipping (found z existing).F)remove_existingz entries cached.zNo objects found.z
Completed.z Total entries: )r.   r   _stdoutwriter"   keysflushr   clearr$   _metar+   r,   r   r3   r4   countcacheiteratorsizestyleSUCCESS)r   model_labelskwargsr'   content_typesdeleted_countr   r(   r+   r,   content_typecached_countimsgtotal_counts                  r   handlezCommand.handle=   s    &4%|4 	8q!566777?H???@@@ f~ 		C % g gW_WdWdWfWf g g g $K:2FFFK*0mLLLMKAAABBB 	+,,,"..** 	8 	8JE3-I/JK?9??z???KKKKf~ *2@@GG#1#7l^#T#T#TT< K%%&R&R&R&RSSS$U]%;%;%=%=uUUUA 8!!Q"8"8"89999!!"67777(--; 	43k333C#tz122222r   N)__name__
__module____qualname__r   r   r.   rQ   r2   r   r   r
   r
   	   sG        'D
 
 
" " "H+3 +3 +3 +3 +3r   r
   N)"django.contrib.contenttypes.modelsr   django.core.management.baser   r   django.utils.translationr   r;   netbox.registryr   netbox.search.backendsr   r
   r2   r   r   <module>rZ      s    : : : : : : A A A A A A A A 1 1 1 1 1 1 $ $ $ $ $ $ 1 1 1 1 1 1_3 _3 _3 _3 _3k _3 _3 _3 _3 _3r   