def test_simple_case(self): result_size = 10 check_limit = 20 extra_value = "hello" def select_list(a, b, c, limit, backid=None, nextid=None, extra=None): self.assertEqual(extra_value, extra) self.assertEqual(check_limit, limit) return fake_results(range(result_size)) def select_count(a, b, c, backid=None, nextid=None, extra=None): self.assertEqual(extra_value, extra) if backid is not None: return backid if nextid is not None: return nextid # should get one or the other raise ValueError() result = pagination.PaginatedResult(select_list, select_count, ID_FIELD, "%s", 1, 2, 3, check_limit, extra=extra_value) self.assertEqual(result_size - 1, result.next_count) self.assertEqual(0, result.back_count) self.assertEqual(result_size, len(result.query)) self.assertEqual("nextid=" + str(result_size - 1), result.next_url)
def submissions_(request): name = request.matchdict.get('name', request.params.get('name', '')) userid = define.get_int(request.params.get('userid')) rating = define.get_rating(request.userid) otherid = profile.resolve(request.userid, userid, name) folderid = define.get_int(request.params.get('folderid')) or None backid = request.params.get('backid') nextid = request.params.get('nextid') if not otherid: raise WeasylError("userRecordMissing") elif not request.userid and "h" in define.get_config(otherid): raise WeasylError('noGuests') userprofile = profile.select_profile(otherid, viewer=request.userid) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's submissions" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(request.userid, title=page_title) url_format = "/submissions/{username}?%s{folderquery}".format( username=define.get_sysname(userprofile['username']), folderquery="&folderid=%d" % folderid if folderid else "") result = pagination.PaginatedResult(submission.select_list, submission.select_count, 'submitid', url_format, request.userid, rating, limit=60, otherid=otherid, folderid=folderid, backid=define.get_int(backid), nextid=define.get_int(nextid), profile_page_filter=not folderid) page.append( define.render( 'user/submissions.html', [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(request.userid, otherid), # Recent submissions result, # Folders folder.select_list(otherid), # Current folder folderid, ])) return Response(define.common_page_end(request.userid, page))
def collections_(request): form = request.web_input(userid="", name="", backid=None, nextid=None, folderid=None) form.name = request.matchdict.get('name', form.name) form.userid = define.get_int(form.userid) config = define.get_config(request.userid) rating = define.get_rating(request.userid) otherid = profile.resolve(request.userid, form.userid, form.name) if not otherid: raise WeasylError("userRecordMissing") elif not request.userid and "h" in define.get_config(otherid): return Response( define.errorpage(request.userid, errorcode.no_guest_access)) userprofile = profile.select_profile(otherid, images=True, viewer=request.userid) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's collections" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(request.userid, title=page_title) url_format = "/collections?userid={userid}&%s".format( userid=userprofile['userid']) result = pagination.PaginatedResult(collection.select_list, collection.select_count, 'submitid', url_format, request.userid, rating, 66, otherid=otherid, backid=define.get_int(form.backid), nextid=define.get_int(form.nextid), config=config) page.append( define.render( 'user/collections.html', [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(request.userid, otherid), # Collections result, ])) return Response(define.common_page_end(request.userid, page))
def GET(self, name=""): form = web.input(userid="", name="", backid=None, nextid=None) form.name = name if name else form.name form.userid = define.get_int(form.userid) config = define.get_config(self.user_id) rating = define.get_rating(self.user_id) otherid = profile.resolve(self.user_id, form.userid, form.name) if not otherid: raise WeasylError("userRecordMissing") elif not self.user_id and "h" in define.get_config(otherid): return define.errorpage(self.user_id, errorcode.no_guest_access) userprofile = profile.select_profile(otherid, images=True, viewer=self.user_id) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's characters" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(self.user_id, title=page_title) url_format = "/characters?userid={userid}&%s".format( userid=userprofile['userid']) result = pagination.PaginatedResult(character.select_list, character.select_count, 'charid', url_format, self.user_id, rating, 60, otherid=otherid, backid=define.get_int(form.backid), nextid=define.get_int(form.nextid), config=config) page.append( define.render( template.user_characters, [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(self.user_id, otherid), # Characters list result, ])) return define.common_page_end(self.user_id, page)
def collections_(request): name = request.matchdict.get('name', request.params.get('name', '')) userid = define.get_int(request.params.get('userid')) rating = define.get_rating(request.userid) otherid = profile.resolve(request.userid, userid, name) backid = request.params.get('backid') nextid = request.params.get('nextid') if not otherid: raise WeasylError("userRecordMissing") elif not request.userid and "h" in define.get_config(otherid): raise WeasylError('noGuests') userprofile = profile.select_profile(otherid, viewer=request.userid) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's collections" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(request.userid, title=page_title) url_format = "/collections?userid={userid}&%s".format( userid=userprofile['userid']) result = pagination.PaginatedResult(collection.select_list, collection.select_count, 'submitid', url_format, request.userid, rating, limit=66, otherid=otherid, backid=define.get_int(backid), nextid=define.get_int(nextid)) page.append( define.render( 'user/collections.html', [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(request.userid, otherid), # Collections result, ])) return Response(define.common_page_end(request.userid, page))
def submissions_(request): form = request.web_input(userid="", name="", backid=None, nextid=None, folderid=None) form.name = request.matchdict.get('name', form.name) form.userid = define.get_int(form.userid) config = define.get_config(request.userid) rating = define.get_rating(request.userid) otherid = profile.resolve(request.userid, form.userid, form.name) folderid = define.get_int(form.folderid) or None if not otherid: raise WeasylError("userRecordMissing") elif not request.userid and "h" in define.get_config(otherid): return Response(define.errorpage(request.userid, errorcode.no_guest_access)) userprofile = profile.select_profile(otherid, images=True, viewer=request.userid) has_fullname = userprofile['full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's submissions" % (userprofile['full_name'] if has_fullname else userprofile['username'],) page = define.common_page_start(request.userid, title=page_title) url_format = "/submissions/{username}?%s{folderquery}".format( username=define.get_sysname(userprofile['username']), folderquery="&folderid=%d" % folderid if folderid else "") result = pagination.PaginatedResult( submission.select_list, submission.select_count, 'submitid', url_format, request.userid, rating, 60, otherid=otherid, folderid=folderid, backid=define.get_int(form.backid), nextid=define.get_int(form.nextid), config=config, profile_page_filter=not folderid) page.append(define.render('user/submissions.html', [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(request.userid, otherid), # Recent submissions result, # Folders folder.select_list(otherid, "sidebar/all"), # Current folder folderid, ])) return Response(define.common_page_end(request.userid, page))
def favorites_(request): name = request.matchdict.get('name', request.params.get('name', '')) userid = define.get_int(request.params.get('userid')) rating = define.get_rating(request.userid) otherid = profile.resolve(request.userid, userid, name) backid = request.params.get('backid') nextid = request.params.get('nextid') feature = request.params.get('feature', False) # TODO(hyena): Why aren't more of these WeasylErrors? if not otherid: raise WeasylError("userRecordMissing") elif not request.userid and "h" in define.get_config(otherid): raise WeasylError('noGuests') elif request.userid != otherid and 'v' in define.get_config(otherid): raise WeasylError('hiddenFavorites') userprofile = profile.select_profile(otherid, viewer=request.userid) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's favorites" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(request.userid, title=page_title) if feature: nextid = define.get_int(nextid) backid = define.get_int(backid) url_format = ("/favorites?userid={userid}&feature={feature}&%s".format( userid=otherid, feature=feature)) id_field = feature + "id" count_function = None if feature == "submit": select_function = favorite.select_submit count_function = favorite.select_submit_count elif feature == "char": select_function = favorite.select_char elif feature == "journal": select_function = favorite.select_journal else: raise httpexceptions.HTTPNotFound() faves = pagination.PaginatedResult(select_function, count_function, id_field, url_format, request.userid, rating, limit=60, otherid=otherid, backid=backid, nextid=nextid) else: faves = { "submit": favorite.select_submit(request.userid, rating, 22, otherid=otherid), "char": favorite.select_char(request.userid, rating, 22, otherid=otherid), "journal": favorite.select_journal(request.userid, rating, 22, otherid=otherid), } page.append( define.render( 'user/favorites.html', [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(request.userid, otherid), # Feature feature, # Favorites faves, ])) return Response(define.common_page_end(request.userid, page))
def favorites_(request): def _FEATURE(target): if target == "submit": return 10 elif target == "char": return 20 elif target == "journal": return 30 else: return 0 form = request.web_input(userid="", name="", feature="", backid=None, nextid=None) form.name = request.matchdict.get('name', form.name) form.userid = define.get_int(form.userid) config = define.get_config(request.userid) rating = define.get_rating(request.userid) otherid = profile.resolve(request.userid, form.userid, form.name) # TODO(hyena): Why aren't more of these WeasylErrors? if not otherid: raise WeasylError("userRecordMissing") elif not request.userid and "h" in define.get_config(otherid): return Response( define.errorpage(request.userid, errorcode.no_guest_access)) elif request.userid != otherid and 'v' in define.get_config(otherid): return Response( define.errorpage( request.userid, "You cannot view this page because the owner does not allow anyone to see their favorites." )) userprofile = profile.select_profile(otherid, images=True, viewer=request.userid) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's favorites" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(request.userid, title=page_title) if form.feature: nextid = define.get_int(form.nextid) backid = define.get_int(form.backid) url_format = ("/favorites?userid={userid}&feature={feature}&%s".format( userid=userprofile['userid'], feature=form.feature)) id_field = form.feature + "id" count_function = None if form.feature == "submit": select_function = favorite.select_submit count_function = favorite.select_submit_count elif form.feature == "char": select_function = favorite.select_char elif form.feature == "journal": select_function = favorite.select_journal else: raise httpexceptions.HTTPNotFound() faves = pagination.PaginatedResult(select_function, count_function, id_field, url_format, request.userid, rating, 60, otherid=otherid, backid=backid, nextid=nextid, config=config) else: faves = { "submit": favorite.select_submit(request.userid, rating, 22, otherid=otherid, config=config), "char": favorite.select_char(request.userid, rating, 22, otherid=otherid, config=config), "journal": favorite.select_journal(request.userid, rating, 22, otherid=otherid, config=config), } page.append( define.render( 'user/favorites.html', [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(request.userid, otherid), # Feature form.feature, # Favorites faves, ])) return Response(define.common_page_end(request.userid, page))
def GET(self, name=""): def _FEATURE(target): if target == "submit": return 10 elif target == "char": return 20 elif target == "journal": return 30 else: return 0 form = web.input(userid="", name="", feature="", backid=None, nextid=None) form.name = name if name else form.name form.userid = define.get_int(form.userid) config = define.get_config(self.user_id) rating = define.get_rating(self.user_id) otherid = profile.resolve(self.user_id, form.userid, form.name) if not otherid: raise WeasylError("userRecordMissing") elif not self.user_id and "h" in define.get_config(otherid): return define.errorpage(self.user_id, errorcode.no_guest_access) elif self.user_id != otherid and 'v' in define.get_config(otherid): return define.errorpage( self.user_id, "You cannot view this page because the owner does not allow anyone to see their favorites." ) userprofile = profile.select_profile(otherid, images=True, viewer=self.user_id) has_fullname = userprofile[ 'full_name'] is not None and userprofile['full_name'].strip() != '' page_title = u"%s's favorites" % (userprofile['full_name'] if has_fullname else userprofile['username'], ) page = define.common_page_start(self.user_id, title=page_title) if form.feature: nextid = define.get_int(form.nextid) backid = define.get_int(form.backid) url_format = ( "/favorites?userid={userid}&feature={feature}&%s".format( userid=userprofile['userid'], feature=form.feature)) id_field = form.feature + "id" count_function = None if form.feature == "submit": select_function = favorite.select_submit count_function = favorite.select_submit_count elif form.feature == "char": select_function = favorite.select_char elif form.feature == "journal": select_function = favorite.select_journal faves = pagination.PaginatedResult(select_function, count_function, id_field, url_format, self.user_id, rating, 60, otherid=otherid, backid=backid, nextid=nextid, config=config) else: faves = { "submit": favorite.select_submit(self.user_id, rating, 22, otherid=otherid, config=config), "char": favorite.select_char(self.user_id, rating, 22, otherid=otherid, config=config), "journal": favorite.select_journal(self.user_id, rating, 22, otherid=otherid, config=config), } page.append( define.render( template.user_favorites, [ # Profile information userprofile, # User information profile.select_userinfo(otherid, config=userprofile['config']), # Relationship profile.select_relation(self.user_id, otherid), # Feature form.feature, # Favorites faves, ])) return define.common_page_end(self.user_id, page)