
 X                 @   s  d  d l  m 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
 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 m Z d Z d Z d Z Gd d   d e
 j  Z e Gd d   d e
 j   Z d S)    )unicode_literalsN)settings)quote)ContentType)models)NoReverseMatchreverse)timezone)python_2_unicode_compatible
smart_text)get_text_list)ugettextugettext_lazy         c               @   s%   e  Z d  Z d Z d d d  Z d S)LogEntryManagerT c             C   si   t  | t  r! t j |  } n  |  j j j d | d | d t |  d | d  d  d | d |  d  S)Nuser_idcontent_type_id	object_idobject_repr   action_flagchange_message)
isinstancelistjsondumpsmodelobjectscreater   )selfr   r   r   r   r   r    r#   I/home/ubuntu/projects/ifolica/build/django/django/contrib/admin/models.py
log_action   s    zLogEntryManager.log_actionN)__name__
__module____qualname__Zuse_in_migrationsr%   r#   r#   r#   r$   r      s   r   c            	   @   sm  e  Z d  Z e j e d  d e j d d Z e j	 e
 j e j d e d  Z e j	 e e j d e d  d d	 d
 d	 Z e j e d  d d	 d
 d	 Z e j e d  d d Z e j e d   Z e j e d  d d	 Z e   Z Gd d   d  Z d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z  d d    Z! d! d"   Z" d# S)$LogEntryzaction timedefaulteditableFverbose_nameuserzcontent typeZblankTnullz	object idzobject repr
max_lengthr   zaction flagzchange messagec               @   s4   e  Z d  Z e d  Z e d  Z d Z d Z d S)zLogEntry.Metaz	log entryzlog entriesZdjango_admin_log-action_timeN)r0   )r&   r'   r(   _r,   Zverbose_name_pluralZdb_tableZorderingr#   r#   r#   r$   Meta?   s   r2   c             C   s   t  |  j  S)N)r   action_time)r"   r#   r#   r$   __repr__E   s    zLogEntry.__repr__c             C   s   |  j    r$ t d  i |  j d 6S|  j   rU t d  i |  j d 6|  j   d 6S|  j   ry t d  i |  j d 6St d  S)NzAdded "%(object)s".objectz"Changed "%(object)s" - %(changes)sZchangeszDeleted "%(object)s."zLogEntry Object)is_additionr   r   	is_changeget_change_messageis_deletion)r"   r#   r#   r$   __str__H   s    
zLogEntry.__str__c             C   s   |  j  t k S)N)r   ADDITION)r"   r#   r#   r$   r6   U   s    zLogEntry.is_additionc             C   s   |  j  t k S)N)r   CHANGE)r"   r#   r#   r$   r7   X   s    zLogEntry.is_changec             C   s   |  j  t k S)N)r   DELETION)r"   r#   r#   r$   r9   [   s    zLogEntry.is_deletionc             C   s  |  j  r|  j  d d k ry t j |  j   } Wn t k
 rM |  j  SYn Xg  } xg| D]_} d | k r | d r t | d d  | d d <| j t d  j | d    q| j t d   q[ d | k rot | d d t d	   | d d <d | d k rLt | d d  | d d <| j t d
  j | d    q| j t d  j | d    q[ d | k r[ t | d d  | d d <| j t d  j | d    q[ q[ Wd j d d   | D  } | pt d  S|  j  Sd S)z{
        If self.change_message is a JSON structure, interpret it as a change
        string, properly translated.
        r   [addednamezAdded {name} "{object}".zAdded.changedfieldsandz'Changed {fields} for {name} "{object}".zChanged {fields}.ZdeletedzDeleted {name} "{object}". c             s   s-   |  ]# } | d  j    | d d  Vq d S)r   r   N)upper).0msgr#   r#   r$   	<genexpr>   s    z.LogEntry.get_change_message.<locals>.<genexpr>zNo fields changed.N)	r   r   loads
ValueErrorr   appendformatr   join)r"   r   messagesZsub_messager#   r#   r$   r8   ^   s4    
#"#'zLogEntry.get_change_messagec             C   s   |  j  j d |  j  S)z7Returns the edited object represented by this log entrypk)content_typeZget_object_for_this_typer   )r"   r#   r#   r$   get_edited_object   s    zLogEntry.get_edited_objectc             C   sj   |  j  rf |  j rf d |  j  j |  j  j f } y  t | d t |  j  f SWqf t k
 rb Yqf Xn  d S)zY
        Returns the admin URL to edit the object represented by this log entry.
        zadmin:%s_%s_changeargsN)rP   r   Z	app_labelr   r   r   r   )r"   url_namer#   r#   r$   get_admin_url   s     zLogEntry.get_admin_urlN)#r&   r'   r(   r   ZDateTimeFieldr1   r	   nowr3   Z
ForeignKeyr   ZAUTH_USER_MODELZCASCADEr-   r   ZSET_NULLrP   Z	TextFieldr   Z	CharFieldr   ZPositiveSmallIntegerFieldr   r   r   r    r2   r4   r:   r6   r7   r9   r8   rQ   rT   r#   r#   r#   r$   r)   $   s6   				!	(r)   ) 
__future__r   r   Zdjango.confr   Zdjango.contrib.admin.utilsr   Z"django.contrib.contenttypes.modelsr   Z	django.dbr   Zdjango.urlsr   r   Zdjango.utilsr	   Zdjango.utils.encodingr
   r   Zdjango.utils.textr   Zdjango.utils.translationr   r   r1   r;   r<   r=   Managerr   ZModelr)   r#   r#   r#   r$   <module>   s    