
nMc           @   s  d  d k  l Z l Z d  d k l Z d  d k l Z l Z l Z l	 Z	 d  d k
 l Z d  d k l Z l Z d  d k l Z l Z l Z l Z d  d k l Z d  d k l Z d  d	 k l Z l Z d  d
 k l Z d  d k l Z l Z l  Z  d  d k! l" Z" d  d k# l$ Z$ l% Z% d  d k& l' Z' l( Z( d  d k) l* Z* l+ Z+ l, Z, d  d k- l. Z. l/ Z/ d  d k0 l1 Z1 d  d k2 l3 Z3 d  d k4 l5 Z5 d  d k6 l7 Z7 l8 Z8 d  d k9 l: Z: d  d k4 l; Z; d  d k< l= Z= l> Z> d  d k? l@ ZA d  d k? lB ZB d  d kC lD ZD d d f \ ZE ZF d   ZG d eH f d     YZI h
 h e iJ d  6e iK d! 6e iL 6h e iM d! 6e iN 6h e iO d! 6e iP 6h e iQ d! 6e iR 6h e iS d! 6e iT 6h e iU d! 6e iV 6h e iU d! 6e iW 6h e iX d! 6e iY 6h e iZ d! 6e i[ 6h e iZ d! 6e i\ 6Z] e1 e  Z^ d" e_ f d#     YZ` d$ e` f d%     YZa d& e` f d'     YZb d( eb f d)     YZc d* eb f d+     YZd d, S(-   i(   t   formst   template(   t	   all_valid(   t   modelform_factoryt   modelformset_factoryt   inlineformset_factoryt   BaseInlineFormSet(   t   ContentType(   t   widgetst   helpers(   t   unquotet   flatten_fieldsetst   get_deleted_objectst   model_format_dict(   t   messages(   t   csrf_protect(   t   PermissionDeniedt   ValidationError(   t	   Paginator(   t   modelst   transactiont   router(   t   RelatedObject(   t   BLANK_CHOICE_DASHt   FieldDoesNotExist(   t
   LOOKUP_SEPt   QUERY_TERMS(   t   Http404t   HttpResponset   HttpResponseRedirect(   t   get_object_or_404t   render_to_response(   t   method_decorator(   t
   SortedDict(   t   update_wrapper(   t   escapet   escapejs(   t	   mark_safe(   t   curry(   t   capfirstt   get_text_list(   t   ugettext(   t	   ungettext(   t   force_unicodei   i   c         C   s   d  |  t  j o d p d S(   s   radiolist%ss    inlinet    (   t
   HORIZONTAL(   t   x(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   <lambda>   s    t   IncorrectLookupParametersc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR0   !   s   t
   form_classt   widgett   BaseModelAdminc           B   s   e  Z d  Z e i Z d
 Z d Z d Z	 d Z
 e i Z d Z d Z h  Z h  Z h  Z d Z d Z d   Z d   Z d d  Z d d  Z d d  Z d   Z e e  Z d d  Z d   Z d	   Z RS(   s8   Functionality common to both ModelAdmin and InlineAdmin.c         C   s)   t  i   } | i |  i  | |  _ d  S(   N(   t   FORMFIELD_FOR_DBFIELD_DEFAULTSt   copyt   updatet   formfield_overrides(   t   selft	   overrides(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   __init__J   s    c         K   s  | i  d d  } | i o |  i | | |  St | t i t i f  o	| i |  i	 j o t
 |  i	 | i |  } n t | t i  o |  i | | |  } n- t | t i  o |  i | | |  } n | ou | i |  i j ob |  i i i | i i  } t | o | i |   } t i | i | i |  i d | | _ n | SxK | i i   D]: } | |  i	 j o$ t
 |  i	 | |  } | i |   SqeW| i |   S(   s   
        Hook for specifying the form Field instance for a given database Field
        instance.

        If kwargs are given, they're passed to the form Field's constructor.
        t   requestt   can_add_relatedN(   t   popt   Nonet   choicest   formfield_for_choice_fieldt
   isinstanceR   t
   ForeignKeyt   ManyToManyFieldt	   __class__R9   t   dictt   formfield_for_foreignkeyt   formfield_for_manytomanyt   namet   raw_id_fieldst
   admin_sitet	   _registryt   gett   relt   tot   boolt   has_add_permissionR   t   RelatedFieldWidgetWrapperR4   t   mrot	   formfield(   R:   t   db_fieldt   kwargsR=   RU   t   related_modeladminR>   t   klass(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   formfield_for_dbfieldO   s2    

 c         K   s   | i  |  i j o d | j o1 t i d h t |  i | i   d 6 | d <n d | j o2 | i d | i d d t d  f g  | d <q n | i |   S(	   sR   
        Get a form Field for a database Field that has declared choices.
        R4   t   attrst   classRA   t   include_blankt   blank_choiceR,   R@   (	   RJ   t   radio_fieldsR   t   AdminRadioSelectt   get_ul_classt   get_choicest   blankt   _RU   (   R:   RV   R=   RW   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyRB      s    %		$c         K   s   | i  d  } | i |  i j o  t i | i d | | d <nf | i |  i j oR t i d h t |  i | i  d 6 | d <| i	 o t
 d  p d | d <n | i |   S(   s4   
        Get a form Field for a ForeignKey.
        t   usingR4   R[   R\   R@   t   empty_labelN(   RN   RJ   RK   R   t   ForeignKeyRawIdWidgetRO   R_   R`   Ra   Rc   Rd   R@   RU   (   R:   RV   R=   RW   t   db(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyRH      s     !%c         K   s   | i  i i i p d S| i d  } | i |  i j o* t i	 | i  d | | d <d | d <nP | i t
 |  i  t
 |  i  j o) t i | i | i |  i j  | d <n | i |   S(   s9   
        Get a form Field for a ManyToManyField.
        Re   R4   R,   t	   help_textN(   RO   t   throught   _metat   auto_createdR@   RN   RJ   RK   R   t   ManyToManyRawIdWidgett   listt   filter_verticalt   filter_horizontalt   FilteredSelectMultiplet   verbose_nameRU   (   R:   RV   R=   RW   Rh   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyRI      s    &)c         C   s8   |  i  o |  i  S|  i o d  h |  i d 6f g Sd  S(   Nt   fields(   t	   fieldsetsRs   R@   (   R:   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   _declared_fieldsets   s
    

c         C   s   |  i  S(   N(   t   readonly_fields(   R:   R=   t   obj(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_readonly_fields   s    c         C   s@   |  i  i i   } |  i p d } | o | i |   } n | S(   s   
        Returns a QuerySet of all model instances that can be edited by the
        admin site. This is used by changelist_view.
        (    (   t   modelt   _default_managert   get_query_sett   orderingt   order_by(   R:   R=   t   qsR|   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   queryset   s
    c         C   s  |  i  } xY | i i D]K } xB t i |  i   D]+ \ } } | | j o | | j o t Sq2 Wq W| i t  } t	 |  d j o | d t
 j o | i   n d  } x | d  D] }	 | i i |	  \ }
 } } } t |
 d  o |
 i i } | i i i } q t |
 t  o |
 i  } | i i i } q d  } q W| o2 t	 |  d j o | d | j o | i   n y |  i  i i | d  Wn t j
 o t SXt	 |  d j o t St i |  } | |  i j p | |  i j Sd  S(   Ni   iRO   i    (   Ry   Rk   t   related_fkey_lookupsR   t   url_params_from_lookup_dictt   itemst   Truet   splitR   t   lenR   R?   R@   t   get_field_by_namet   hasattrRO   RP   t   pkRJ   RC   R   R   t   joint   list_filtert   date_hierarchy(   R:   t   lookupt   valueRy   t   lt   kt   vt   partst   pk_attr_namet   partt   fieldRd   t   clean_lookup(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   lookup_allowed   s>    	  $ 	
+(    N(    (    (    (   R1   R2   t   __doc__R    t   MediaDefiningClasst   __metaclass__RK   R@   Rs   t   excludeRt   t	   ModelFormt   formRo   Rp   R_   t   prepopulated_fieldsR9   Rv   R|   R<   RZ   RB   RH   RI   Ru   t   propertyt   declared_fieldsetsRx   R   R   (    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR5   9   s0   				6		t
   ModelAdminc           B   s  e  Z d  Z d- Z d. Z d/ Z e Z d Z d0 Z	 d1 Z
 d2 Z e Z e Z e Z g  Z d2 Z d2 Z d2 Z d2 Z d2 Z d2 Z g  Z e i Z e Z e Z e Z d   Z  d   Z! d   Z" e# e"  Z" d   Z$ e# e$  Z% d   Z& d2 d  Z' d2 d	  Z( d
   Z) d2 d  Z* d2 d  Z+ d   Z, d   Z- d   Z. d   Z/ d2 d  Z0 d e d  Z1 d   Z2 d   Z3 d   Z4 d   Z5 e6 d  e5 _7 e e5 _8 d   Z9 e: d  Z; d   Z< d   Z= d   Z> d   Z? d   Z@ d    ZA d!   ZB e e d" d2 d#  ZC d$ d%  ZD d&   ZE d'   ZF eG eH iI d" d2 d(    ZJ eG eH iI d2 d)    ZK eG d2 d*   ZL eG eH iI d2 d+    ZM d2 d,  ZN RS(3   sC   Encapsulates all admin options and functionality for a given model.t   __str__id   c         C   s   | |  _  | i |  _ | |  _ g  |  _ x6 |  i D]+ } | |  i  |  i  } |  i i |  q1 Wd |  i j o- |  i d  j	 o d g t
 |  i  |  _ n |  i p6 x3 |  i D]$ } | d j o | g |  _ Pq q Wn t t |   i   d  S(   Nt   action_checkbox(   Ry   Rk   t   optsRL   t   inline_instancest   inlinest   appendt   list_displayt   actionsR@   Rn   t   list_display_linkst   superR   R<   (   R:   Ry   RL   t   inline_classt   inline_instanceRJ   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR<     s"    			
  

 c            s   d d k  l } l }   f d   }   i i i   i i i f } | d | d |   i  d d | | d |   i  d d	 | | d
 |   i	  d d | | d |   i
  d d | | d |   i  d d |  } | S(   Ni(   t   patternst   urlc            s      f d   } t  |    S(   Nc             s     i  i   |  |   S(   N(   RL   t
   admin_view(   t   argsRW   (   R:   t   view(    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   wrapper2  s    (   R"   (   R   R   (   R:   (   R   sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   wrap1  s    R,   s   ^$RJ   s   %s_%s_changelists   ^add/$s	   %s_%s_adds   ^(.+)/history/$s   %s_%s_historys   ^(.+)/delete/$s   %s_%s_deletes   ^(.+)/$s   %s_%s_change(   t   django.conf.urls.defaultsR   R   Ry   Rk   t	   app_labelt   module_namet   changelist_viewt   add_viewt   history_viewt   delete_viewt   change_view(   R:   R   R   R   t   infot   urlpatterns(    (   R:   sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_urls.  s(    



c         C   s
   |  i    S(   N(   R   (   R:   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   urlsK  s    c      	   C   s   d d k  l } d d d d g } |  i d  j	 o | i d g  n |  i o | i d  | i d	  n |  i i   o | i d
 d d g  n t	 i
 d g  } | D] } | d | i | f q ~  S(   Ni(   t   settingss
   js/core.jss    js/admin/RelatedObjectLookups.jss   js/jquery.min.jss   js/jquery.init.jss   js/actions.min.jss   js/urlify.jss   js/prepopulate.min.jss   js/getElementsBySelector.jss   js/dom-drag.jss   js/admin/ordering.jst   jss   %s%s(   t   django.confR   R   R@   t   extendR   R   R   t   get_ordered_objectsR    t   Mediat   ADMIN_MEDIA_PREFIX(   R:   R   R   t   _[1]R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   _mediaO  s    
c         C   s*   |  i  } | i i | i d | i    S(   s   
        Returns True if the given request has permission to add an object.
        Can be overriden by the user in subclasses.
        t   .(   R   t   usert   has_permR   t   get_add_permission(   R:   R=   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyRR   _  s    	c         C   s*   |  i  } | i i | i d | i    S(   s  
        Returns True if the given request has permission to change the given
        Django model instance, the default implementation doesn't examine the
        `obj` parameter.

        Can be overriden by the user in subclasses. In such case it should
        return True if the given request has permission to change the `obj`
        model instance. If `obj` is None, this should return True if the given
        request has permission to change *any* object of the given type.
        R   (   R   R   R   R   t   get_change_permission(   R:   R=   Rw   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   has_change_permissiong  s    	c         C   s*   |  i  } | i i | i d | i    S(   s  
        Returns True if the given request has permission to change the given
        Django model instance, the default implementation doesn't examine the
        `obj` parameter.

        Can be overriden by the user in subclasses. In such case it should
        return True if the given request has permission to delete the `obj`
        model instance. If `obj` is None, this should return True if the given
        request has permission to delete *any* object of the given type.
        R   (   R   R   R   R   t   get_delete_permission(   R:   R=   Rw   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   has_delete_permissionu  s    	c         C   s4   h |  i  |  d 6|  i |  d 6|  i |  d 6S(   s   
        Returns a dict of all perms for this model. This dict has the keys
        ``add``, ``change``, and ``delete`` mapping to the True/False for each
        of those actions.
        t   addt   changet   delete(   RR   R   R   (   R:   R=   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_model_perms  s    c         C   s]   |  i  o |  i  S|  i | |  } | i i   t |  i | |   } d h | d 6f g S(   s/   Hook for specifying fieldsets for the add form.Rs   N(   R   t   get_formt   base_fieldst   keysRn   Rx   R@   (   R:   R=   Rw   R   Rs   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_fieldsets  s
    
%c         K   s   |  i  o t |  i   } n d } |  i d j o
 g  } n t |  i  } | i | i d g    | i |  i | |   | p d } h |  i d 6| d 6| d 6t	 |  i
 d | d 6} | i |  t |  i |  S(   sw   
        Returns a Form class for use in the admin add view. This is used by
        add_view and change_view.
        R   R   Rs   R=   t   formfield_callbackN(   R   R   R@   R   Rn   R   RN   Rx   R   R&   RZ   R8   R   Ry   (   R:   R=   Rw   RW   Rs   R   t   defaults(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s     


c         K   s   d d k  l } | S(   sN   
        Returns the ChangeList class for use on the changelist page.
        i(   t
   ChangeList(   t   django.contrib.admin.views.mainR   (   R:   R=   RW   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_changelist  s    c         C   se   |  i  |  } | i } y) | i i i |  } | i d |  SWn | i t f j
 o d SXd S(   s   
        Returns an instance matching the primary key provided. ``None``  is
        returned if no match is found (or the object_id failed validation
        against the primary key field).
        R   N(	   R   Ry   Rk   R   t	   to_pythonRN   t   DoesNotExistR   R@   (   R:   R=   t	   object_idR   Ry   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt
   get_object  s    	c         K   s9   h t  |  i d | d 6} | i |  t |  i |  S(   sU   
        Returns a Form class for use in the Formset on the changelist page.
        R=   R   (   R&   RZ   R8   R   Ry   (   R:   R=   RW   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_changelist_form  s    c         K   sT   h t  |  i d | d 6} | i |  t |  i |  i |  d d d |  i | S(   sj   
        Returns a FormSet class for use on the changelist page if list_editable
        is used.
        R=   R   t   extrai    Rs   (   R&   RZ   R8   R   Ry   R   t   list_editable(   R:   R=   RW   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_changelist_formset  s    	c         c   s)   x" |  i  D] } | i | |  Vq
 Wd  S(   N(   R   t   get_formset(   R:   R=   Rw   t   inline(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_formsets  s    
 i    c         C   s   |  i  | | | |  S(   N(   t	   paginator(   R:   R=   R   t   per_paget   orphanst   allow_empty_first_page(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_paginator  s    c         C   sc   d d k  l } l } | i i d | i i d t i i |  i d | i d t	 |  d |  d S(	   s   
        Log that an object has been successfully added.

        The default implementation creates an admin LogEntry object.
        i(   t   LogEntryt   ADDITIONt   user_idt   content_type_idR   t   object_reprt   action_flagN(
   t   django.contrib.admin.modelsR   R   t   objectst
   log_actionR   R   R   t   get_for_modelR+   (   R:   R=   t   objectR   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   log_addition  s    	c         C   si   d d k  l } l } | i i d | i i d t i i |  i d | i d t	 |  d | d |  d	 S(
   s   
        Log that an object has been successfully changed.

        The default implementation creates an admin LogEntry object.
        i(   R   t   CHANGER   R   R   R   R   t   change_messageN(
   R   R   R   R   R   R   R   R   R   R+   (   R:   R=   R   t   messageR   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt
   log_change  s    	c         C   s`   d d k  l } l } | i i d | i i d t i i |  i	  i
 d | i
 d | d |  d S(	   s   
        Log that an object will be deleted. Note that this method is called
        before the deletion.

        The default implementation creates an admin LogEntry object.
        i(   R   t   DELETIONR   R   R   R   R   N(   R   R   R   R   R   R   t   idR   R   Ry   R   (   R:   R=   R   R   R   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   log_deletion  s    	c         C   s   t  i i t  i t | i   S(   sE   
        A list_display column containing a checkbox widget.
        (   R	   t   checkboxt   rendert   ACTION_CHECKBOX_NAMER+   R   (   R:   Rw   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s    s,   <input type="checkbox" id="action-toggle" />c         C   sl  d d k  l } |  i d j p | | i j o t   Sg  } xN |  i i D]@ \ } } t | d | i d d   } | i	 | | | f  qK Wxu |  i
 i   d d d  D]W } t | d g   } | p q n | i g  }	 | D] }
 |	 |  i |
  q ~	  q Wt d |  } | i d d	    t g  } | D]% \ } } } | | | | | f f q7~  } | S(
   s   
        Return a dictionary mapping the names of all actions for this
        ModelAdmin to a tuple of (callable, name, description) for each action.
        i(   t   IS_POPUP_VARt   short_descriptionRd   t    NR   t   keyc         S   s   |  d  i    S(   i   (   t   lower(   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR/   <  s    (   R   R  R   R@   t   GETR!   RL   t   getattrt   replaceR   RF   RT   R   t
   get_actiont   filtert   sort(   R:   R=   R  R   RJ   t   funct   descriptionRY   t   class_actionsR   t   actiont   _[2]t   desc(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_actions  s(       55c         C   s]   g  | } xL |  i  |  i   D]5 \ } } } | | t |  i  f } | i |  q  W| S(   sy   
        Return a list of choices for use in a form object.  Each choice is a
        tuple (name, description).
        (   R  t
   itervaluesR   R   R   (   R:   R=   t   default_choicesRA   R  RJ   R  t   choice(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   get_action_choicesD  s    
 c         C   s   t  |  o | } | i } nW t |  i |  o t |  i |  } n. y |  i i |  } Wn t j
 o d SXt | d  o | i	 } n t
 | i d d   } | | | f S(   s   
        Return a given action from a parameter, which can either be a callable,
        or the name of a method on the ModelAdmin.  Return is a tuple of
        (callable, name, description).
        R  Rd   R  N(   t   callableR1   R   RF   R
  RL   R  t   KeyErrorR@   R  R'   R  (   R:   R  R  R  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR  O  s    c   
      C   sv  g  } | i  o- | i t d  t | i  t d    n | ox| D]} xH | i D]= } | i t d  h t | i i  d 6t |  d 6 q[ Wxd | i D]Y \ } } | i t d  h t | t d   d 6t | i i  d 6t |  d 6 q WxH | i	 D]= }	 | i t d  h t |	 i i  d 6t |	  d 6 qWqK Wn d	 i
 |  } | p
 t d
  S(   sC   
        Construct a change message from a changed object.
        s   Changed %s.t   ands   Added %(name)s "%(object)s".RJ   R   s+   Changed %(list)s for %(name)s "%(object)s".Rn   s   Deleted %(name)s "%(object)s".R  s   No fields changed.(   t   changed_dataR   Rd   R(   t   new_objectsR+   Rk   Rr   t   changed_objectst   deleted_objectsR   (
   R:   R=   R   t   formsetsR   t   formsett   added_objectt   changed_objectt   changed_fieldst   deleted_object(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   construct_change_messagem  s0    
- 
 
 
 c         C   s   t  i | |  d S(   s   
        Send a message to the user. The default implementation
        posts a message using the django.contrib.messages backend.
        N(   R   R   (   R:   R=   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   message_user  s    c         C   s   | i  d t  S(   s   
        Given a ModelForm return an unsaved instance. ``change`` is True if
        the object is being changed, and False if it's being added.
        t   commit(   t   savet   False(   R:   R=   R   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt	   save_form  s    c         C   s   | i    d S(   sA   
        Given a model instance save it to the database.
        N(   R*  (   R:   R=   Rw   R   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt
   save_model  s    c         C   s   | i    d S(   sE   
        Given a model instance delete it from the database.
        N(   R   (   R:   R=   Rw   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   delete_model  s    c         C   s   | i    d S(   sB   
        Given an inline formset save it to the database.
        N(   R*  (   R:   R=   R   R"  R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   save_formset  s    R,   c         C   sc  |  i  i } | i } | i   }	 | i h | d 6| d 6|  i |  d 6|  i | |  d 6|  i | |  d 6t d 6t	 |  i  d  d 6|	 d	 6t
 |  d
 6| d 6t i i |  i   i d 6|  i d 6|  i d 6|  i i d 6 | o |  i d  j	 o |  i }
 n
 |  i }
 t i | d |  i i } t |
 p$ d | | i i   f d | d g | d | S(   NR   R   RR   R   R   t   has_file_fieldt   get_absolute_urlt   has_absolute_urlt   ordered_objectst   form_urlR   R   t   save_ast   save_on_topt	   root_patht   current_apps   admin/%s/%s/change_form.htmls   admin/%s/change_form.htmls   admin/change_form.htmlt   context_instance(   Ry   Rk   R   R   R8   RR   R   R   R   R   R%   R   R   R   R   R5  R6  RL   R7  t   add_form_templateR@   t   change_form_templateR   t   RequestContextRJ   R   t   object_nameR  (   R:   R=   t   contextR   R   R4  Rw   R   R   R3  t   form_templateR9  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   render_change_form  s6    		

	
s   ../%s/c         C   sX  | i  } | i   } t d  h t | i  d 6t |  d 6} d | i j oK |  i | | d t d   d | i j o | d 7} n t | |  Sd | i j o! t d	 t	 |  t
 |  f  Sd
 | i j o9 |  i | | d t d  t | i   t | i  S|  i | |  |  i | d  o
 d } n d } t |  Sd S(   sE   
        Determines the HttpResponse for the add_view stage.
        s.   The %(name)s "%(obj)s" was added successfully.RJ   Rw   t	   _continueR  s   You may edit it again below.t   _popups	   ?_popup=1sZ   <script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>t   _addanothers   You may add another %s below.s   ../s	   ../../../N(   Rk   t   _get_pk_valRd   R+   Rr   t   POSTR(  R   R   R#   R$   t   pathR   R@   (   R:   R=   Rw   t   post_url_continueR   t   pk_valuet   msgt   post_url(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   response_add  s&    	-+
c         C   s  | i  } | i } | i o | i i  } | i } n | i   } t d  h t |  d 6t |  d 6} d | i j oQ |  i | | d t d   d | i	 j o t
 | i d  St
 | i  Sn d	 | i j oC t d
  h t |  d 6| d 6} |  i | |  t
 d |  Sd | i j o3 |  i | | d t d  t |   t
 d  S|  i | |  |  i | d  o t
 d  St
 d  Sd S(   sH   
        Determines the HttpResponse for the change_view stage.
        s0   The %(name)s "%(obj)s" was changed successfully.RJ   Rw   RA  R  s   You may edit it again below.RB  s	   ?_popup=1t
   _saveasnewsK   The %(name)s "%(obj)s" was added successfully. You may edit it again below.s   ../%s/RC  s   You may add another %s below.s   ../add/s   ../s	   ../../../N(   Rk   Rr   t	   _deferredt   proxy_for_modelRD  Rd   R+   RE  R(  t   REQUESTR   RF  R   R@   (   R:   R=   Rw   R   Rr   t   opts_RH  RI  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   response_change  s.    		
*$(c      
   C   s  y t  | i i d d   } Wn t j
 o d } n X| i i   } | i t i d	  | i d d	  y% | i	 h | i
 d  | d 6 Wn t j
 o n X|  i | d d	 } |  i |  | i d _ | i   o | i d } | i d } |  i |  | \ } }	 }
 | i i
 t i  } | o) | o! t d  } |  i | |  d	 S| p | i d |  } n | |  | |  } t | t  o | St | i    Sn! t d  } |  i | |  d	 Sd	 S(
   s   
        Handle an admin action. This is called if a request is POSTed to the
        changelist; it returns an HttpResponse if the action was handled, and
        None otherwise.
        t   indexi    R  t   auto_idt   select_acrosssW   Items must be selected in order to perform actions on them. No items have been changed.t   pk__ins   No action selected.N(   t   intRE  RN   t
   ValueErrorR7   R?   R	   R  R@   R8   t   getlistt
   IndexErrort   action_formR  Rs   RA   t   is_validt   cleaned_dataR  Rd   R(  R  RC   R   R   t   get_full_path(   R:   R=   R   t   action_indext   dataRZ  R  RT  R  RJ   R  t   selectedRI  t   response(    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   response_action  s>    
%c         C   s  |  i  } | i } |  i |  p
 t  n |  i |  } g  } | i d j o| | i | i  } | i   o" |  i	 | | d t
 }	 t }
 n t
 }
 |  i    }	 h  } x t |  i |  |  i  D] \ } } | i   } | i | d  d | | <| | d j o d | | | f } n | d | i d | i d |	 d	 d
 | i j d | d | i |   } | i |  q Wt |  ou |
 on |  i | |	 | d t
 | i   x' | D] } |  i | | | d t
 qW|  i | |	  |  i | |	  SnKt | i i    } xk | D]c } y | i |  } Wn t i j
 o
 qn Xt | t i   o | | i! d  | | <qqW| d |  } h  } x t |  i |  |  i  D] \ } } | i   } | i | d  d | | <| | d j o d | | | f } n | d |  i    d | d | i |   } | i |  qWt" i# | t$ |  i% |   |  i& |  i' |  d |  } |  i( | i( } g  } x t |  i |  D]n \ } } t$ | i% |   } t$ | i' |   } t" i) | | | | d |  } | i |  | | i( } qWh	 t* d  t+ | i,  d 6| d 6d | i- j d 6t
 d 6t. |  d 6| d 6t" i/ | |  d 6|  i0 i1 d 6| i2 d 6} | i3 | p h   |  i4 | | d | d t S(   s$   The 'add' admin view for this model.RE  R   i    i   s   %s-%sR_  t   filest   instancet   save_as_newRL  t   prefixR   t   ,t   initialt   model_admins   Add %st   titlet	   adminformRB  t   is_popupt   show_deletet   mediat   inline_admin_formsetst   errorsR7  R   R4  R   (5   Ry   Rk   RR   R   R   t   methodRE  t   FILESR[  R,  R+  R   t   zipR   R   t   get_default_prefixRN   R   R   R   R-  t   save_m2mR/  R   RK  RG   R	  R   t	   get_fieldR   R   RC   RE   R   R	   t	   AdminFormRn   R   R   Rx   Rn  t   InlineAdminFormSetRd   R+   Rr   RO  R%   t   AdminErrorListRL   R7  R   R8   R@  (   R:   R=   R4  t   extra_contextRy   R   R   R!  R   t
   new_objectt   form_validatedt   prefixest   FormSetR   Rf  R"  Rh  R   t   ft	   adminFormRn  Ro  Rt   t   readonlyt   inline_admin_formsetR>  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR   R  s    		

 
  
 	 c         C   s  |  i  } | i } |  i | t |   } |  i | |  p
 t  n | d j o7 t t d  h t	 | i
  d 6t |  d 6  n | i d j o$ d | i j o |  i | d d S|  i | |  } g  } | i d j o| | i | i d | }	 |	 i   o" t }
 |  i | |	 d	 t } n t }
 | } h  } x t |  i | |  |  i  D] \ } } | i   } | i | d
  d | | <| | d j o d | | | f } n | | i | i d | d | d | i |  } | i |  qbWt |  o |
 o |  i | | |	 d	 t |	 i   x' | D] } |  i | |	 | d	 t q<W|  i  | |	 |  } |  i! | | |  |  i" | |  Sn | d |  }	 h  } x t |  i | |  |  i  D] \ } } | i   } | i | d
  d | | <| | d j o d | | | f } n | d | d | d | i |   } | i |  qWt# i$ |	 |  i% | |  |  i& |  i' | |  d |  } |  i( | i( } g  } x t |  i |  D]t \ } } t) | i% | |   } t) | i' | |   } t# i* | | | | d |  } | i |  | | i( } qWh
 t d  t	 | i
  d 6| d 6| d 6| d 6d | i+ j d 6t, |  d 6| d 6t# i- |	 |  d 6|  i. i/ d 6| i0 d 6} | i1 | p h   |  i2 | | d	 t d | S(   s'   The 'change' admin view for this model.s8   %(name)s object with primary key %(key)r does not exist.RJ   R  RE  RL  R4  s   ../add/Rd  R   i    i   s   %s-%sRf  R   Ri  s	   Change %sRj  Rk  R   t   originalRB  Rl  Rn  Ro  Rp  R7  R   Rw   N(3   Ry   Rk   R   R
   R   R   R@   R   Rd   R+   Rr   R#   Rq  RE  R   R   Rr  R[  R   R,  R+  Rs  R   R   Rt  RN   R   R   R   R-  Ru  R/  R'  R   RQ  R	   Rw  R   R   Rx   Rn  Rn   Rx  RO  R%   Ry  RL   R7  R   R8   R@  (   R:   R=   R   Rz  Ry   R   Rw   R   R!  R   R|  R{  R}  R~  R   Rf  R"  R   R  Rn  Ro  Rt   R  R  R>  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s    		
