Ejemplo n.º 1
0
def series():
    ignored_submission_id = myconf.take('omp.ignore_submissions') if myconf.take(
        'omp.ignore_submissions') else -1

    if not request.args:
        redirect(URL('home', 'index'))
    series_path = request.args[0]

    ompdal = OMPDAL(db, myconf)

    press = ompdal.getPress(myconf.take('omp.press_id'))
    if not press:
        redirect(URL('home', 'index'))

    series_row = ompdal.getSeriesByPathAndPress(series_path, press.press_id)

    # If series path is unknown
    if not series_row:
        redirect(URL('home', 'index'))

    series = OMPItem(series_row, OMPSettings(
        ompdal.getSeriesSettings(series_row.series_id)))
    submission_rows = ompdal.getSubmissionsBySeries(
        series_row.series_id, ignored_submission_id=ignored_submission_id, status=3)
    submissions = []
    for submission_row in submission_rows:
        contributors_by_group = defaultdict(list)
        for contrib in ompdal.getAuthorsBySubmission(submission_row.submission_id, filter_browse=True):
            contrib_item = OMPItem(contrib, OMPSettings(ompdal.getAuthorSettings(contrib.author_id)))
            contributors_by_group[contrib.user_group_id].append(contrib_item)

        editors = contributors_by_group[myconf.take('omp.editor_id', cast=int)]
        authors = contributors_by_group[myconf.take('omp.author_id', cast=int)]
        chapter_authors = contributors_by_group[myconf.take('omp.chapter_author_id', cast=int)]
        translators = []
        if myconf.get('omp.translator_id'):
            translators = contributors_by_group[int(myconf.take('omp.translator_id'))]
        submission = OMPItem(submission_row,
                             OMPSettings(ompdal.getSubmissionSettings(
                                 submission_row.submission_id)),
                             {'authors': authors, 'editors': editors, 'chapter_authors': chapter_authors}
                             )
        if authors:
            attribution = ompformat.formatContributors(authors, max_contributors=4, with_and=True)
            additional_attribution = ompformat.formatAttribution(editors, [], translators, [])
        else:
            attribution = ompformat.formatAttribution(editors, [], [], chapter_authors)
            additional_attribution = ""
        submission.attribution = attribution
        submission.additional_attribution = additional_attribution

        category_row = ompdal.getCategoryBySubmissionId(submission_row.submission_id)
        if category_row:
            submission.associated_items['category'] = OMPItem(
                category_row, OMPSettings(ompdal.getCategorySettings(category_row.category_id)))

        publication_dates = [ompformat.dateFromRow(pd) for pf in
                             ompdal.getAllPublicationFormatsBySubmission(submission_row.submission_id, available=True,
                                                                         approved=True) for pd in
                             ompdal.getPublicationDatesByPublicationFormat(pf.publication_format_id)]
        if publication_dates:
            submission.associated_items['publication_dates'] = publication_dates
        submissions.append(submission)


    series.associated_items['submissions'] = submissions

    return locals()