
    ht                         d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZ  e       Z G d d	e      Zy
)    )get_user_model)ContentType)BaseCommandCommandError)	constants)DEFAULT_USERUSERNAME_FIELD)Version)_cms_extensionc                   ,    e Zd ZdZd Zed        Zd Zy)Commanda  Creates Version objects for versioned models lacking one. If the DJANGOCMS_VERSIONING_DEFAULT_USER setting is not populated you will have to provide either the --userid or --username option for each Version object needs to be assigned to a user. If multiple content objects for a grouper model are found only the newest (by primary key) is assigned the state, older versions are marked as "archived".c                 v   |j                  dt        t        j                  t        j                  D cg c]  \  }}|t        j
                  k7  s| c}}dt        j                   d       |j                  dt        d       |j                  dt        d	       |j                  d
dd       y c c}}w )Nz--statez3state of newly created version object (defaults to ))typedefaultchoiceshelpz
--usernamez6Username of user to create the missing Version objects)r   r   z--useridz5User id of user to create the missing Version objectsz	--dry-run
store_truezDo not change the database)actionr   )add_argumentstrr   DRAFTVERSION_STATESUNPUBLISHEDint)selfparserkeyvalues       h/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_versioning/management/commands/create_versions.pyadd_argumentszCommand.add_arguments   s    OO+4+C+CdZS%siNcNcGcSdFyFWWXY 	 	
 	I 	 	

 	H 	 	
 	- 	 	
 es   B5B5c                 H   t         %	 t        j                  j                  t               S | d   r| d   rt        d      | d   r$	 t        j                  j                  | d         S | d   r)	 t        j                  j                  d	i t        | d   iS y # t        j                  $ r}t        dt          d      |d }~ww xY w# t        j                  $ r}t        d| d    d      |d }~ww xY w# t        j                  $ r}t        d| d    d      |d }~ww xY w)
N)pkzNo user with id zE found (specified as DJANGOCMS_VERSIONING_DEFAULT USER in settings.pyuseridusernamezFOnly either one of the options '--userid' or '--username' may be givenz foundzNo user with name  )r   UserobjectsgetDoesNotExistr   r	   )optionserrs     r    get_userzCommand.get_user-   sO   #||''<'88 8!4ghh8Z||''78+<'== :^||''P>7:;N*OPP % $$ "&|n 5U V  $$ Z"%5gh6G5H#OPVYYZ
 $$ ^"%7
8K7LF#STZ]]^sG   #B "C 0'C6 C,C  CC3C..C36D!	DD!c                    | j                  |      }t               j                  D ]  }|j                  }t        j
                  j                  |      }t        j
                  j                  |j                        j                  dd      }|j                  j                  |      j                  d      }| j                  j                  | j                   j#                  t%        |      t%        |      z    d|j&                   dt%        |       d	             ||d
   s|rt)        d      |D ]  }	|j*                  t-        |	|j*                        i}
|j.                  D ]  }t-        |	|      |
|<     |j                  j                  di |
j                  dd      }t        j
                  j                  ||      }|d   }|t0        j2                  k7  r(|D ]#  }|j4                  |k(  st0        j2                  } n |d
   rQ| j                  j                  | j                   j#                  t7        |	       d|	j                   d|              *	 t        j
                  j9                  |	||       | j                  j                  | j                   j;                  d|j&                   d|	j                                  y # t<        $ r\}| j                  j                  | j                   j?                  d|j&                   d|	j                   d|              Y d }~d }~ww xY w)N)content_type_id	object_idT)flat)pk__inz-pkz objects of type z
, thereof z missing Version objectdry_runzPlease specify a user which missing Version objects shall belong to either with the DJANGOCMS_VERSIONING_DEFAULT_USER setting or using command line argumentsr#   )content_typeobject_id__instatez (pk=z0) would be assigned a Version object with state )contentr6   
created_byz(Successfully created version object for z	 with pk=z#Failed creating version object for z: r&   ) r-   r   versionablescontent_modelr   r(   get_for_modelr
   filterr#   values_listadmin_managerexcludeorder_bystdoutwritestyleNOTICElen__name__r   grouper_field_namegetattrextra_grouping_fieldsr   ARCHIVEDr6   r   createSUCCESS	ExceptionERROR)r   argsr+   userversionableModelr4   version_idsunversionedorphan	selectorsextra_selectorsame_grouper_idsexisting_versionsr6   versiones                    r    handlezCommand.handleF   s   }}W%)+88 1	K--E&..<<UCL!//000Q]]^ipt]uK--55[5IRRSXYKKKdjj//{#c+&6677HHXXb{#$$;=  |GI$6;" $< = = & #(;;WV[MkMk=lm	&1&G&G PN070OIn-P#=5#6#6#=#=#J	#J#V#VW[bf#V#g $+OO$:$:dt$:$u!(I...#4 ""==E1$-$6$6E!"
 9%KK%%djj&7&7v;-uVYYK7ghmgno' ..$*"''+ / 
 ))$***<*<Fu~~FVV_`f`i`i_jk+ ;#1	\ % ))$***:*:A%..AQQZ[a[d[dZeeghigjk+  s   !A0K	L=!AL88L=N)rF   
__module____qualname__r   r!   staticmethodr-   r\   r&       r    r   r      s(    JD
2  04r`   r   N)django.contrib.authr   "django.contrib.contenttypes.modelsr   django.core.management.baser   r   djangocms_versioningr   djangocms_versioning.confr   r	   djangocms_versioning.modelsr
   !djangocms_versioning.versionablesr   r'   r   r&   r`   r    <module>rh      s0    . : A * B / <mk mr`   