
    Evg]$                         d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZm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mZ d dlmZ ddZ G d de          Z G d d          ZdS )    )getattr_staticunwrap)get_current_site)ImproperlyConfiguredObjectDoesNotExist)Http404HttpResponse)TemplateDoesNotExistloader)feedgenerator)
iri_to_uri)escape)	http_date)get_default_timezoneis_naive
make_aware)get_languageFc                     |rdnd}|                     d          r|d|}n+|                     d          st          |d| |          }|S )Nhttpshttpz//:)zhttp://zhttps://zmailto:z://)
startswithr   )domainurlsecureprotocols       ]/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/syndication/views.py
add_domainr      sn     ,wwfH
~~d @!33'^^>?? @&&##>??J    c                       e Zd ZdS )FeedDoesNotExistN)__name__
__module____qualname__ r   r   r!   r!      s        Dr   r!   c                   l    e Zd Zej        ZdZdZdZd Z	d Z
d Zd Zd ZddZd Zd	 Zd
 Zd Zd ZdS )FeedNc                    	  | j         |g|R i |}n# t          $ r t          d          w xY w|                     ||          }t	          |j                  }t          | d          st          | d          r;t          |                                	                                          |j
        d<   |                    |d           |S )NzFeed object does not exist.)content_typeitem_pubdateitem_updateddatezLast-Modifiedzutf-8)
get_objectr   r   get_feedr	   r)   hasattrr   latest_post_date	timestampheaderswrite)selfrequestargskwargsobjfeedgenresponses          r   __call__zFeed.__call__#   s    	9!$/';D;;;F;;CC! 	9 	9 	97888	9--W--W-ABBB4(( 	GD:L,M,M 	 1:((**44661 1H_- 	h(((s    .c                 :    t          t          |                    S N)r   strr3   items     r   
item_titlezFeed.item_title3   s    c$ii   r   c                      t          |          S r<   )r=   r>   s     r   item_descriptionzFeed.item_description7   s    4yyr   c                     	 |                                 S # t          $ r t          d|j        j        z            w xY w)NzcGive your %s class a get_absolute_url() method, or define an item_link() method in your Feed class.)get_absolute_urlAttributeErrorr   	__class__r"   r>   s     r   	item_linkzFeed.item_link:   sY    	((*** 	 	 	&9;?>;RS  	s    '=c           
         |                      d|          }|rit          j        t          |          t          |                      d|                    t          |                      d|                              }|gS g S )Nitem_enclosure_urlitem_enclosure_lengthitem_enclosure_mime_type)r   length	mime_type)_get_dynamic_attrr   	Enclosurer=   )r3   r?   enc_urlencs       r   item_enclosureszFeed.item_enclosuresC   s    (()=tDD 	)LL4112I4PPQQd445OQUVVWW  C
 5L	r   c                    	 t          | |          }n# t          $ r |cY S w xY wt          |          rt          |          }	 |j        }n+# t          $ r t          |j                  }|j        }Y nw xY w|j        sDt          t          | |j	        d           t                    st          d|d|j	        d          |j        dk    r ||          S  |            S |S )NzFeed method z decorated by z needs to use @functools.wraps.   )getattrrE   callabler   __code__r:   co_argcount
isinstancer   r"   staticmethodr   )r3   attnamer7   defaultattrfunccodes          r   rN   zFeed._get_dynamic_attrN   s1   	4))DD 	 	 	NNN	D>> 	 $<<D%}! % % %dm,,}%
 # JtT]D99<- -  +-7 - -DM - - -   1$$tCyy tvvs    ""A %A43A4c                     i S )zy
        Return an extra keyword arguments dictionary that is used when
        initializing the feed generator.
        r%   )r3   r7   s     r   feed_extra_kwargszFeed.feed_extra_kwargsl   	    
 	r   c                     i S )z
        Return an extra keyword arguments dictionary that is used with
        the `add_item` call of the feed generator.
        r%   r>   s     r   item_extra_kwargszFeed.item_extra_kwargss   rb   r   c                     d S r<   r%   )r3   r4   r5   r6   s       r   r,   zFeed.get_objectz   s    tr   c                 X    |                     d          |                     d          dS )a  
        Return a dictionary to use as extra context if either
        ``self.description_template`` or ``self.item_template`` are used.

        Default implementation preserves the old behavior
        of using {'obj': item, 'site': current_site} as the context.
        r?   site)r7   rg   )get)r3   r6   s     r   get_context_datazFeed.get_context_data}   s*     zz&))6::f3E3EFFFr   c                 ~   t          |          }|                     d|          }t          |j        ||                                          } | j        d |                     d|          |                     d|          ||                     d|          | j        pt                      t          |j        |                     d|          p|j        |                                          |                     d|          |                     d|          |                     d|          |                     d	|          |                     d
