def get(self): PAGE_SIZE = 5 manuscripts = [] params = {} items = [] genrefilter = self.request.GET.getall('genre') offset = 0 new_page = self.request.GET.get('page') if new_page: new_page = int(new_page) offset = int(new_page - 1) * PAGE_SIZE else: new_page = 1 query1 = bmodels.Manuscript.query(bmodels.Manuscript.display == 'pb_users') if genrefilter: query = query1.filter(bmodels.Manuscript.genres.IN(genrefilter)) else: query = query1 count = query.count() items = query.fetch(PAGE_SIZE, offset=offset) # the following line returns the equivalent to math.ceil(float), just saving from importing another lib number_of_pages = count/PAGE_SIZE if count % PAGE_SIZE == 0 else count/PAGE_SIZE + 1 for i in items: d = {} d['manuscript_id'] = i.key.id() d['title'] = i.title d['tagline'] = i.tagline d['summary'] = i.summary.replace('\r\n', ' ').replace('\n', ' ') d['genres'] = i.genres d['co_authors'] = ', '.join(i.co_authors) manuscripts.append(d) paging = utils.pagination(number_of_pages, new_page, 5) if len(manuscripts) > 0 else [[1], 0] params['count'] = count params['manuscripts'] = manuscripts params['marks'] = paging[0] if len(paging) > 0 else 'no_marks' params['active'] = 'mark_' + str(paging[0][paging[1]]) if len(paging) > 0 else 'no_marks' params['previous'] = str(new_page - 1) if new_page > 1 else None params['next'] = str(new_page + 1) if new_page < number_of_pages else None params['genrelist_fiction'] = utils.genres_fiction params['genrelist_nonfiction'] = utils.genres_nonfiction params['genres'] = genrefilter return self.render_template('/browse/browse_manuscripts.html', **params)
def get(self): """ Handles GET requests and paging. It doesn't uses cursors. Instead, it uses offset along with a paginate custom function to navigate through the results. """ PAGE_SIZE = 5 contractors = [] params = {} items = [] jobfilter = self.request.GET.getall('jobs') print jobfilter offset = 0 new_page = self.request.GET.get('page') if new_page: new_page = int(new_page) offset = int(new_page - 1) * PAGE_SIZE else: new_page = 1 if jobfilter: query = bmodels.ProDetails.query(bmodels.ProDetails.jobs.IN(jobfilter)) else: query = bmodels.ProDetails.query() # removes user own publishing house query = query.filter(bmodels.ProDetails.user != self.user_key) count = query.count() items = query.fetch(PAGE_SIZE, offset=offset) # the following line returns the equivalent to math.ceil(float), just saving from importing another lib number_of_pages = count/PAGE_SIZE if count % PAGE_SIZE == 0 else count/PAGE_SIZE + 1 for i in items: d = {} d['profile_id'] = i.key.id() if i.display_full_name: d['name_to_display'] = i.name + ' ' + i.last_name else: d['name_to_display'] = i.name + ' ' + i.last_name[0] + '.' if i.picture_key != '': d['picture_url'] = '/serve/%s' % i.picture_key else: d['picture_url'] = '' d['title'] = i.title d['overview'] = i.overview.replace('\r\n', ' ').replace('\n', ' ') d['jobs'] = i.jobs contractors.append(d) paging = utils.pagination(number_of_pages, new_page, 5) if len(contractors) > 0 else [[1], 0] params['count'] = count params['contractors'] = contractors params['marks'] = paging[0] if len(paging) > 0 else 'no_marks' params['active'] = 'mark_' + str(paging[0][paging[1]]) if len(paging) > 0 else 'no_marks' params['previous'] = str(new_page - 1) if new_page > 1 else None params['next'] = str(new_page + 1) if new_page < number_of_pages else None params['joblist'] = utils.joblist params['jobs'] = jobfilter return self.render_template('browse/browse_contractors.html', **params)
def get(self): """ It doesn't uses cursors. Instead, it uses offset along with a paginate custom function to navigate through the results. """ PAGE_SIZE = 5 publishinghouses = [] params = {} items = [] genrefilter = self.request.GET.getall('genre') offset = 0 new_page = self.request.GET.get('page') if new_page: new_page = int(new_page) offset = int(new_page - 1) * PAGE_SIZE else: new_page = 1 if genrefilter: query = bmodels.PublishingHouse.query(bmodels.PublishingHouse.genres.IN(genrefilter)) else: query = bmodels.PublishingHouse.query() # removes user own publishing house query = query.filter(bmodels.PublishingHouse.owner != self.user_key) count = query.count() items = query.fetch(PAGE_SIZE, offset=offset) # the following line returns the equivalent to math.ceil(float), just saving from importing another lib number_of_pages = count/PAGE_SIZE if count % PAGE_SIZE == 0 else count/PAGE_SIZE + 1 for i in items: d = {} d['name'] = i.name d['publishinghouse_id'] = i.key.id() if i.logo_key != '': d['logo_url'] = '/serve/%s' % i.logo_key else: d['logo_url'] = '' d['tagline'] = i.tagline d['description'] = i.description.replace('\r\n', ' ').replace('\n', ' ') d['genres'] = i.genres d['unsolicited'] = i.unsolicited publishinghouses.append(d) paging = utils.pagination(number_of_pages, new_page, 5) if len(publishinghouses) > 0 else [[1], 0] params['count'] = count params['publishinghouses'] = publishinghouses params['marks'] = paging[0] if len(paging) > 0 else 'no_marks' params['active'] = 'mark_' + str(paging[0][paging[1]]) if len(paging) > 0 else 'no_marks' params['previous'] = str(new_page - 1) if new_page > 1 else None params['next'] = str(new_page + 1) if new_page < number_of_pages else None params['genrelist_fiction'] = utils.genres_fiction params['genrelist_nonfiction'] = utils.genres_nonfiction params['genres'] = genrefilter return self.render_template('browse/browse_publishinghouses.html', **params)
def get(self): """Handles GET requests to the paging by cursors sub-application. It doesn't uses cursors. Instead, it uses offset along with a paginate custom function to navigate through the results. """ PAGE_SIZE = 5 authors = [] params = {} items = [] genrefilter = self.request.GET.getall('genre') offset = 0 new_page = self.request.GET.get('page') if new_page: new_page = int(new_page) offset = int(new_page - 1) * PAGE_SIZE else: new_page = 1 if genrefilter: query = bmodels.AuthorProfile.query(bmodels.AuthorProfile.genres.IN(genrefilter)) else: query = bmodels.AuthorProfile.query() # removes user own publishing house query = query.filter(bmodels.AuthorProfile.user != self.user_key) count = query.count() items = query.fetch(PAGE_SIZE, offset=offset) # the following line returns the equivalent to math.ceil(float), just saving from importing another lib number_of_pages = count/PAGE_SIZE if count % PAGE_SIZE == 0 else count/PAGE_SIZE + 1 for i in items: manuscripts = [] manuscripts_records = bmodels.Manuscript.query(bmodels.Manuscript.author == i.key, bmodels.Manuscript.display == 'pb_users').fetch() if manuscripts_records: manuscripts = [[m.title, m.key.id()] for m in manuscripts_records] d = {} d['author_id'] = i.key.id() if i.display_full_name: d['name_to_display'] = i.name + ' ' + i.last_name else: d['name_to_display'] = i.name + ' ' + i.last_name[0] + '.' # if i.picture_key != '': # d['picture_url'] = '/serve/%s' % i.picture_key # else: # d['picture_url'] = '' d['title'] = i.title d['overview'] = i.overview.replace('\r\n', ' ').replace('\n', ' ') d['genres'] = i.genres d['ghostwrites'] = i.ghostwrites d['freelance'] = i.freelance d['manuscripts'] = manuscripts authors.append(d) paging = utils.pagination(number_of_pages, new_page, 5) if len(authors) > 0 else [[1], 0] params['count'] = count params['authors'] = authors params['marks'] = paging[0] if len(paging) > 0 else 'no_marks' params['active'] = 'mark_' + str(paging[0][paging[1]]) if len(paging) > 0 else 'no_marks' params['previous'] = str(new_page - 1) if new_page > 1 else None params['next'] = str(new_page + 1) if new_page < number_of_pages else None params['genrelist_fiction'] = utils.genres_fiction params['genrelist_nonfiction'] = utils.genres_nonfiction params['genres'] = genrefilter return self.render_template('browse/browse_authors.html', **params)