
    ^'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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eZdZdZdZdZdZddddZ e
d       e
d       e
d       e
d       e
d      dZ G d d ej@                        Z! G d! d"ej@                        Z" G d# d$ej@                        Z# G d% d&ej@                        Z$ G d' d(ej@                        Z% G d) d*ej@                        Z& G d+ d,ej@                        Z' G d- d.ej@                        Z( G d/ d0ej@                        Z) G d1 d2ejT                        Z+ G d3 d4ej@                        Z,y5)6    )models)User)timezone)ObjectDoesNotExist)gettext_lazyallbooksallcatalogs
allauthors	allgenres	allseriesi             i'        @   d      u   АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя4ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0123456789)         CyrillicLatinDigitszOther symbolszShow all)r   r   r   	   r   c                      e Zd Z ej                  ed      Z ej                  ed      Z ej                  dd      Z
 ej                  e      Z ej                  ddej                        Z ej                  dd      Z ej"                  dej&                        Z ej                  ed      Z ej                  e      Z ej                  ed      Z ej                  ed	d
      Z ej                  e      Z ej                  ddd      Z ej                  ddd      Z ej@                  dd      Z! ej@                  dd      Z" ej@                  dd      Z#y	)BookT
max_lengthdb_indexFr   nulldefault)r!   Catalogr"   	on_deleteNr!   r%   r"   r   r$   r%   r"   Authorbauthor)throughGenrebgenreSeriesbseries)$__name__
__module____qualname__r   	CharFieldSIZE_BOOK_FILENAMEfilenameSIZE_BOOK_PATHpathIntegerFieldfilesizeSIZE_BOOK_FORMATformat
ForeignKeyCASCADEcatalogcat_typeDateTimeFieldr   nowregisterdateSIZE_BOOK_DOCDATEdocdateSIZE_BOOK_LANGlangSIZE_BOOK_TITLEtitlesearch_titleSIZE_BOOK_ANNOTATION
annotation	lang_codeavailManyToManyFieldauthorsgenresseries     !/opt/sopds/opds_catalog/models.pyr   r   &   se   v+=tLH6~tDD"v""q9HV)9:Ff	46>>RG"v""q9H'6''UHLLILf*;TJG6~6DF$GE#6##W[\L!!!-ABJ###DIIFUAEE$f$$XyAG#V##GX>F#V##Hi@FrU   r   c                       e Zd Z ej                  dddej
                        Z ej                  ed      Z	 ej                  e
d      Z ej                  dd      Z ej                  dd      Zy)	r&   selfT)r$   r"   r(   r    Fr   r#   N)r2   r3   r4   r   r>   r?   parentr5   SIZE_CAT_CATNAMEcat_nameSIZE_CAT_PATHr9   r:   rA   BigIntegerFieldcat_sizerT   rU   rV   r&   r&   :   so    VvD46>>ZFv+;dKH6}tDD"v""q9H%v%%4;HrU   r&   c                       e Zd Z ej                  edd      Z ej                  edd      Z ej                  ddd      Z	y)r+   NTr)   Fr   r*   )
r2   r3   r4   r   r5   SIZE_AUTHOR_NAME	full_namesearch_full_namer:   rN   rT   rU   rV   r+   r+   A   sI       ,<dUYZI'v''3CT\`a###DIIrU   r+   c                       e Zd Z ej                  ddej
                        Z ej                  ddej
                        Zy)r,   r   Tr'   r+   N)r2   r3   r4   r   r>   r?   bookauthorrT   rU   rV   r,   r,   G   s6    6VdfnnMDVx$&..QFrU   r,   c                       e Zd Z ej                  ed      Z ej                  ed      Z ej                  e	d      Z
