def get(self): email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return template = utils.get_jinja_env().get_template('tags.html') context = {'user': user} helper = books.TagHelper(user) tag_name = self.request.get('t') if tag_name: # a specific tag to display isbns = helper.isbns(tag_name) if isbns is None: params = { 'msg': 'Invalid tag name: "' + codecs.encode(tag_name, 'utf-8') + '"' } self.redirect('/error?' + urllib.urlencode(params)) return self._render_tag_books(user, tag_name, helper, context) else: self._render_tags_info(user, helper, context) self.response.out.write(template.render(context)) return
def _render_no_such_book(self, douban_id): """ Render a NO SUCH BOOK msg onto web page. Including the corresponding douban_id """ template = utils.get_jinja_env().get_template("random.html") context = { 'douban_id': douban_id, 'user': self.user } self.response.out.write(template.render(context)) return
def get(self): email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) template = utils.get_jinja_env().get_template('404.html') context = { 'user': user } self.response.out.write(template.render(context))
def get(self): email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) msg = self.request.get("msg") template = utils.get_jinja_env().get_template("error.html") context = { 'msg': msg, 'user': user } self.response.out.write(template.render(context))
def get(self): email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return template = utils.get_jinja_env().get_template('guess.html') context = {'user': user} self._fill(context, user) self.response.out.write(template.render(context)) return
def get(self): email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return isbn = self.request.path.split('/book/')[1] try: utils.validate_isbn(isbn) except Exception: msg = "Invalid ISBN: " + isbn params = {'msg': msg} self.redirect('/error?' + urllib.urlencode(params)) return template = utils.get_jinja_env().get_template('onebook.html') context = { 'user': user } reload = self.request.get('reload') == 'True' if reload: # force to reload from douban.. try: full = self._load(user, isbn, reload=True, tjlib=True) except Exception as err: params = {'msg': err} self.redirect('/error?%s' % urllib.urlencode(params)) return else: full = self._load(user, isbn, reload=False) if full.is_empty(): # no such data in local datastore, try fetch try: full = self._load(user, isbn, reload=True, tjlib=True) except Exception as err: params = {'msg': err} self.redirect('/error?%s' % urllib.urlencode(params)) return context['title'] = full.book.title context['book'] = full.book context['booklist_name'] = full.booklist_name context['rating'] = full.rating context['tags'] = full.tags context['comment'] = full.comment self.response.out.write(template.render(context)) return
def get(self): email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return template = utils.get_jinja_env().get_template('whatsnext.html') ctx = {'user': user} bl = booklist.BookList.get_or_create(user, booklist.LIST_INTERESTED) if bl.size() == 0: # no books in interested list ctx['no_books'] = True else: # recommend next ctx['no_books'] = False self._prepare_next(ctx, user, bl) self.response.out.write(template.render(ctx)) return
def get(self): action = self.request.get('action') if action == 'clear': # clear all data in db msg = self._clear() user = None elif action == 'load': email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return # load books from douban # these books are for defense only.. ids = ["20381804", "10555435", "1432683"] for douban_id in ids: if Book.get_by_douban_id(douban_id) is None: # load it! b = douban.get_book_all_by_id(douban_id, user) b.merge_into_datastore(user) msg = "DONE" else: # default case email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return msg = self._test(user) template = utils.get_jinja_env().get_template('test.html') context = { 'user': user, 'msg': msg } self.response.out.write(template.render(context)) return
if __name__ == "__main__": parser = argparse.ArgumentParser(parents=[utils.get_parent_parser()]) parser.add_argument('--hit_properties_file', type=argparse.FileType('r')) parser.add_argument('--html_template') parser.add_argument('--input_json_file', type=argparse.FileType('r')) args = parser.parse_args() # connect to MTurk mtc = utils.get_mturk_connection_from_args(args) # load hit properties hit_properties = json.load(args.hit_properties_file) hit_properties['Reward'] = str(hit_properties['Reward']) # prepare qualifications utils.setup_qualifications(hit_properties, mtc) frame_height = hit_properties.pop('FrameHeight') env = utils.get_jinja_env(args.config) template = env.get_template(args.html_template) if args.hit_ids_file is None: print('Need to input a hit_ids_file') sys.exit() if os.path.isfile(args.hit_ids_file): print('hit_ids_file already exists') sys.exit() create(args)
def get(self): """ Get method: Ask for data for a particular booklist. """ email = auth.get_email_from_cookies(self.request.cookies) user = auth.user.User.get_by_email(email) if not user: self.redirect('/login') return template = utils.get_jinja_env().get_template("booklist.html") bl = booklist.BookList.get_or_create(user, self.list_type) context = { 'user': user, 'title': self.title, 'active_nav': self.active_nav, 'booklist': bl } import_started = self.request.get('import_started') if import_started: # an async Task has just been added to import from douban context['import_started'] = True start_str = self.request.get('start') if start_str: try: start = int(start_str) - 1 if start < 0: start = 0 except Exception: start = 0 else: start = 0 # there are 4 types now: # time, rating, voted, pages sort_by = self.request.get('sortby') if not sort_by: sort_by = 'time' context['sortby'] = sort_by if sort_by == 'time': bookbriefs = self._prepare_by_time(user, bl, start) elif sort_by == 'public_rating': bookbriefs = self._prepare_by_public_rating(user, bl, start) elif sort_by == 'user_rating': bookbriefs = self._prepare_by_user_rating(user, bl, start) elif sort_by == 'rated_amount': bookbriefs = self._prepare_by_rated_amount(user, bl, start) elif sort_by == 'pages': bookbriefs = self._prepare_by_pages(user, bl, start) else: bookbriefs = None if bookbriefs: context['bookbriefs'] = bookbriefs context['start'] = start + 1 context['end'] = len(bookbriefs) + start - 1 + 1 context['prev_url'] = self._prepare_prev_url(start, sort_by) context['next_url'] = self._prepare_next_url(start, bl.size(), sort_by) self.response.out.write(template.render(context)) return
def _render(self, dic={}): """ Render the log-in page with @param dic. """ jinja_env = utils.get_jinja_env() template = jinja_env.get_template('login.html') self.response.out.write(template.render(dic))
def _render(self, dic={}): """ Render the sign-up page with @param dic. """ jinja_env = utils.get_jinja_env() template = jinja_env.get_template("signup.html") self.response.out.write(template.render(dic))