o a(@sddlZddlmZddlmZddlmZddlmZddl m Z m Z ddl m Z ddlmZdd lmZmZd Zd Zd Zeed feedfeedffZGdddejZGdddejZdS)N)settings)quote) ContentType)models)NoReverseMatchreverse)timezone) get_text_list)gettext gettext_lazyAdditionChangeDeletionc@seZdZdZdddZdS)LogEntryManagerTcCs:t|tr t|}|jjj||t||dd||dS)N)user_idcontent_type_id object_id object_repr action_flagchange_message) isinstancelistjsondumpsmodelobjectscreatestr)selfrrrrrrr$=/usr/lib/python3/dist-packages/django/contrib/admin/models.py log_actions   zLogEntryManager.log_actionN)r)__name__ __module__ __qualname__use_in_migrationsr&r$r$r$r%rsrc@seZdZejedejddZej e j ej eddZ ej eejeddddZejed ddd Zejed d d ZejededZejedddZeZGdddZddZddZddZddZddZ ddZ!d d!Z"d"d#Z#d$S)%LogEntryz action timeF)defaulteditableuser) verbose_namez content typeT)r/blanknullz object id)r0r1z object reprr) max_lengthz action flag)choiceszchange message)r0c@s&eZdZedZedZdZdgZdS)z LogEntry.Metaz log entryz log entriesdjango_admin_logz -action_timeN)r'r(r)_r/verbose_name_pluraldb_tableorderingr$r$r$r%MetaAs  r9cCs t|jSN)r" action_timer#r$r$r%__repr__G zLogEntry.__repr__cCs\|r tdd|jiS|rtd|j|dS|r*tdd|jiStdS)NuAdded “%(object)s”.objectu(Changed “%(object)s” — %(changes)s)r?changesuDeleted “%(object)s.”zLogEntry Object) is_additionr r is_changeget_change_message is_deletionr<r$r$r%__str__JszLogEntry.__str__cC |jtkSr:)rADDITIONr<r$r$r%rAWr>zLogEntry.is_additioncCrFr:)rCHANGEr<r$r$r%rBZr>zLogEntry.is_changecCrFr:)rDELETIONr<r$r$r%rD]r>zLogEntry.is_deletioncCs|jr|jddkrzt|j}Wn tjy|jYSwg}|D]}d|vrR|drJt|dd|dd<|tdjdi|dq$|tdq$d|vrtdd |dd Dtd |dd <d|dvrt|dd|dd<|td jdi|dq$|td jdi|dq$d|vrt|dd|dd<|tdjdi|dq$ddd|D}|ptdS|jS)z{ If self.change_message is a JSON structure, interpret it as a change string, properly translated. r[addednameuAdded {name} “{object}”.zAdded.changedcSsg|]}t|qSr$)r ).0 field_namer$r$r% usz/LogEntry.get_change_message..fieldsandu+Changed {fields} for {name} “{object}”.zChanged {fields}.deleteduDeleted {name} “{object}”. css(|]}|d|ddVqdS)rr N)upper)rNmsgr$r$r% s&z.LogEntry.get_change_message..zNo fields changed.Nr$) rrloadsJSONDecodeErrorr appendformatr join)r#rmessages sub_messager$r$r%rC`s<     zLogEntry.get_change_messagecCs|jj|jdS)z7Return the edited object represented by this log entry.)pk) content_typeget_object_for_this_typerr<r$r$r%get_edited_objectszLogEntry.get_edited_objectcCsP|jr&|jr&d|jj|jjf}z t|t|jfdWSty%YdSwdS)zX Return the admin URL to edit the object represented by this log entry. zadmin:%s_%s_change)argsN)r`r app_labelrrrr)r#url_namer$r$r% get_admin_urls  zLogEntry.get_admin_urlN)$r'r(r)r DateTimeFieldr5rnowr; ForeignKeyrAUTH_USER_MODELCASCADEr.rSET_NULLr` TextFieldr CharFieldrPositiveSmallIntegerFieldACTION_FLAG_CHOICESrrrr r9r=rErArBrDrCrbrfr$r$r$r%r+'s> ( r+)r django.confrdjango.contrib.admin.utilsr"django.contrib.contenttypes.modelsr django.dbr django.urlsrr django.utilsrdjango.utils.textr django.utils.translationr r r5rGrHrIrpManagerrModelr+r$r$r$r%s$