
    sghj                         d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZ 	 ddZddd	d
Zd Zd Zd Zd Zd Zd Zy)z
This module collects helper functions and classes that "span" multiple levels
of MVC. In other words, these functions/classes introduce controlled coupling
for convenience's sake.
    )Http404HttpResponseHttpResponsePermanentRedirectHttpResponseRedirect)loader)NoReverseMatchreverse)PromiseNc                 N    t        j                  ||| |      }t        |||      S )z
    Return an HttpResponse whose content is filled with the result of calling
    django.template.loader.render_to_string() with the passed arguments.
    )using)r   render_to_stringr   )requesttemplate_namecontextcontent_typestatusr   contents          T/var/www/enzed_healthcare/enzed_env/lib/python3.12/site-packages/django/shortcuts.pyrenderr      s)     %%mWgUSGv66    F)	permanentpreserve_requestc                L    |rt         nt        } |t        | g|i ||      S )ak  
    Return an HttpResponseRedirect to the appropriate URL for the arguments
    passed.

    The arguments could be:

        * A model: the model's `get_absolute_url()` function will be called.

        * A view name, possibly with arguments: `urls.reverse()` will be used
          to reverse-resolve the name.

        * A URL, which will be used as-is for the redirect location.

    Issues a temporary redirect by default. Set permanent=True to issue a
    permanent redirect. Set preserve_request=True to instruct the user agent
    to preserve the original HTTP method and body when following the redirect.
    )r   )r   r   resolve_url)tor   r   argskwargsredirect_classs         r   redirectr      s6    & *3%8L  B((() r   c                 R    t        | d      r| j                  j                         S | S )z
    Return a QuerySet or a Manager.
    Duck typing in action: any class with a `get()` method (for
    get_object_or_404) or a `filter()` method (for get_list_or_404) might do
    the job.
    _default_manager)hasattrr!   all)klasss    r   _get_querysetr%   8   s)     u()%%))++Lr   c                 h   t        |       }t        |d      s@t        | t              r| j                  n| j
                  j                  }t        d|z        	  |j                  |i |S # |j                  j                  $ r- t        d|j                  j                  j                  z        w xY w)aY  
    Use get() to return an object, or raise an Http404 exception if the object
    does not exist.

    klass may be a Model, Manager, or QuerySet object. All other passed
    arguments and keyword arguments are used in the get() query.

    Like with QuerySet.get(), MultipleObjectsReturned is raised if more than
    one object is found.
    getzVFirst argument to get_object_or_404() must be a Model, Manager, or QuerySet, not '%s'.No %s matches the given query.)r%   r"   
isinstancetype__name__	__class__
ValueErrorr'   modelDoesNotExistr   _metaobject_namer$   r   r   querysetklass__names        r   get_object_or_404r5   E   s     U#H8U#(5ENN5??;S;S 	 %'23
 	

x||T,V,,>>&& 
,x~~/C/C/O/OO
 	

s   A+ +AB1c                   K   t        |       }t        |d      sAt        | t              r| j                  n| j
                  j                  }t        d| d      	  |j                  |i | d{   S 7 # |j                  j                  $ r. t        d|j                  j                  j                   d      w xY ww)zSee get_object_or_404().agetzSFirst argument to aget_object_or_404() must be a Model, Manager, or QuerySet, not ''.NNo  matches the given query.)r%   r"   r)   r*   r+   r,   r-   r7   r.   r/   r   r0   r1   r2   s        r   aget_object_or_404r;   a   s     U#H8V$(5ENN5??;S;S 	 )]".
 	
Y"X]]D3F3333>>&& YHNN00<<==VWXXYs1   ACA8 1A62A8 5C6A8 8AB??Cc                 F   t        |       }t        |d      s@t        | t              r| j                  n| j
                  j                  }t        d|z        t         |j                  |i |      }|s,t        d|j                  j                  j                  z        |S )z
    Use filter() to return a list of objects, or raise an Http404 exception if
    the list is empty.

    klass may be a Model, Manager, or QuerySet object. All other passed
    arguments and keyword arguments are used in the filter() query.
    filterzTFirst argument to get_list_or_404() must be a Model, Manager, or QuerySet, not '%s'.r(   )r%   r"   r)   r*   r+   r,   r-   listr=   r   r.   r0   r1   )r$   r   r   r3   r4   obj_lists         r   get_list_or_404r@   r   s     U#H8X&(5ENN5??;S;S 	 "$/0
 	
 OHOOT4V45H,x~~/C/C/O/OO
 	
 Or   c                 v  K   t        |       }t        |d      sAt        | t              r| j                  n| j
                  j                  }t        d| d       |j                  |i |2 cg c3 d{   }|7 6 nc c}w }}|s-t        d|j                  j                  j                   d      |S w)zSee get_list_or_404().r=   zQFirst argument to aget_list_or_404() must be a Model, Manager, or QuerySet, not 'r8   Nr9   r:   )r%   r"   r)   r*   r+   r,   r-   r=   r   r.   r0   r1   )r$   r   r   r3   r4   objr?   s          r   aget_list_or_404rC      s     U#H8X&(5ENN5??;S;S 	 )]".
 	
 &5X__d%Ef%EFFcFFFHFHNN00<<==VWXXOs6   A-B9/B1A?5A=
6A?9B=A??B 9B9c                    t        | d      r| j                         S t        | t              rt	        |       } t        | t              r| j                  d      r| S 	 t        | ||      S # t        $ r t        |       r d| vrd| vr Y | S w xY w)aM  
    Return a URL appropriate for the arguments passed.

    The arguments could be:

        * A model: the model's `get_absolute_url()` function will be called.

        * A view name, possibly with arguments: `urls.reverse()` will be used
          to reverse-resolve the name.

        * A URL, which will be returned as-is.
    get_absolute_url)z./z../)r   r   /.)	r"   rE   r)   r
   str
startswithr	   r   callable)r   r   r   s      r   r   r      s     r%&""$$"g W "cr}}];	rV44 B<b=S] Is   A* *BB)NNNN)__doc__django.httpr   r   r   r   django.templater   django.urlsr   r	   django.utils.functionalr
   r   r   r%   r5   r;   r@   rC   r    r   r   <module>rQ      sV     # / + QU7 #(% 6

8Y"2"&r   