def get_featured_subjects(): # web.ctx must be initialized as it won't be available to the background thread. if 'env' not in web.ctx: delegate.fakeload() FEATURED_SUBJECTS = [ {'key': '/subjects/art', 'presentable_name': _('Art')}, {'key': '/subjects/science_fiction', 'presentable_name': _('Science Fiction')}, {'key': '/subjects/fantasy', 'presentable_name': _('Fantasy')}, {'key': '/subjects/biographies', 'presentable_name': _('Biographies')}, {'key': '/subjects/recipes', 'presentable_name': _('Recipes')}, {'key': '/subjects/romance', 'presentable_name': _('Romance')}, {'key': '/subjects/textbooks', 'presentable_name': _('Textbooks')}, {'key': '/subjects/children', 'presentable_name': _('Children')}, {'key': '/subjects/history', 'presentable_name': _('History')}, {'key': '/subjects/medicine', 'presentable_name': _('Medicine')}, {'key': '/subjects/religion', 'presentable_name': _('Religion')}, { 'key': '/subjects/mystery_and_detective_stories', 'presentable_name': _('Mystery and Detective Stories'), }, {'key': '/subjects/plays', 'presentable_name': _('Plays')}, {'key': '/subjects/music', 'presentable_name': _('Music')}, {'key': '/subjects/science', 'presentable_name': _('Science')}, ] return [ {**subject, **(subjects.get_subject(subject['key'], limit=0) or {})} for subject in FEATURED_SUBJECTS ]
def get_doc(self, key): if key.startswith("/subjects/"): s = subjects.get_subject(key) if s.work_count > 0: return s else: return None else: return web.ctx.site.get(key)
def get_featured_subjects(): # web.ctx must be initialized as it won't be available to the background thread. if 'env' not in web.ctx: delegate.fakeload() FEATURED_SUBJECTS = [ 'art', 'science_fiction', 'fantasy', 'biographies', 'recipes', 'romance', 'textbooks', 'children', 'history', 'medicine', 'religion', 'mystery_and_detective_stories', 'plays', 'music', 'science' ] return dict([(subject_name, subjects.get_subject('/subjects/' + subject_name, sort='edition_count')) for subject_name in FEATURED_SUBJECTS])
def get_featured_subjects(): # this function is memozied with background=True option. # web.ctx must be initialized as it won't be avaiable to the background thread. if 'env' not in web.ctx: delegate.fakeload() subjects = {} FEATURED_SUBJECTS = [ 'art', 'science_fiction', 'fantasy', 'biographies', 'recipes', 'romance', 'textbooks', 'children', 'history', 'medicine', 'religion', 'mystery_and_detective_stories', 'plays', 'music', 'science' ] for subject in FEATURED_SUBJECTS: subjects[subject] = get_subject('/subjects/' + subject, sort='edition_count') return subjects
def GET(self, path): if path.startswith("/subjects/"): doc = subjects.get_subject(path) else: doc = web.ctx.site.get(path) if not doc: raise web.notfound() i = web.input(offset=0, limit=50) i.offset = h.safeint(i.offset, 0) i.limit = h.safeint(i.limit, 50) i.limit = min(i.limit, 100) i.offset = max(i.offset, 0) lists = self.get_lists(doc, limit=i.limit, offset=i.offset) return delegate.RawText(self.dumps(lists))
def get_subject(key): global subjects if subjects is None: from openlibrary.plugins.worksearch import subjects return subjects.get_subject(key)