def book(): if session.forced_language == 'en': locale = 'en_US' elif session.forced_language == 'de': locale = 'de_DE' else: locale = '' submission_id = request.args[0] if request.args else redirect( URL('home', 'index')) dal = OMPDAL(db, myconf) press = dal.getPress(myconf.take('omp.press_id')) if not press: redirect(URL('home', 'index')) press_settings = OMPSettings(dal.getPressSettings(press.press_id)) # Get basic submission info (check, if submission is associated with the actual press and if the submission has been published) submission = dal.getPublishedSubmission(submission_id, press_id=myconf.take('omp.press_id')) if not submission: redirect(URL('home', 'index')) submission_settings = OMPSettings(dal.getSubmissionSettings(submission_id)) # Get contributors and contributor settings editor_rows = dal.getEditorsBySubmission(submission_id) editors = [OMPItem(e, OMPSettings(dal.getAuthorSettings(e.author_id))) for e in editor_rows] # Do not load authors if the submission has editors authors = [] if editors else [OMPItem(a, OMPSettings(dal.getAuthorSettings(a.author_id))) for a in dal.getActualAuthorsBySubmission(submission_id, filter_browse=True)] # Get chapters and chapter authors chapters = [] for chapter in dal.getChaptersBySubmission(submission_id): chapters.append(OMPItem(chapter, OMPSettings(dal.getChapterSettings(chapter.chapter_id)), {'authors': [OMPItem(a, OMPSettings(dal.getAuthorSettings(a.author_id))) for a in dal.getAuthorsByChapter(chapter.chapter_id)]}) ) # Get digital publication formats, settings, files, and identification codes digital_publication_formats = [] for pf in dal.getDigitalPublicationFormats(submission_id, available=True, approved=True): publication_format = OMPItem(pf, OMPSettings(dal.getPublicationFormatSettings(pf.publication_format_id)), {'identification_codes': dal.getIdentificationCodesByPublicationFormat(pf.publication_format_id), 'publication_dates': dal.getPublicationDatesByPublicationFormat(pf.publication_format_id)} ) full_file = dal.getLatestRevisionOfFullBookFileByPublicationFormat(submission_id, pf.publication_format_id) if full_file: publication_format.associated_items['full_file'] = OMPItem(full_file, OMPSettings(dal.getSubmissionFileSettings(full_file.file_id))) digital_publication_formats.append(publication_format) for chapter in chapters: chapter_file = dal.getLatestRevisionOfChapterFileByPublicationFormat(chapter.attributes.chapter_id, pf.publication_format_id) if chapter_file: chapter.associated_items.setdefault('files', {})[pf.publication_format_id] = OMPItem(chapter_file, OMPSettings(dal.getSubmissionFileSettings(chapter_file.file_id))) # Get physical publication formats, settings, and identification codes physical_publication_formats = [] for pf in dal.getPhysicalPublicationFormats(submission_id, available=True, approved=True): physical_publication_formats.append(OMPItem(pf, OMPSettings(dal.getPublicationFormatSettings(pf.publication_format_id)), {'identification_codes': dal.getIdentificationCodesByPublicationFormat(pf.publication_format_id), 'publication_dates': dal.getPublicationDatesByPublicationFormat(pf.publication_format_id)}) ) pdf = dal.getPublicationFormatByName(submission_id, myconf.take('omp.doi_format_name')).first() # Get DOI from the format marked as DOI carrier if pdf: doi = OMPSettings(dal.getPublicationFormatSettings(pdf.publication_format_id)).getLocalizedValue("pub-id::doi", "") # DOI always has empty locale else: doi = "" def get_first(l): if l: return l[0] else: return None date_published = None # Get the OMP publication date (column publication_date contains latest catalog entry edit date.) Try: # 1. Custom publication date entered for a publication format calles "PDF" if pdf: date_published = get_first([dateFromRow(pd) for pd in dal.getPublicationDatesByPublicationFormat(pdf.publication_format_id) if pd.role=="01"]) # 2. Date on which the catalog entry was first published if not date_published: date_published = get_first([pd.date_logged for pd in dal.getMetaDataPublishedDates(submission_id)]) # 3. Date on which the submission status was last modified (always set) if not date_published: date_published = submission.date_status_modified series = dal.getSeriesBySubmissionId(submission_id) if series: series = OMPItem(series, OMPSettings(dal.getSeriesSettings(series.series_id))) # Get purchase info representatives = dal.getRepresentativesBySubmission(submission_id, myconf.take('omp.representative_id_type')) #stats = OMPStats(myconf, db, locale) return locals()