Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)