7 
 
  	 c         C   s  d d k  l } |  i i } | i } |  i | d/  p
 t  n |  i |  } t	 |  i
  } | p+ y | i d  Wq t j
 o q Xn |  i |  } yF | | |  i | |  i |  i |  i |  i |  i |  i |  i |   }	 WnZ t j
 oN | | i i   j o t d h t d  d 6 St | i d | d  SXt }
 | i i t i   } | o | i! d	 j o~ d
 | i j on d | i j o^ | o1 |  i" | d |	 i#   } | o | St$ }
 qt d  } |  i% | |  t$ }
 n | o | i! d	 j oo t i  | i j o\ d
 | i j oL d | i j o< | o1 |  i" | d |	 i#   } | o | St$ }
 qzn d/ } |	 _& | i! d	 j o|	 i od | i j oq|
 oi|  i' |  } | | i | i( d |	 i) } |	 _& | i*   o$d } x | i+ D] } | i,   oq |  i- | | d t$ } |  i. | | | d t$ | i/   |  i0 | | d/  } |  i1 | | |  | d 7} q
q
W| ot | d j o t2 | i3  } n t2 | i4  } t5 d d |  h | d 6| d 6t2 |  d 6} |  i% | |  n t | i6    Sn7 |	 i o, |  i' |  } | d |	 i)  } |	 _& n | o |  i7 | i7 } n
 |  i7 } | o/ |  i8 d d/  } |  i9 |  | i: d _; n d/ } t5 d d |	 i<  } h t2 | i4  d 6t d  h t= |	 i)  d 6d 6| h |	 i< d 6d 6|	 i> d 6|	 i? d  6|	 d! 6| d" 6|  i@ |  d# 6|  iA iB d$ 6| d% 6| d& 6|  iC d' 6|  iD d( 6|  iE d) 6} | iF | p h   tG iH | d* |  iA iI } t |  iJ p$ d+ | | iK iL   f d, | d- g | d. | S(0   s,   The 'change list' admin view for this model.i(   t
   ERROR_FLAGR   s   admin/invalid_setup.htmls   Database errorRj  t   ?s   =1RE  RR  t   _saveR   sW   Items must be selected in order to perform actions on them. No items have been changed.i    R   i   s,   %(count)s %(name)s was changed successfully.s-   %(count)s %(name)s were changed successfully.t   countRJ   Rw   RS  R  s   %(total_count)s selecteds   All %(total_count)s selectedR   s   0 of %(cnt)s selectedt   cntt   selection_notet   total_countt   selection_note_allRl  t   clRn  RR   R7  R   RZ  t   actions_on_topt   actions_on_bottomt   actions_selection_counterR8  s   admin/%s/%s/change_list.htmls   admin/%s/change_list.htmls   admin/change_list.htmlR9  N(M   R   R  Ry   Rk   R   R   R@   R   R  Rn   R   t   removeRW  R   R   R   R   t   search_fieldst   list_select_relatedt   list_per_pageR   R0   R	  R   R   Rd   R   RF  R+  RE  RX  R	   R  Rq  Rb  R{   R   R(  R"  R   Rr  t   result_listR[  R    t   has_changedR,  R-  Ru  R'  R   R+   Rr   t   verbose_name_pluralR*   R]  Rn  RZ  R  Rs   RA   t   result_countR   Rj  Rl  RR   RL   R7  R  R  R  R8   R   R<  RJ   t   change_list_templateR=  R  (   R:   R=   Rz  R  R   R   R   R   R   R  t   action_failedR`  Ra  RI  R"  R~  t   changecountR   Rw   t
   change_msgRJ   Rn  RZ  R  R>  R9  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s    	
	 

 %
 

	!



c         C   so  |  i  i } | i } |  i | t |   } |  i | |  p
 t  n | d j o7 t t	 d  h t
 | i  d 6t |  d 6  n t i |  i   } t | g | | i |  i |  \ } }	 }
 | i o |	 o
 t  n t
 |  } |  i | | |  |  i | |  |  i | t	 d  h t
 | i  d 6t
 |  d 6 |  i | d  p t d  St d  St
 | i  } |	 p |
 o t	 d  h | d 6} n t	 d	  } h	 | d
 6| d 6| d 6| d 6|	 d 6|
 d 6| d 6|  i i d 6| d 6} | i | p h   t i | d |  i i } t |  i p$ d | | i i    f d | d g | d | S(   s'   The 'delete' admin view for this model.s8   %(name)s object with primary key %(key)r does not exist.RJ   R  s0   The %(name)s "%(obj)s" was deleted successfully.Rw   s   ../../../../s   ../../s   Cannot delete %(name)ss   Are you sure?Rj  R=  R   R   t   perms_lackingt	   protectedR   R7  R   R8  s$   admin/%s/%s/delete_confirmation.htmls!   admin/%s/delete_confirmation.htmls   admin/delete_confirmation.htmlR9  N(!   Ry   Rk   R   R   R
   R   R   R@   R   Rd   R+   Rr   R#   R   t   db_for_writeR   R   RL   RE  R   R.  R(  R   R   R7  R8   R   R<  RJ   R   t   delete_confirmation_templateR=  R  (   R:   R=   R   Rz  R   R   Rw   Re   R   t   perms_neededR  t   obj_displayR=  Rj  R>  R9  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     sR    	
7'

7
c         C   s=  d d k  l } |  i } | i } | i } | i i d | d t i i |  i	  i
   i d  } t | d t |  }	 h t d  t |	  d 6| d	 6t t | i   d
 6|	 d 6|  i i d 6| d 6}
 |
 i | p h   t i | d |  i i } t |  i p$ d | | i i   f d | d g |
 d | S(   s(   The 'history' admin view for this model.i(   R   R   t   content_type__id__exactt   action_timeR   s   Change history: %sRj  t   action_listR   R   R7  R   R8  s   admin/%s/%s/object_history.htmls   admin/%s/object_history.htmls   admin/object_history.htmlR9  (   R   R   Ry   Rk   R   R   R  R   R   R   t   select_relatedR}   R   R
   Rd   R+   R'   R  RL   R7  R8   R   R<  RJ   R   t   object_history_templateR=  R  (   R:   R=   R   Rz  R   Ry   R   R   R  Rw   R>  R9  (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s.    				
(   s   __str__(    (    (    (    N(O   R1   R2   R   R   R   R   R+  R  R  R   R  R@   R   R5  R6  R   R   R   R:  R;  R  R  t%   delete_selected_confirmation_templateR  R   R	   t
   ActionFormRZ  R   R  R  R  R<   R   R   R   R   Rn  RR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R%   R  t
   allow_tagsR  R   R  R  R'  R(  R,  R-  R.  R/  R@  RK  RQ  Rb  t   csrf_protect_mR   t   commit_on_successR   R   R   R   R   (    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR      s   										
							(							#	&	CXZ;t   InlineModelAdminc           B   sz   e  Z d  Z d Z d Z e Z d Z d Z	 d Z
 d Z d Z e Z d   Z d   Z e e  Z d d  Z d d  Z RS(   s   
    Options for inline editing of ``model`` instances.

    Provide ``name`` to specify the attribute name of the ``ForeignKey`` from
    ``model`` to its parent. This is required if ``model`` has more than one
    ``ForeignKey`` to its parent.
    i   c         C   s   | |  _  | |  _ |  i i |  _ t t |   i   |  i d  j o |  i i i |  _ n |  i
 d  j o |  i i i
 |  _
 n d  S(   N(   RL   t   parent_modelRy   Rk   R   R   R  R<   Rr   R@   R  (   R:   R  RL   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR<     s    		c      	   C   s   d d k  l } d d d g } |  i o | i d  | i d  n |  i p
 |  i o | i d d	 g  n t i d
 g  } | D] } | d | i	 | f q ~  S(   Ni(   R   s   js/jquery.min.jss   js/jquery.init.jss   js/inlines.min.jss   js/urlify.jss   js/prepopulate.min.jss   js/SelectBox.jss   js/SelectFilter2.jsR   s   %s%s(
   R   R   R   R   Ro   Rp   R   R    R   R   (   R:   R   R   R   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s    
c         K   s  |  i  o t |  i   } n d } |  i d j o
 g  } n t |  i  } | i | i d g    | i |  i | |   | p d } h	 |  i d 6|  i	 d 6|  i
 d 6| d 6| d 6t |  i d | d 6|  i d 6|  i d	 6|  i d
 6} | i |  t |  i |  i |  S(   sD   Returns a BaseInlineFormSet class for use in admin add/change views.R   R   R"  t   fk_nameRs   R=   R   R   t   max_numt
   can_deleteN(   R   R   R@   R   Rn   R   RN   Rx   R   R"  R  R&   RZ   R   R  R  R8   R   R  Ry   (   R:   R=   Rw   RW   Rs   R   R   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR     s*    






c         C   s]   |  i  o |  i  S|  i |  i } | i i   t |  i | |   } d  h | d 6f g S(   NRs   (   R   R   R   R   R   Rn   Rx   R@   (   R:   R=   Rw   R   Rs   (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR   :  s
    
%N(   R1   R2   R   R@   Ry   R  R   R"  R   R  R   Rr   R  R   R  R<   R   R   Rn  R   R   (    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR    s   	
		t   StackedInlinec           B   s   e  Z d  Z RS(   s   admin/edit_inline/stacked.html(   R1   R2   R   (    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR  A  s   t   TabularInlinec           B   s   e  Z d  Z RS(   s   admin/edit_inline/tabular.html(   R1   R2   R   (    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyR  D  s   N(e   t   djangoR    R   t   django.forms.formsetsR   t   django.forms.modelsR   R   R   R   t"   django.contrib.contenttypes.modelsR   t   django.contrib.adminR   R	   t   django.contrib.admin.utilR
   R   R   R   t   django.contribR   t   django.views.decorators.csrfR   t   django.core.exceptionsR   R   t   django.core.paginatorR   t	   django.dbR   R   R   t   django.db.models.relatedR   t   django.db.models.fieldsR   R   t   django.db.models.sql.constantsR   R   t   django.httpR   R   R   t   django.shortcutsR   R   t   django.utils.decoratorsR    t   django.utils.datastructuresR!   t   django.utils.functionalR"   t   django.utils.htmlR#   R$   t   django.utils.safestringR%   R&   t   django.utils.textR'   R(   t   django.utils.translationR)   Rd   R*   t   django.utils.encodingR+   R-   t   VERTICALRa   t	   ExceptionR0   t   SplitDateTimeFieldt   AdminSplitDateTimet   DateTimeFieldt   AdminDateWidgett	   DateFieldt   AdminTimeWidgett	   TimeFieldt   AdminTextareaWidgett	   TextFieldt   AdminURLFieldWidgett   URLFieldt   AdminIntegerFieldWidgett   IntegerFieldt   BigIntegerFieldt   AdminTextInputWidgett	   CharFieldt   AdminFileWidgett
   ImageFieldt	   FileFieldR6   R  R   R5   R   R  R  R  (    (    (    sF   /usr/local/lib/python2.6/dist-packages/django/contrib/admin/options.pyt   <module>   sd   ""	
   K