home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1362 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  1.9 KB  |  46 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
  6. __docformat__ = 'restructuredtext en'
  7. from calibre.utils.date import utcnow
  8. from calibre.utils.ordered_dict import OrderedDict
  9.  
  10. class Cache(object):
  11.     
  12.     def add_routes(self, c):
  13.         self._category_cache = OrderedDict()
  14.         self._search_cache = OrderedDict()
  15.  
  16.     
  17.     def search_cache(self, search):
  18.         old = self._search_cache.pop(search, None)
  19.         if old is None or old[0] <= self.db.last_modified():
  20.             matches = self.db.data.search(search, return_matches = True, ignore_search_restriction = True)
  21.             if not matches:
  22.                 matches = []
  23.             
  24.             self._search_cache[search] = (utcnow(), frozenset(matches))
  25.             if len(self._search_cache) > 50:
  26.                 self._search_cache.popitem(last = False)
  27.             
  28.         else:
  29.             self._search_cache[search] = old
  30.         return self._search_cache[search][1]
  31.  
  32.     
  33.     def categories_cache(self, restrict_to = frozenset([])):
  34.         old = self._category_cache.pop(frozenset(restrict_to), None)
  35.         if old is None or old[0] <= self.db.last_modified():
  36.             categories = self.db.get_categories(ids = restrict_to)
  37.             self._category_cache[restrict_to] = (utcnow(), categories)
  38.             if len(self._category_cache) > 20:
  39.                 self._category_cache.popitem(last = False)
  40.             
  41.         else:
  42.             self._category_cache[frozenset(restrict_to)] = old
  43.         return self._category_cache[restrict_to][1]
  44.  
  45.  
  46.