Ë
    «Z'iû  ã                   ó†   — 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	 d dl
mZ d dl
mZ d dlmZ d d	lmZ  G d
„ de«      Zy)é    )ÚBaseCommand©Úcall_command)Útransaction)Ú
connection)Úsettings)Úopdsdb)Úmodels)ÚCounter)Úconfigc                   óJ   — e 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y)ÚCommandzUtils for SOPDS.Fc                 ó†   — |j                  dddd¬«       |j                  dddd	d
¬«       |j                  dddd	d¬«       y )NÚcommandÚstoreÚ*zVUse [ clear | info | save_mygenres | load_mygenres | setconf | getconf | pg_optimize ])ÚactionÚnargsÚhelpz	--verboseÚ
store_trueÚverboseFz.Set verbosity level for books collection scan.)r   ÚdestÚdefaultr   z
--nogenresÚnogenresz Not install genres fom fixtures.)Úadd_argument)ÚselfÚparsers     ú9/opt/sopds/opds_catalog/management/commands/sopds_util.pyÚadd_argumentszCommand.add_arguments   se   € Ø×Ñ˜I¨g¸Sð  H`Ðô  	aØ×Ñ˜K¨|À)ÐUZð  bRÐô  	SØ×Ñ˜L°À:ÐW\ð  dFÐõ  	Gó    c                 ó¨  — |d   d   }|d   | _         |d   | _        |dk(  r,| j                  j                  d«       | j	                  «        y |dk(  r| j                  «        y |dk(  r| j                  «        y |d	k(  r| j                  «        y |d
k(  rgt        |d   «      dkD  r|d   d   nd | _	        t        |d   «      dkD  r|d   d   nd | _
        | j                  | j                  | j                  «       y |dk(  r<t        |d   «      dkD  r|d   d   nd | _	        | j                  | j                  «       y |dk(  r| j                  «        y y )Nr   r   r   r   ÚclearzClear book database.ÚinfoÚsave_mygenresÚload_mygenresÚsetconfé   é   ÚgetconfÚpg_optimize)r   r   ÚstdoutÚwriter"   r#   r$   r%   ÚlenÚ	confparamÚ	confvaluer&   r)   r*   )r   ÚargsÚoptionsr   s       r   ÚhandlezCommand.handle   sC  € Ø˜Ñ# AÑ&ˆà˜yÑ)ˆŒØ 
Ñ+ˆŒà7Š?ØK‰K×ÑÐ4Ô5ØJ‰JLØvÒØI‰IKØÒ&Ø×ÑÕ ØÒ&Ø×ÑÕ ØyÒ Ü69¸'À)Ñ:LÓ6MÈaÒ6O˜W YÑ/°Ò2ÐUYˆDŒNÜ69¸'À)Ñ:LÓ6MÈaÒ6O˜W YÑ/°Ò2ÐUYˆDŒNØL‰L˜Ÿ™¨¯©Õ8ØyÒ Ü69¸'À)Ñ:LÓ6MÈaÒ6O˜W YÑ/°Ò2ÐUYˆDŒNØL‰L˜Ÿ™Õ(Ø}Ò$Ø×ÑÕð %r    c                 ó*  — t        j                  «       5  t        j                  | j                  «       d d d «       | j
                  st        dd«       t        j                  j                  «        t        j                  d«       y # 1 sw Y   ŒUxY w)NÚloaddataz
genre.jsonF)r   Úatomicr	   Ú	clear_allr   r   r   r   ÚobjectsÚupdate_known_countersr*   ©r   s    r   r"   zCommand.clear/   sd   € Ü×ÑÓ!ñ 	+Ü×Ñ˜TŸ\™\Ô*÷	+à}Š}Ü˜ \Ô2Ü‰×-Ñ-Ô/Ü×Ñ˜5Õ!÷	+ð 	+ús   • B	Â	Bc                 ó  — t         j                  j                  «        | j                  j	                  dt         j                  j                  t        j                  «      z  «       | j                  j	                  dt         j                  j                  t        j                  «      z  «       | j                  j	                  dt         j                  j                  t        j                  «      z  «       | j                  j	                  dt         j                  j                  t        j                  «      z  «       | j                  j	                  dt         j                  j                  t        j                  «      z  «       y )NzBooks count    = %szCatalogs count = %szAuthors count  = %szGenres count   = %szSeries count   = %s)r   r7   r8   r+   r,   Úget_counterr
   Úcounter_allbooksÚcounter_allcatalogsÚcounter_allauthorsÚcounter_allgenresÚcounter_allseriesr9   s    r   r#   zCommand.info7   só   € Ü‰×-Ñ-Ô/Ø‰×ÑÐ/´·±×0KÑ0KÌF×LcÑLcÓ0dÑdÔeØ‰×ÑÐ/´·±×0KÑ0KÌF×LfÑLfÓ0gÑgÔhØ‰×ÑÐ/´·±×0KÑ0KÌF×LeÑLeÓ0fÑfÔgØ‰×ÑÐ/´·±×0KÑ0KÌF×LdÑLdÓ0eÑeÔfØ‰×ÑÐ/´·±×0KÑ0KÌF×LdÑLdÓ0eÑeÕfr    c                 óV   — t        dddd«       | j                  j                  d«       y )NÚdumpdatazopds_catalog.genrez--outputz#opds_catalog/fixtures/mygenres.jsonz7Genre dump saved in opds_catalog/fixtures/mygenres.json©r   r+   r,   r9   s    r   r$   zCommand.save_mygenres?   s%   € ÜZÐ!5°jÐAfÔgØ‰×ÑÐSÕTr    c                 óÌ   — t        j                  | j                  «       t        dd«       t        j
                  j                  «        | j                  j                  d«       y )Nr4   zmygenres.jsonz4Genres load from opds_catalog/fixtures/mygenres.json)	r	   Úclear_genresr   r   r   r7   r8   r+   r,   r9   s    r   r%   zCommand.load_mygenresC   sA   € Ü×Ñ˜DŸL™LÔ)ÜZ Ô1Ü‰×-Ñ-Ô/Ø‰×ÑÐPÕQr    c                 ón   — |r3|r0t        dd||«       | j                  j                  d|›d|›«       y y y )NÚ	constanceÚsetzConfig parameter z set to rC   )r   r.   r/   s      r   r&   zCommand.setconfI   s3   € Ù™Ü˜ e¨I°yÔAØK‰K×ÒºyÉ)ÐTÕUð #ˆ9r    c                 ó<   — |rt        dd|«       y t        dd«       y )NrG   ÚgetÚlistr   )r   r.   s     r   r)   zCommand.getconfO   s   € ÙÜ˜ e¨YÕ7ä˜ fÕ-r    c                 ó.   — t        j                  d«       y )NT)r	   r*   r9   s    r   r*   zCommand.pg_optimizeU   s   € Ü×Ñ˜4Õ r    N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r2   r"   r#   r$   r%   r&   r)   r*   © r    r   r   r      s>   „ Ø€DØ€GòGò
ò2"ògòUòRòVò.ó!r    r   N)Údjango.core.management.baser   Údjango.core.managementr   Ú	django.dbr   r   Údjango.confr   Úmain_settingsÚopds_catalogr	   r
   Úopds_catalog.modelsr   rG   r   r   rP   r    r   ú<module>rX      s.   ðÝ 3Ý /Ý !Ý  Ý 1å Ý Ý 'å ôI!ˆkõ I!r    