B
    8Wa>                 @   s   d 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	m
Z
 ddlmZ ddlmZ G d	d
 d
e	Zdd Zdd Zdd Zdd Zdd Zdd ZdS )zM
@Author: Alistair Magee

Adds support for subcategories on pelican articles
    N)
attrgetter)partial)signals)
URLWrapperCategory)slugify)	text_typec                   s4   e Zd Z fddZdd Zdd Zdd Z  ZS )	SubCategoryc                s   t t| || || _|d| _| j | _t| j|dd| _	t
| jtr~tj| jj| j	| _d| jj| j	| _n*tj| jj	| j	| _d| jj	| j	| _d S )N/ZSLUG_SUBSTITUIONS z{}/{})superr	   __init__parentsplit	shortnamepopr   getslug
isinstanceospathjoinsavepathformatfullurl)selfnamer   settings)	__class__r   N/var/www/html/pharmacie-a-vendre.fr/pelican-plugins/subcategory/subcategory.pyr      s    zSubCategory.__init__c             C   s2   | j }| j|d< | j|d< | j|d< | j|d< |S )Nr   r   r   r   )__dict__r   r   r   r   )r   dr   r   r   as_dict   s    



zSubCategory.as_dictc             C   s
   t | jS )N)hashr   )r   r   r   r   __hash__'   s    zSubCategory.__hash__c             C   s   | j S )N)r   )r   r   r   r   _key*   s    zSubCategory._key)__name__
__module____qualname__r   r"   r$   r%   __classcell__r   r   )r   r   r	      s   r	   c             C   s   d| j krtjdd| j d< d| j kr2d| j d< d| j krXd| j d krXd | j d d< d|krvt|dd}nt|d	d}|d
 }t	|| j }||d	< g }|j
}x*|D ]"}|d |  }|| |}qW ||d< d S )NZSUBCATEGORY_SAVE_ASsubcategoryz{savepath}.htmlZSUBCATEGORY_URLzsubcategory/{fullurl}.htmlPAGINATED_TEMPLATESZsubcategory_pathr
   categoryr   subcategories)r   r   r   r   r   r   r   r   stripr   r   append)	generatormetadataZcategory_listr,   Zsub_listr   r*   r   r   r   get_subcategories-   s*    





r2   c          	      s  g | _ x| jD ]}|j}g }x~|j D ]t  fdd| j D }|rj|d d | |d d }|| q$t || j}| j ||gf |}|| q$W ||_ y&|j d }|j|jd< |j|jd< W q t	k
r   |jj
|jd< |jj
|jd< Y qX qW d S )Nc                s   g | ]}|d  j  kr|qS )r   )r   ).0item)r*   r   r   
<listcomp>O   s    z(create_subcategories.<locals>.<listcomp>r      subpathZsuburl)r-   articlesr,   r/   r	   r   r   r1   r   
IndexErrorr   )r0   articler   Zactual_subcategoriesZsub_catZnew_subZlast_subcatr   )r*   r   create_subcategoriesH   s,    
r<   c                s~   t |j| jd d}| d}xZ| jD ]P\}  jtddd  fdd| jD }||j|| j	| |d|j
| jd		 q&W d S )
NRELATIVE_URLS)relative_urlsr*   dateT)keyreversec                s   g | ]}| kr|qS r   r   )r3   r;   )r9   r   r   r5   n   s    z*generate_subcategories.<locals>.<listcomp>)r*   r9   datestemplate_name	page_nameall_articles)r   
write_filer   get_templater-   sortr   rB   save_ascontextrD   r9   )r0   writerwriteZsubcategory_templatesubcatrB   r   )r9   r   generate_subcategoriesh   s    
rN   c             C   s~   xx| j D ]n\}}|jtddd | jdrJ||| j| jd |j  | jdr|j|| j| jd |j dd qW d S )Nr?   T)r@   rA   ZSUBCATEGORY_FEED_ATOMZSUBCATEGORY_FEED_RSSrss)	feed_type)r-   rH   r   r   r   
write_feedrJ   r   )r0   rK   rM   r9   r   r   r   generate_subcategory_feedst   s    


rR   c             C   s   t | | t| | d S )N)rR   rN   )r0   rK   r   r   r   generate   s    
rS   c               C   s(   t jt t jt t jt d S )N)r   article_generator_contextconnectr2   article_generator_finalizedr<   article_writer_finalizedrS   r   r   r   r   register   s    rX   )__doc__r   operatorr   	functoolsr   pelicanr   pelican.urlwrappersr   r   pelican.utilsr   sixr   r	   r2   r<   rN   rR   rS   rX   r   r   r   r   <module>   s    