def index(): if session.forced_language == "en": locale = "en_US" elif session.forced_language == "de": locale = "de_DE" else: locale = "" ompdal = OMPDAL(db, myconf) press = ompdal.getPress(myconf.take("omp.press_id")) if not press: redirect(URL("home", "index")) press_settings = OMPSettings(ompdal.getPressSettings(press.press_id)) ignored_submission_id = myconf.take("omp.ignore_submissions") if myconf.take("omp.ignore_submissions") else -1 submissions = [] for submission_row in ompdal.getSubmissionsByPress(press.press_id, ignored_submission_id): authors = [ OMPItem(author, OMPSettings(ompdal.getAuthorSettings(author.author_id))) for author in ompdal.getAuthorsBySubmission(submission_row.submission_id) ] editors = [ OMPItem(editor, OMPSettings(ompdal.getAuthorSettings(editor.author_id))) for editor in ompdal.getEditorsBySubmission(submission_row.submission_id) ] publication_dates = [ dateFromRow(pd) for pf in ompdal.getAllPublicationFormatsBySubmission( submission_row.submission_id, available=True, approved=True ) for pd in ompdal.getPublicationDatesByPublicationFormat(pf.publication_format_id) ] submission = OMPItem( submission_row, OMPSettings(ompdal.getSubmissionSettings(submission_row.submission_id)), {"authors": authors, "editors": editors}, ) series_row = ompdal.getSeries(submission_row.series_id) if series_row: submission.associated_items["series"] = OMPItem( series_row, OMPSettings(ompdal.getSeriesSettings(series_row.series_id)) ) if publication_dates: submission.associated_items["publication_dates"] = publication_dates submissions.append(submission) submissions = sorted( submissions, key=lambda s: min(s.associated_items.get("publication_dates", [datetime(1, 1, 1)])), reverse=True ) return locals()
def series(): if session.forced_language == "en": locale = "en_US" elif session.forced_language == "de": locale = "de_DE" else: locale = "" ignored_submission_id = myconf.take("omp.ignore_submissions") if myconf.take("omp.ignore_submissions") else -1 if 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: authors = [ OMPItem(author, OMPSettings(ompdal.getAuthorSettings(author.author_id))) for author in ompdal.getAuthorsBySubmission(submission_row.submission_id) ] editors = [ OMPItem(editor, OMPSettings(ompdal.getAuthorSettings(editor.author_id))) for editor in ompdal.getEditorsBySubmission(submission_row.submission_id) ] submission = OMPItem( submission_row, OMPSettings(ompdal.getSubmissionSettings(submission_row.submission_id)), {"authors": authors, "editors": editors}, ) submissions.append(submission) submissions = sorted(submissions, cmp=seriesPositionCompare, reverse=True) series.associated_items["submissions"] = submissions return locals()
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()
def index(): if session.forced_language == 'en': locale = 'en_US' elif session.forced_language == 'de': locale = 'de_DE' else: locale = '' ompdal = OMPDAL(db, myconf) press = ompdal.getPress(myconf.take('omp.press_id')) if not press: redirect(URL('home', 'index')) press_settings = OMPSettings(ompdal.getPressSettings(press.press_id)) ignored_submission_id = myconf.take('omp.ignore_submissions') if myconf.take('omp.ignore_submissions') else -1 submissions = [] for submission_row in ompdal.getSubmissionsByPress(press.press_id, ignored_submission_id): authors = [OMPItem(author, OMPSettings(ompdal.getAuthorSettings(author.author_id))) for author in ompdal.getAuthorsBySubmission(submission_row.submission_id)] editors = [OMPItem(editor, OMPSettings(ompdal.getAuthorSettings(editor.author_id))) for editor in ompdal.getEditorsBySubmission(submission_row.submission_id)] publication_dates = [dateFromRow(pd) for pf in ompdal.getAllPublicationFormatsBySubmission(submission_row.submission_id, available=True, approved=True) for pd in ompdal.getPublicationDatesByPublicationFormat(pf.publication_format_id)] submission = OMPItem(submission_row, OMPSettings(ompdal.getSubmissionSettings(submission_row.submission_id)), {'authors': authors, 'editors': editors} ) series_row = ompdal.getSeries(submission_row.series_id) if series_row: submission.associated_items['series'] = OMPItem(series_row, OMPSettings(ompdal.getSeriesSettings(series_row.series_id))) if publication_dates: submission.associated_items['publication_dates'] = publication_dates submissions.append(submission) submissions = sorted(submissions, key=lambda s: min(s.associated_items.get('publication_dates', [datetime(1, 1, 1)])), reverse = True) return locals()
def series(): if session.forced_language == 'en': locale = 'en_US' elif session.forced_language == 'de': locale = 'de_DE' else: locale = '' ignored_submission_id = myconf.take('omp.ignore_submissions') if myconf.take('omp.ignore_submissions') else -1 if 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: authors = [OMPItem(author, OMPSettings(ompdal.getAuthorSettings(author.author_id))) for author in ompdal.getAuthorsBySubmission(submission_row.submission_id)] editors = [OMPItem(editor, OMPSettings(ompdal.getAuthorSettings(editor.author_id))) for editor in ompdal.getEditorsBySubmission(submission_row.submission_id)] submission = OMPItem(submission_row, OMPSettings(ompdal.getSubmissionSettings(submission_row.submission_id)), {'authors': authors, 'editors': editors} ) submissions.append(submission) submissions = sorted(submissions, cmp=seriesPositionCompare, reverse=True) series.associated_items['submissions'] = submissions return locals()