ó
ø¢TQc           @   sé   d  d l  Z  d  d l m Z d  d l m Z m Z m Z m Z d  d l m	 Z	 d  d l
 m Z d „  Z e	 j j e ƒ d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   router(   t   QuerySett   EmptyQuerySett   insert_queryt   RawQuerySet(   t   signals(   t   FieldDoesNotExistc         K   so  |  } | j  j r, t | d t | ƒ ƒ d S| j  j rR t | d t | ƒ ƒ d St | d d ƒ sÁ y' | j  j d ƒ t	 d | j
 ƒ ‚ Wn t k
 rž n X| j d t ƒ  ƒ | j | _ nª t | d d ƒ sk| j j } | t k sý t | d t ƒ r| j | _ qkxM | j ƒ  d D]; } | t k sAt | d t ƒ r| j d | ƒ  ƒ d SqWt d ƒ ‚ n  d S(	   s  
    Ensures that a Model subclass contains a default manager  and sets the
    _default_manager attribute on the class. Also sets up the _base_manager
    points to a plain Manager instance (which could be the same as
    _default_manager if it's not a subclass of Manager).
    t   objectsNt   _default_managersN   Model %s must specify a custom Manager, because it has a field named 'objects't   _base_managert   use_for_related_fieldsi   sY   Should never get here. Please report a bug, including your model and model manager setup.(   t   _metat   abstractt   setattrt   AbstractManagerDescriptort   swappedt   SwappedManagerDescriptort   getattrt   Nonet	   get_fieldt
   ValueErrort   __name__R   t   add_to_classt   ManagerR   R	   R   t	   __class__t   Falset   mrot   AssertionError(   t   sendert   kwargst   clst   default_mgrt
   base_class(    (    s1   ../Django//lib/python/django/db/models/manager.pyt   ensure_default_manager   s4    R   c           B   sˆ  e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d  „  Z# d! „  Z$ d" „  Z% d# „  Z& d$ „  Z' d% „  Z( d& „  Z) d' „  Z* d( „  Z+ d* d) „ Z- RS(+   i    c         C   s<   t  t |  ƒ j ƒ  |  j ƒ  d  |  _ t |  _ d  |  _ d  S(   N(	   t   superR   t   __init__t   _set_creation_counterR   t   modelR   t
   _inheritedt   _db(   t   self(    (    s1   ../Django//lib/python/django/db/models/manager.pyR#   6   s
    
		c         C   s  | |  _  | j j r. t | | t | ƒ ƒ n; | j j rS t | | t | ƒ ƒ n t | | t |  ƒ ƒ t | d d  ƒ s‘ |  j
 | j j
 k  r |  | _ n  | j j sÂ |  j rä |  j  j j rä | j j j |  j
 | |  f ƒ n | j j j |  j
 | |  f ƒ d  S(   NR   (   R%   R   R   R   R   R   R   t   ManagerDescriptorR   R   t   creation_counterR   R&   t   proxyt   abstract_managerst   appendt   concrete_managers(   R(   R%   t   name(    (    s1   ../Django//lib/python/django/db/models/manager.pyt   contribute_to_class=   s    	(%c         C   s   t  j |  _ t  j d 7_ d S(   sp   
        Sets the creation counter value for this instance and increments the
        class-level copy.
        i   N(   R   R*   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR$   Q   s    c         C   sG   t  | |  j ƒ s t ‚ t j |  ƒ } | j ƒ  | | _ t | _ | S(   sÄ   
        Makes a copy of the manager and assigns it to 'model', which should be
        a child of the existing model (used when inheriting a manager from an
        abstract base class).
        (   t
   issubclassR%   R   t   copyR$   t   TrueR&   (   R(   R%   t   mgr(    (    s1   ../Django//lib/python/django/db/models/manager.pyt   _copy_to_modelY   s    
		c         C   s   t  j  |  ƒ } | | _ | S(   N(   R2   R'   (   R(   t   usingt   obj(    (    s1   ../Django//lib/python/django/db/models/manager.pyt
   db_managerf   s    	c         C   s   |  j  p t j |  j ƒ S(   N(   R'   R    t   db_for_readR%   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   dbk   s    c         C   s   t  |  j d |  j ƒS(   NR6   (   R   R%   R'   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   get_empty_query_sets   s    c         C   s   t  |  j d |  j ƒS(   s…   Returns a new QuerySet object.  Subclasses can override this method
        to easily customize the behavior of the Manager.
        R6   (   R   R%   R'   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   get_query_setv   s    c         C   s
   |  j  ƒ  S(   N(   R;   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   none|   s    c         C   s
   |  j  ƒ  S(   N(   R<   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   all   s    c         C   s   |  j  ƒ  j ƒ  S(   N(   R<   t   count(   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR?   ‚   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   dates(   R(   t   argsR   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR@   …   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   distinct(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRB   ˆ   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   extra(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRC   ‹   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   get(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRD   Ž   s    c         K   s   |  j  ƒ  j |   S(   N(   R<   t   get_or_create(   R(   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRE   ‘   s    c         K   s   |  j  ƒ  j |   S(   N(   R<   t   create(   R(   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRF   ”   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   bulk_create(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRG   —   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   filter(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRH   š   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t	   aggregate(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRI      s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   annotate(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRJ       s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   complex_filter(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRK   £   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   exclude(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRL   ¦   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   in_bulk(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRM   ©   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   iterator(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRN   ¬   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   latest(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRO   ¯   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   order_by(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRP   ²   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   select_for_update(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRQ   µ   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   select_related(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRR   ¸   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   prefetch_related(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRS   »   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   values(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRT   ¾   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   values_list(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRU   Á   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   update(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRV   Ä   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   reverse(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRW   Ç   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   defer(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRX   Ê   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   only(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRY   Í   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   R6   (   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR6   Ð   s    c         O   s   |  j  ƒ  j | | Ž  S(   N(   R<   t   exists(   R(   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRZ   Ó   s    c         K   s   t  |  j | | |  S(   N(   R   R%   (   R(   t   objst   fieldsR   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   _insertÖ   s    c         K   s   |  j  ƒ  j | |  S(   N(   R<   t   _update(   R(   RT   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR^   Ù   s    c         O   s+   t  d | d |  j d | d |  j | | Ž S(   Nt	   raw_queryR%   t   paramsR6   (   R   R%   R'   (   R(   R_   R`   RA   R   (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   rawÜ   s    N(.   R   t
   __module__R*   R#   R0   R$   R5   R8   t   propertyR:   R;   R<   R=   R>   R?   R@   RB   RC   RD   RE   RF   RG   RH   RI   RJ   RK   RL   RM   RN   RO   RP   RQ   RR   RS   RT   RU   RV   RW   RX   RY   R6   RZ   R]   R^   R   Ra   (    (    (    s1   ../Django//lib/python/django/db/models/manager.pyR   2   sT   																																							R)   c           B   s   e  Z d  „  Z d d „ Z RS(   c         C   s   | |  _  d  S(   N(   t   manager(   R(   Rd   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR#   ã   s    c         C   s)   | d  k r" t d | j ƒ ‚ n  |  j S(   Ns)   Manager isn't accessible via %s instances(   R   t   AttributeErrorR   Rd   (   R(   t   instancet   type(    (    s1   ../Django//lib/python/django/db/models/manager.pyt   __get__æ   s    N(   R   Rb   R#   R   Rh   (    (    (    s1   ../Django//lib/python/django/db/models/manager.pyR)   à   s   	R   c           B   s   e  Z d  „  Z d d „ Z RS(   c         C   s   | |  _  d  S(   N(   R%   (   R(   R%   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR#   ï   s    c         C   s    t  d |  j j j f ƒ ‚ d  S(   Ns'   Manager isn't available; %s is abstract(   Re   R%   R   t   object_name(   R(   Rf   Rg   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRh   ò   s    N(   R   Rb   R#   R   Rh   (    (    (    s1   ../Django//lib/python/django/db/models/manager.pyR   ì   s   	R   c           B   s   e  Z d  „  Z d d „ Z RS(   c         C   s   | |  _  d  S(   N(   R%   (   R(   R%   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR#   û   s    c         C   s,   t  d |  j j j |  j j j f ƒ ‚ d  S(   Ns5   Manager isn't available; %s has been swapped for '%s'(   Re   R%   R   Ri   R   (   R(   Rf   Rg   (    (    s1   ../Django//lib/python/django/db/models/manager.pyRh   þ   s    N(   R   Rb   R#   R   Rh   (    (    (    s1   ../Django//lib/python/django/db/models/manager.pyR   ø   s   	t   EmptyManagerc           B   s   e  Z d  „  Z RS(   c         C   s
   |  j  ƒ  S(   N(   R;   (   R(   (    (    s1   ../Django//lib/python/django/db/models/manager.pyR<     s    (   R   Rb   R<   (    (    (    s1   ../Django//lib/python/django/db/models/manager.pyRj     s   (   R2   t	   django.dbR    t   django.db.models.queryR   R   R   R   t   django.db.modelsR   t   django.db.models.fieldsR   R!   t   class_preparedt   connectt   objectR   R)   R   R   Rj   (    (    (    s1   ../Django//lib/python/django/db/models/manager.pyt   <module>   s   "	'®