|          |                     d|          |                     d|          d| 	                    |          }d}| j
        +	 t          j        | j
                  }n# t          $ r Y nw xY wd}| j        +	 t          j        | j                  }n# t          $ r Y nw xY w|                     d|          D ]%}|                     ||||          }	||                    |	|          }
n|                     d|          }
||                    |	|          }n|                     d|          }t          |j        |                     d|          |                                          }|                     d|          }|                     d|          }|-|                     d|          }|                     d|          }ndx}}t#                      }|                     d|          }|rt%          |          rt'          ||          }|                     d|          }|rt%          |          rt'          ||          } |j        d |
|||                     d||          |                     d|          |||||||                     d|          |                     d|          |                     d|          d|                     |           '|S )!z
        Return a feedgenerator.DefaultFeed object, fully populated, for
        this feed. Raise FeedDoesNotExist for invalid parameters.
        linktitlesubtitledescriptionfeed_urlauthor_nameauthor_linkauthor_email
categoriesfeed_copyright	feed_guidttl)rl   rm   rk   rn   languagero   rp   rq   rr   rs   rt   ru   rv   Nitems)r?   rg   r7   r4   r@   rB   rG   rR   item_author_nameitem_author_emailitem_author_linkr*   r+   	item_guiditem_guid_is_permalinkitem_commentsitem_categoriesitem_copyright)rl   rk   rn   	unique_idunique_id_is_permalink
enclosurespubdateupdateddaterp   rr   rq   commentsrs   r   r%   )r   rN   r   r   	is_secure	feed_typerw   r   pathra   title_templater   get_templater
   description_templateri   renderr   r   r   add_itemrd   )r3   r7   r4   current_siterk   feed	title_tmpdescription_tmpr?   contextrl   rn   r   rp   rr   rq   tzr   r   s                      r   r-   zFeed.get_feed   s   
 (00%%fc22,-tW5F5F5H5HIIt~ 
((#66++J<<..}cBB]4lnn#&&z377G7<!!## 
 ..}cBB..}cBB//DD--lC@@112BCHH,,[#>>&&uc22#
 
$ $$S))%
 
* 	*"/0CDD		'    $0"("5d6O"P"P'    **7C88 5	 5	D++#w ,  G $!(('::..|TBB*-44WgFF"445GNN#&&{D99!!## D
 //0A4HHJ001CTJJK&#556I4PP"445GNN-11{%''B,,^TBBG 28G,, 2$Wb11001CTJJK :x44 :(b99DM '00dDII'+'='=,d( ( &'')'//FF112CTJJ#556FMM! " ((..#   & s$   "F< <
G	G	G0 0
G=<G=r<   )r"   r#   r$   r   DefaultFeedr   r   r   rw   r:   r@   rB   rG   rR   rN   ra   rd   r,   ri   r-   r%   r   r   r'   r'      s        )INH   ! ! !    	 	 	   <      G G Gc c c c cr   r'   N)F)inspectr   r   django.contrib.sites.shortcutsr   django.core.exceptionsr   r   django.httpr   r	   django.templater
   r   django.utilsr   django.utils.encodingr   django.utils.htmlr   django.utils.httpr   django.utils.timezoner   r   r   django.utils.translationr   r   r!   r'   r%   r   r   <module>r      sj   * * * * * * * * ; ; ; ; ; ; K K K K K K K K - - - - - - - - 8 8 8 8 8 8 8 8 & & & & & & , , , , , , $ $ $ $ $ $ ' ' ' ' ' ' L L L L L L L L L L 1 1 1 1 1 1   	 	 	 	 	) 	 	 	M M M M M M M M M Mr   