y)r.   Tr    N)r2   r3   r4   r   r5   
SIZE_GENREgenreSIZE_GENRE_SECTIONsectionSIZE_GENRE_SUBSECTION
subsectionrT   rU   rV   r.   r.   O   s@    F
TBEf*<tLG!!!-BTRJrU   r.   c                       e Zd Z ej                  ddej
                        Z ej                  ddej
                        Zy)r/   r   Tr'   r.   N)r2   r3   r4   r   r>   r?   rd   rh   rT   rU   rV   r/   r/   T   s6    6VdfnnMDFgOErU   r/   c                       e Zd Z ej                  ed      Z ej                  edd      Z ej                  ddd      Z	y)r0   Tr    Nr)   Fr   r*   )
r2   r3   r4   r   r5   SIZE_SERIESser
search_serr:   rN   rT   rU   rV   r0   r0   X   sC    
&

kD
AC!!![$QUVJ###4HIrU   r0   c                       e Zd Z ej                  ddej
                        Z ej                  ddej
                        Z ej                  dd      Z	y)	r1   r   Tr'   r0   Fr   r#   N)
r2   r3   r4   r   r>   r?   rd   rp   r:   ser_norT   rU   rV   r1   r1   ]   sJ    6VdfnnMD
&

Htv~~
NC V  eQ7FrU   r1   c                       e Zd Z ej                  edej                        Z ej                  edej                        Z	 ej                  dej                  d      Zy)	bookshelfTr'   Fr*   N)r2   r3   r4   r   r>   r   r?   userr   rd   rB   r   rC   readtimerT   rU   rV   ru   ru   f   sP    6TDFNNKD6TDFNNKD#v##tTHrU   ru   c                   $    e Zd Zd Zd Zd Zd Zy)CounterManagerc                 T    | j                  ||t        j                         d       y )N)valueupdate_time)namedefaults)update_or_creater   rC   )rX   counter_namecounter_values      rV   updatezCounterManager.updatem   s$    <]bjbnbnbp<qrrU   c                    | j                  t        t        j                  j	                         j                                | j                  t        t        j                  j	                         j                                | j                  t        t        j                  j	                         j                                | j                  t        t        j                  j	                         j                                | j                  t        t        j                  j	                         j                                y )N)r   counter_allbooksr   objectsallcountcounter_allcatalogsr&   counter_allauthorsr+   counter_allgenresr.   counter_allseriesr0   )rX   s    rV   update_known_countersz$CounterManager.update_known_countersp   s    $dll&6&6&8&>&>&@A')<)<)>)D)D)FG&(:(:(<(B(B(DE%u}}'8'8':'@'@'BC%v~~'9'9';'A'A'CDrU   c                 d    	 | j                  |      j                  }|S # t        $ r d}Y |S w xY w)Nr}   r   )getr{   r   )rX   r   counters      rV   get_counterzCounterManager.get_counterw   s?    	hhLh177G  " 	G	     //c                 d    	 | j                  d      j                  }|S # t        $ r d }Y |S w xY w)Nr   r   )r   r|   r   )rX   lastscans     rV   get_lastscanzCounterManager.get_lastscan   s?    	xxZx0<<H  " 	H	r   N)r2   r3   r4   r   r   r   r   rT   rU   rV   ry   ry   l   s    sErU   ry   c                       e Zd Z ej                  dddd      Z ej                  dd      Z ej                  de	j                        Z ej                         Z e       Zy)CounterTFr   )primary_keyr$   blankr!   r   r#   N)r2   r3   r4   r   r5   r}   r:   r{   rB   r   rC   r|   Managerobjry   r   rT   rU   rV   r   r      s]    65RTUDFUA6E&&&&E8<<HK
&..
CGrU   r   N)-	django.dbr   django.contrib.auth.modelsr   django.utilsr   django.core.exceptionsr   django.utils.translationr   _lazyr   r   r   r   r   r6   r8   r<   rE   rG   rI   rL   rZ   r\   r`   rg   ri   rk   ro   	LangCodes	lang_menuModelr   r&   r+   r,   r.   r/   r0   r1   ru   r   ry   r   rT   rU   rV   <module>r      s|    + ! 5 : # !        % 
   VE	 Z E'NeHoI_chisctu	A6<< A(<fll <JV\\ JRfll RSFLL S
PV\\ PIV\\ I
8fll 8U UV^^ 6fll rU   