U
    TGh]
                     @   s   d Z ddlmZ ddlmZ ddlmZmZ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mZmZmZmZ d	ZG d
d deZdS )z Native QGIS context
    )chain)Path)DictIteratorListOptionalSequenceTuple)
QgsProject)pluginMetadataserver_active_plugins   )CatalogItem
ContextABCProjectCacheErrorServerMetadata
to_iso8601nativec                   @   s   e Zd ZeedddZeedddZeedddZeee ddd	Z	ee
d
ddZdee ee dddZdee ee eeeef  dddZeee dddZdS )Context)returnc                 C   s   t S N)SERVER_CONTEXT_NAMEself r   >/var/www/lizmap/lizmap/plugins/lizmap_server/context/native.pyname   s    zContext.namec                 C   s   dS )Nzhttps://github.com/qgis/QGISr   r   r   r   r   git_repository_url"   s    zContext.git_repository_urlc                 C   s   dS )Nz3https://docs.qgis.org/latest/en/docs/server_manual/r   r   r   r   r   documentation_url&   s    zContext.documentation_urlc                 C   s   g S )z* Return search paths for projects
        r   r   r   r   r   search_paths*   s    zContext.search_paths)urir   c                 C   s   t dd| dS )z/ Return the project specified by `uri`
        i  zProject not found in cache: N)r   )r   r    r   r   r   project0   s    zContext.projectN)search_pathr   c                    s.   t |pd   sg S  fdd}t| S )za Return the catalog of projects

            location is a relative path to the root uri
        .c                  3   sV   d t  fdddD  } | D ]0}| }tt||jdt|jt|dV  q d S )Nz**/*.%sc                 3   s   | ]}  | V  qd S r   )glob).0Zsfx)glob_patternlocationr   r   	<genexpr>B   s     z2Context.catalog.<locals>._items.<locals>.<genexpr>)ZqgsZqgzfile)r    r   storagelast_modified
public_uri)r   statr   strstemr   st_mtime)filespstr'   )r&   r   _items@   s    zContext.catalog.<locals>._items)r   is_dirlist)r   r"   r5   r   r4   r   catalog6   s
    zContext.catalog)keysunknown_defaultr   c                 #   s4   fdd t D ] fdd|D fV  qdS )z+ return installed plugins metadata
        c                    s4   t | |}|dkr|S t |  |}|dkr0|S  S )N)	__error__ )r   lower)r   keyvalue)r:   r   r   _get_keyV   s    
z+Context.installed_plugins.<locals>._get_keyc                    s   i | ]}| |qS r   r   )r%   k)r@   pluginr   r   
<dictcomp>`   s      z-Context.installed_plugins.<locals>.<dictcomp>N)r   )r   r9   r:   r   )r@   rB   r:   r   installed_pluginsO   s    	zContext.installed_pluginsc                 C   s   dS )z  Return server metadata
        Nr   r   r   r   r   metadatab   s    zContext.metadata)N)N)__name__
__module____qualname__propertyr.   r   r   r   r   r   r
   r!   r   r   r8   r   r   r	   r   rD   r   rE   r   r   r   r   r      s$    r   N)__doc__	itertoolsr   pathlibr   typingr   r   r   r   r   r	   	qgis.corer
   
qgis.utilsr   r   commonr   r   r   r   r   r   r   r   r   r   r   <module>   s    	