def obj2form(obj): forminfo = {} bibjson = obj.bibjson() forminfo['title'] = bibjson.title forminfo['url'] = bibjson.get_single_url(urltype='homepage') forminfo['alternative_title'] = bibjson.alternative_title forminfo['pissn'] = listpop(bibjson.get_identifiers(idtype=bibjson.P_ISSN)) forminfo['eissn'] = listpop(bibjson.get_identifiers(idtype=bibjson.E_ISSN)) forminfo['publisher'] = bibjson.publisher forminfo['society_institution'] = bibjson.institution forminfo['platform'] = bibjson.provider forminfo['contact_name'] = listpop(obj.contacts(), {}).get('name') forminfo['contact_email'] = listpop(obj.contacts(), {}).get('email') forminfo['confirm_contact_email'] = forminfo['contact_email'] forminfo['country'] = bibjson.country apc = bibjson.apc if apc: forminfo['processing_charges'] = forms.reverse_interpret_special(True) forminfo['processing_charges_currency'] = apc.get('currency') forminfo['processing_charges_amount'] = apc.get('average_price') else: forminfo['processing_charges'] = forms.reverse_interpret_special(False) submission_charges = bibjson.submission_charges if submission_charges: forminfo['submission_charges'] = forms.reverse_interpret_special(True) forminfo['submission_charges_currency'] = submission_charges.get('currency') forminfo['submission_charges_amount'] = submission_charges.get('average_price') else: forminfo['submission_charges'] = forms.reverse_interpret_special(False) forminfo['waiver_policy_url'] = bibjson.get_single_url(urltype='waiver_policy') forminfo['waiver_policy'] = forminfo['waiver_policy_url'] == '' # checkboxes archiving_policies = forms.reverse_interpret_special(bibjson.archiving_policy.get('policy', []), field='digital_archiving_policy') # for backwards compatibility we keep the "Other" field first in the reverse xwalk # previously we didn't store which free text value was which (Other, or specific national library) # so in those cases, just put it in "Other", it'll be correct most of the time archiving_policies, forminfo['digital_archiving_policy_other'] = \ forms.reverse_interpret_other(archiving_policies, forms.digital_archiving_policy_choices_list) archiving_policies, forminfo['digital_archiving_policy_library'] = \ forms.reverse_interpret_other( archiving_policies, forms.digital_archiving_policy_choices_list, other_value=forms.digital_archiving_policy_specific_library_value, replace_label=forms.digital_archiving_policy_specific_library_label ) forminfo['digital_archiving_policy'] = archiving_policies forminfo['digital_archiving_policy_url'] = bibjson.archiving_policy.get('url') forminfo['crawl_permission'] = forms.reverse_interpret_special(bibjson.allows_fulltext_indexing) # checkboxes article_ids = forms.reverse_interpret_special(bibjson.persistent_identifier_scheme) article_ids, forminfo['article_identifiers_other'] = \ forms.reverse_interpret_other(article_ids, forms.article_identifiers_choices_list) forminfo['article_identifiers'] = article_ids forminfo['download_statistics'] = forms.reverse_interpret_special(bibjson.article_statistics.get('statistics')) forminfo['download_statistics_url'] = bibjson.article_statistics.get('url') forminfo['first_fulltext_oa_year'] = bibjson.oa_start.get('year') # checkboxes forminfo['fulltext_format'], forminfo['fulltext_format_other'] = \ forms.reverse_interpret_other(bibjson.format, forms.fulltext_format_choices_list) forminfo['keywords'] = bibjson.keywords forminfo['languages'] = bibjson.language forminfo['editorial_board_url'] = bibjson.get_single_url('editorial_board') forminfo['review_process'] = bibjson.editorial_review.get('process', '') forminfo['review_process_url'] = bibjson.editorial_review.get('url') forminfo['aims_scope_url'] = bibjson.get_single_url('aims_scope') forminfo['instructions_authors_url'] = bibjson.get_single_url('author_instructions') forminfo['plagiarism_screening'] = forms.reverse_interpret_special(bibjson.plagiarism_detection.get('detection')) forminfo['plagiarism_screening_url'] = bibjson.plagiarism_detection.get('url') forminfo['publication_time'] = bibjson.publication_time forminfo['oa_statement_url'] = bibjson.get_single_url('oa_statement') license = bibjson.get_license() license = license if license else {} # reinterpret the None val forminfo['license'], forminfo['license_other'] = forms.reverse_interpret_other(license.get('type'), forms.license_choices_list) if forminfo['license_other']: forminfo['license_checkbox'] = [] if license.get('BY'): forminfo['license_checkbox'].append('BY') if license.get('SA'): forminfo['license_checkbox'].append('SA') if license.get('NC'): forminfo['license_checkbox'].append('NC') if license.get('ND'): forminfo['license_checkbox'].append('ND') forminfo['license_url'] = license.get('url') forminfo['open_access'] = forms.reverse_interpret_special(license.get('open_access')) forminfo['license_embedded'] = forms.reverse_interpret_special(license.get('embedded')) forminfo['license_embedded_url'] = license.get('embedded_example_url') # checkboxes forminfo['deposit_policy'], forminfo['deposit_policy_other'] = \ forms.reverse_interpret_other(forms.reverse_interpret_special(bibjson.deposit_policy), forms.deposit_policy_choices_list) forminfo['copyright'], forminfo['copyright_other'] = \ forms.reverse_interpret_other( forms.reverse_interpret_special(bibjson.author_copyright.get('copyright', '')), forms.ternary_choices_list ) forminfo['copyright_url'] = bibjson.author_copyright.get('url') forminfo['publishing_rights'], forminfo['publishing_rights_other'] = \ forms.reverse_interpret_other( forms.reverse_interpret_special(bibjson.author_publishing_rights.get('publishing_rights', '')), forms.ternary_choices_list ) forminfo['publishing_rights_url'] = bibjson.author_publishing_rights.get('url') forminfo['notes'] = obj.notes() forminfo['subject'] = [] for s in bibjson.subjects(): forminfo['subject'].append(s['code']) forminfo['owner'] = obj.owner if obj.editor_group is not None: forminfo['editor_group'] = obj.editor_group if obj.editor is not None: forminfo['editor'] = obj.editor # old fields - only show them if the values actually exist in the journal record if bibjson.author_pays: forminfo['author_pays'] = bibjson.author_pays if bibjson.author_pays_url: forminfo['author_pays_url'] = bibjson.author_pays_url if bibjson.oa_end: forminfo['oa_end_year'] = bibjson.oa_end.get('year') return forminfo
def obj2form(cls, obj): forminfo = {} bibjson = obj.bibjson() forminfo['title'] = bibjson.title forminfo['url'] = bibjson.get_single_url(urltype='homepage') forminfo['alternative_title'] = bibjson.alternative_title forminfo['pissn'] = listpop( bibjson.get_identifiers(idtype=bibjson.P_ISSN)) forminfo['eissn'] = listpop( bibjson.get_identifiers(idtype=bibjson.E_ISSN)) forminfo['publisher'] = bibjson.publisher forminfo['society_institution'] = bibjson.institution forminfo['platform'] = bibjson.provider forminfo['contact_name'] = listpop(obj.contacts(), {}).get('name') forminfo['contact_email'] = listpop(obj.contacts(), {}).get('email') forminfo['confirm_contact_email'] = forminfo['contact_email'] forminfo['country'] = bibjson.country apc = bibjson.apc if apc: forminfo['processing_charges'] = reverse_interpret_special(True) forminfo['processing_charges_currency'] = apc.get('currency') forminfo['processing_charges_amount'] = apc.get('average_price') else: forminfo['processing_charges'] = reverse_interpret_special(False) forminfo['processing_charges_url'] = bibjson.apc_url submission_charges = bibjson.submission_charges if submission_charges: forminfo['submission_charges'] = reverse_interpret_special(True) forminfo['submission_charges_currency'] = submission_charges.get( 'currency') forminfo['submission_charges_amount'] = submission_charges.get( 'average_price') else: forminfo['submission_charges'] = reverse_interpret_special(False) forminfo['submission_charges_url'] = bibjson.submission_charges_url forminfo['waiver_policy_url'] = bibjson.get_single_url( urltype='waiver_policy') forminfo['waiver_policy'] = reverse_interpret_special( forminfo['waiver_policy_url'] is not None and forminfo['waiver_policy_url'] != '') #archiving_policies = reverse_interpret_special(bibjson.archiving_policy.get('policy', []), field='digital_archiving_policy') #substitutions = [ # {"default": Choices.digital_archiving_policy_val("library"), "field" : "digital_archiving_policy_library" }, # {"default": Choices.digital_archiving_policy_val("other"), "field" : "digital_archiving_policy_other"} #] #archiving_policies, special_fields = interpret_list( # archiving_policies, # current values # Choices.digital_archiving_policy_list(), # allowed values # substitutions # substitution instructions #) #forminfo.update(special_fields) # checkboxes archiving_policies = reverse_interpret_special( bibjson.archiving_policy.get('policy', []), field='digital_archiving_policy') # for backwards compatibility we keep the "Other" field first in the reverse xwalk # previously we didn't store which free text value was which (Other, or specific national library) # so in those cases, just put it in "Other", it'll be correct most of the time archiving_policies, forminfo['digital_archiving_policy_other'] = \ reverse_interpret_other(archiving_policies, Choices.digital_archiving_policy_list()) archiving_policies, forminfo['digital_archiving_policy_library'] = \ reverse_interpret_other( archiving_policies, Choices.digital_archiving_policy_list(), other_value=Choices.digital_archiving_policy_val("library"), replace_label=Choices.digital_archiving_policy_label("library") ) forminfo['digital_archiving_policy'] = archiving_policies forminfo[ 'digital_archiving_policy_url'] = bibjson.archiving_policy.get( 'url') forminfo['crawl_permission'] = reverse_interpret_special( bibjson.allows_fulltext_indexing) # checkboxes article_ids = reverse_interpret_special( bibjson.persistent_identifier_scheme) article_ids, forminfo['article_identifiers_other'] = \ reverse_interpret_other(article_ids, Choices.article_identifiers_list()) forminfo['article_identifiers'] = article_ids forminfo['download_statistics'] = reverse_interpret_special( bibjson.article_statistics.get('statistics')) forminfo['download_statistics_url'] = bibjson.article_statistics.get( 'url') forminfo['first_fulltext_oa_year'] = bibjson.oa_start.get('year') # checkboxes forminfo['fulltext_format'], forminfo['fulltext_format_other'] = \ reverse_interpret_other(bibjson.format, Choices.fulltext_format_list()) forminfo['keywords'] = bibjson.keywords forminfo['languages'] = bibjson.language forminfo['editorial_board_url'] = bibjson.get_single_url( 'editorial_board') forminfo['review_process'] = bibjson.editorial_review.get( 'process', '') forminfo['review_process_url'] = bibjson.editorial_review.get('url') forminfo['aims_scope_url'] = bibjson.get_single_url('aims_scope') forminfo['instructions_authors_url'] = bibjson.get_single_url( 'author_instructions') forminfo['plagiarism_screening'] = reverse_interpret_special( bibjson.plagiarism_detection.get('detection')) forminfo[ 'plagiarism_screening_url'] = bibjson.plagiarism_detection.get( 'url') forminfo['publication_time'] = bibjson.publication_time forminfo['oa_statement_url'] = bibjson.get_single_url('oa_statement') license = bibjson.get_license() license = license if license else {} # reinterpret the None val forminfo['license'], forminfo[ 'license_other'] = reverse_interpret_other(license.get('type'), Choices.licence_list()) if forminfo['license_other']: forminfo['license_checkbox'] = [] if license.get('BY'): forminfo['license_checkbox'].append('BY') if license.get('SA'): forminfo['license_checkbox'].append('SA') if license.get('NC'): forminfo['license_checkbox'].append('NC') if license.get('ND'): forminfo['license_checkbox'].append('ND') forminfo['license_url'] = license.get('url') forminfo['open_access'] = reverse_interpret_special( license.get('open_access')) forminfo['license_embedded'] = reverse_interpret_special( license.get('embedded')) forminfo['license_embedded_url'] = license.get('embedded_example_url') # checkboxes forminfo['deposit_policy'], forminfo['deposit_policy_other'] = \ reverse_interpret_other(reverse_interpret_special(bibjson.deposit_policy), Choices.deposit_policy_list()) forminfo['copyright'], forminfo['copyright_other'] = \ reverse_interpret_other( reverse_interpret_special(bibjson.author_copyright.get('copyright', '')), Choices.ternary_list() ) forminfo['copyright_url'] = bibjson.author_copyright.get('url') forminfo['publishing_rights'], forminfo['publishing_rights_other'] = \ reverse_interpret_other( reverse_interpret_special(bibjson.author_publishing_rights.get('publishing_rights', '')), Choices.ternary_list() ) forminfo[ 'publishing_rights_url'] = bibjson.author_publishing_rights.get( 'url') forminfo['notes'] = obj.notes() forminfo['subject'] = [] for s in bibjson.subjects(): forminfo['subject'].append(s['code']) forminfo['owner'] = obj.owner if obj.editor_group is not None: forminfo['editor_group'] = obj.editor_group if obj.editor is not None: forminfo['editor'] = obj.editor # old fields - only show them if the values actually exist in the journal record if bibjson.author_pays: forminfo['author_pays'] = bibjson.author_pays if bibjson.author_pays_url: forminfo['author_pays_url'] = bibjson.author_pays_url if bibjson.oa_end: forminfo['oa_end_year'] = bibjson.oa_end.get('year') return forminfo
def create_account_on_suggestion_approval(suggestion, journal): o = Account.pull(suggestion.owner) if o: flash('Account {username} already exists, so simply associating the new journal with it.'.format(username=o.id), 'success') o.add_journal(journal.id) if not o.has_role('publisher'): o.add_role('publisher') o.save() return o suggestion_contact = util.listpop(suggestion.contacts()) if not suggestion_contact.get('email'): msg = ERROR_MSG_TEMPLATE.format(username=o.id, missing_thing='journal contact email in the application') app.logger.error(msg) flash(msg) return o send_info_to = suggestion_contact.get('email') o = Account.make_account( suggestion.owner, name=suggestion_contact.get('name'), email=send_info_to, roles=['publisher'], associated_journal_ids=[journal.id] ) o.save() url_root = request.url_root if url_root.endswith("/"): url_root = url_root[:-1] if not o.reset_token: msg = ERROR_MSG_TEMPLATE.format(username=o.id, missing_thing='reset token') app.logger.error(msg) flash(msg) return o reset_url = url_root + url_for('account.reset', reset_token=o.reset_token) forgot_pw_url = url_root + url_for('account.forgot') password_create_timeout_seconds = int(app.config.get("PASSWORD_CREATE_TIMEOUT", app.config.get('PASSWORD_RESET_TIMEOUT', 86400) * 14)) password_create_timeout_days = password_create_timeout_seconds / (60*60*24) to = [send_info_to] fro = app.config.get('SYSTEM_EMAIL_FROM', '*****@*****.**') subject = app.config.get("SERVICE_NAME","") + " - account created" try: if app.config.get("ENABLE_PUBLISHER_EMAIL", False): app_email.send_mail(to=to, fro=fro, subject=subject, template_name="email/account_created.txt", reset_url=reset_url, username=o.id, timeout_days=password_create_timeout_days, forgot_pw_url=forgot_pw_url ) flash('Sent email to ' + send_info_to + ' to tell them about the new account.', 'success') else: flash('Did not email to ' + send_info_to + ' to tell them about the new account, as publisher emailing is disabled.', 'error') if app.config.get('DEBUG',False): util.flash_with_url('Debug mode - url for create is <a href="{url}">{url}</a>'.format(url=reset_url)) except Exception as e: magic = str(uuid.uuid1()) util.flash_with_url('Hm, sending the account creation email didn\'t work. Please quote this magic number when reporting the issue: ' + magic + ' . Thank you!', 'error') if app.config.get('DEBUG',False): util.flash_with_url('Debug mode - url for create is <a href="{url}">{url}</a>'.format(url=reset_url)) app.logger.error(magic + "\n" + repr(e)) raise e flash('Account {username} created'.format(username=o.id), 'success') return o
def obj2form(obj): forminfo = {} bibjson = obj.bibjson() forminfo['title'] = bibjson.title forminfo['url'] = bibjson.get_single_url(urltype='homepage') forminfo['alternative_title'] = bibjson.alternative_title forminfo['pissn'] = listpop(bibjson.get_identifiers(idtype=bibjson.P_ISSN)) forminfo['eissn'] = listpop(bibjson.get_identifiers(idtype=bibjson.E_ISSN)) forminfo['publisher'] = bibjson.publisher forminfo['society_institution'] = bibjson.institution forminfo['platform'] = bibjson.provider forminfo['contact_name'] = listpop(obj.contacts(), {}).get('name') forminfo['contact_email'] = listpop(obj.contacts(), {}).get('email') forminfo['confirm_contact_email'] = forminfo['contact_email'] forminfo['country'] = bibjson.country apc = bibjson.apc if apc: forminfo['processing_charges'] = forms.reverse_interpret_special(True) forminfo['processing_charges_currency'] = apc.get('currency') forminfo['processing_charges_amount'] = apc.get('average_price') else: forminfo['processing_charges'] = forms.reverse_interpret_special(False) submission_charges = bibjson.submission_charges if submission_charges: forminfo['submission_charges'] = forms.reverse_interpret_special(True) forminfo['submission_charges_currency'] = submission_charges.get('currency') forminfo['submission_charges_amount'] = submission_charges.get('average_price') else: forminfo['submission_charges'] = forms.reverse_interpret_special(False) articles_last_year = obj.articles_last_year if articles_last_year: forminfo['articles_last_year'] = articles_last_year.get('count') forminfo['articles_last_year_url'] = articles_last_year.get('url') forminfo['waiver_policy_url'] = bibjson.get_single_url(urltype='waiver_policy') forminfo['waiver_policy'] = forminfo['waiver_policy_url'] == '' # checkboxes archiving_policies = forms.reverse_interpret_special(bibjson.archiving_policy.get('policy', []), field='digital_archiving_policy') # for backwards compatibility we keep the "Other" field first in the reverse xwalk # previously we didn't store which free text value was which (Other, or specific national library) # so in those cases, just put it in "Other", it'll be correct most of the time archiving_policies, forminfo['digital_archiving_policy_other'] = \ forms.reverse_interpret_other(archiving_policies, forms.digital_archiving_policy_choices_list) archiving_policies, forminfo['digital_archiving_policy_library'] = \ forms.reverse_interpret_other( archiving_policies, forms.digital_archiving_policy_choices_list, other_value=forms.digital_archiving_policy_specific_library_value, replace_label=forms.digital_archiving_policy_specific_library_label ) forminfo['digital_archiving_policy'] = archiving_policies forminfo['digital_archiving_policy_url'] = bibjson.archiving_policy.get('url') forminfo['crawl_permission'] = forms.reverse_interpret_special(bibjson.allows_fulltext_indexing) # checkboxes article_ids = forms.reverse_interpret_special(bibjson.persistent_identifier_scheme) article_ids, forminfo['article_identifiers_other'] = \ forms.reverse_interpret_other(article_ids, forms.article_identifiers_choices_list) forminfo['article_identifiers'] = article_ids forminfo['metadata_provision'] = forms.reverse_interpret_special(obj.article_metadata) forminfo['download_statistics'] = forms.reverse_interpret_special(bibjson.article_statistics.get('statistics')) forminfo['download_statistics_url'] = bibjson.article_statistics.get('url') forminfo['first_fulltext_oa_year'] = bibjson.oa_start.get('year') # checkboxes forminfo['fulltext_format'], forminfo['fulltext_format_other'] = \ forms.reverse_interpret_other(bibjson.format, forms.fulltext_format_choices_list) forminfo['keywords'] = bibjson.keywords forminfo['languages'] = bibjson.language forminfo['editorial_board_url'] = bibjson.get_single_url('editorial_board') forminfo['review_process'] = bibjson.editorial_review.get('process') forminfo['review_process_url'] = bibjson.editorial_review.get('url') forminfo['aims_scope_url'] = bibjson.get_single_url('aims_scope') forminfo['instructions_authors_url'] = bibjson.get_single_url('author_instructions') forminfo['plagiarism_screening'] = forms.reverse_interpret_special(bibjson.plagiarism_detection.get('detection')) forminfo['plagiarism_screening_url'] = bibjson.plagiarism_detection.get('url') forminfo['publication_time'] = bibjson.publication_time forminfo['oa_statement_url'] = bibjson.get_single_url('oa_statement') license = bibjson.get_license() license = license if license else {} # reinterpret the None val forminfo['license'], forminfo['license_other'] = forms.reverse_interpret_other(license.get('type'), forms.license_choices_list) if forminfo['license_other']: forminfo['license_checkbox'] = [] if license.get('BY'): forminfo['license_checkbox'].append('BY') if license.get('SA'): forminfo['license_checkbox'].append('SA') if license.get('NC'): forminfo['license_checkbox'].append('NC') if license.get('ND'): forminfo['license_checkbox'].append('ND') forminfo['license_url'] = license.get('url') forminfo['open_access'] = forms.reverse_interpret_special(license.get('open_access')) forminfo['license_embedded'] = forms.reverse_interpret_special(license.get('embedded')) forminfo['license_embedded_url'] = license.get('embedded_example_url') # checkboxes forminfo['deposit_policy'], forminfo['deposit_policy_other'] = \ forms.reverse_interpret_other(forms.reverse_interpret_special(bibjson.deposit_policy), forms.deposit_policy_choices_list) forminfo['copyright'], forminfo['copyright_other'] = \ forms.reverse_interpret_other( forms.reverse_interpret_special(bibjson.author_copyright.get('copyright')), forms.ternary_choices_list ) forminfo['copyright_url'] = bibjson.author_copyright.get('url') forminfo['publishing_rights'], forminfo['publishing_rights_other'] = \ forms.reverse_interpret_other( forms.reverse_interpret_special(bibjson.author_publishing_rights.get('publishing_rights')), forms.ternary_choices_list ) forminfo['publishing_rights_url'] = bibjson.author_publishing_rights.get('url') forminfo['suggester_name'] = obj.suggester.get('name') forminfo['suggester_email'] = obj.suggester.get('email') forminfo['suggester_email_confirm'] = forminfo['suggester_email'] forminfo['application_status'] = obj.application_status forminfo['notes'] = obj.notes() forminfo['subject'] = [] for s in bibjson.subjects(): forminfo['subject'].append(s['code']) forminfo['owner'] = obj.owner if obj.editor_group is not None: forminfo['editor_group'] = obj.editor_group if obj.editor is not None: forminfo['editor'] = obj.editor return forminfo
def obj2form(cls, obj): forminfo = {} bibjson = obj.bibjson() forminfo['title'] = bibjson.title forminfo['url'] = bibjson.get_single_url(urltype='homepage') forminfo['alternative_title'] = bibjson.alternative_title forminfo['pissn'] = listpop(bibjson.get_identifiers(idtype=bibjson.P_ISSN)) forminfo['eissn'] = listpop(bibjson.get_identifiers(idtype=bibjson.E_ISSN)) forminfo['publisher'] = bibjson.publisher forminfo['society_institution'] = bibjson.institution forminfo['platform'] = bibjson.provider forminfo['contact_name'] = listpop(obj.contacts(), {}).get('name') forminfo['contact_email'] = listpop(obj.contacts(), {}).get('email') forminfo['confirm_contact_email'] = forminfo['contact_email'] forminfo['country'] = bibjson.country apc = bibjson.apc if apc: forminfo['processing_charges'] = reverse_interpret_special(True) forminfo['processing_charges_currency'] = apc.get('currency') forminfo['processing_charges_amount'] = apc.get('average_price') else: forminfo['processing_charges'] = reverse_interpret_special(False) forminfo['processing_charges_url'] = bibjson.apc_url submission_charges = bibjson.submission_charges if submission_charges: forminfo['submission_charges'] = reverse_interpret_special(True) forminfo['submission_charges_currency'] = submission_charges.get('currency') forminfo['submission_charges_amount'] = submission_charges.get('average_price') else: forminfo['submission_charges'] = reverse_interpret_special(False) forminfo['submission_charges_url'] = bibjson.submission_charges_url articles_last_year = obj.articles_last_year if articles_last_year: forminfo['articles_last_year'] = articles_last_year.get('count') forminfo['articles_last_year_url'] = articles_last_year.get('url') forminfo['waiver_policy_url'] = bibjson.get_single_url(urltype='waiver_policy') forminfo['waiver_policy'] = reverse_interpret_special(forminfo['waiver_policy_url'] is not None and forminfo['waiver_policy_url'] != '') #archiving_policies = reverse_interpret_special(bibjson.archiving_policy.get('policy', []), field='digital_archiving_policy') #substitutions = [ # {"default": Choices.digital_archiving_policy_val("library"), "field" : "digital_archiving_policy_library" }, # {"default": Choices.digital_archiving_policy_val("other"), "field" : "digital_archiving_policy_other"} #] #archiving_policies, special_fields = interpret_list( # archiving_policies, # current values # Choices.digital_archiving_policy_list(), # allowed values # substitutions # substitution instructions #) #forminfo.update(special_fields) # checkboxes archiving_policies = reverse_interpret_special(bibjson.archiving_policy.get('policy', []), field='digital_archiving_policy') # for backwards compatibility we keep the "Other" field first in the reverse xwalk # previously we didn't store which free text value was which (Other, or specific national library) # so in those cases, just put it in "Other", it'll be correct most of the time archiving_policies, forminfo['digital_archiving_policy_other'] = \ reverse_interpret_other(archiving_policies, Choices.digital_archiving_policy_list()) archiving_policies, forminfo['digital_archiving_policy_library'] = \ reverse_interpret_other( archiving_policies, Choices.digital_archiving_policy_list(), other_value=Choices.digital_archiving_policy_val("library"), replace_label=Choices.digital_archiving_policy_label("library") ) forminfo['digital_archiving_policy'] = archiving_policies forminfo['digital_archiving_policy_url'] = bibjson.archiving_policy.get('url') forminfo['crawl_permission'] = reverse_interpret_special(bibjson.allows_fulltext_indexing) # checkboxes article_ids = reverse_interpret_special(bibjson.persistent_identifier_scheme) article_ids, forminfo['article_identifiers_other'] = \ reverse_interpret_other(article_ids, Choices.article_identifiers_list()) forminfo['article_identifiers'] = article_ids forminfo['metadata_provision'] = reverse_interpret_special(obj.article_metadata) forminfo['download_statistics'] = reverse_interpret_special(bibjson.article_statistics.get('statistics')) forminfo['download_statistics_url'] = bibjson.article_statistics.get('url') forminfo['first_fulltext_oa_year'] = bibjson.oa_start.get('year') # checkboxes forminfo['fulltext_format'], forminfo['fulltext_format_other'] = \ reverse_interpret_other(bibjson.format, Choices.fulltext_format_list()) forminfo['keywords'] = bibjson.keywords forminfo['languages'] = bibjson.language forminfo['editorial_board_url'] = bibjson.get_single_url('editorial_board') forminfo['review_process'] = bibjson.editorial_review.get('process') forminfo['review_process_url'] = bibjson.editorial_review.get('url') forminfo['aims_scope_url'] = bibjson.get_single_url('aims_scope') forminfo['instructions_authors_url'] = bibjson.get_single_url('author_instructions') forminfo['plagiarism_screening'] = reverse_interpret_special(bibjson.plagiarism_detection.get('detection')) forminfo['plagiarism_screening_url'] = bibjson.plagiarism_detection.get('url') forminfo['publication_time'] = bibjson.publication_time forminfo['oa_statement_url'] = bibjson.get_single_url('oa_statement') license = bibjson.get_license() license = license if license else {} # reinterpret the None val forminfo['license'], forminfo['license_other'] = reverse_interpret_other(license.get('type'), Choices.licence_list()) if forminfo['license_other']: forminfo['license_checkbox'] = [] if license.get('BY'): forminfo['license_checkbox'].append('BY') if license.get('SA'): forminfo['license_checkbox'].append('SA') if license.get('NC'): forminfo['license_checkbox'].append('NC') if license.get('ND'): forminfo['license_checkbox'].append('ND') forminfo['license_url'] = license.get('url') forminfo['open_access'] = reverse_interpret_special(license.get('open_access')) forminfo['license_embedded'] = reverse_interpret_special(license.get('embedded')) forminfo['license_embedded_url'] = license.get('embedded_example_url') # checkboxes forminfo['deposit_policy'], forminfo['deposit_policy_other'] = \ reverse_interpret_other(reverse_interpret_special(bibjson.deposit_policy), Choices.deposit_policy_list()) forminfo['copyright'], forminfo['copyright_other'] = \ reverse_interpret_other( reverse_interpret_special(bibjson.author_copyright.get('copyright', '')), Choices.ternary_list() ) forminfo['copyright_url'] = bibjson.author_copyright.get('url') forminfo['publishing_rights'], forminfo['publishing_rights_other'] = \ reverse_interpret_other( reverse_interpret_special(bibjson.author_publishing_rights.get('publishing_rights', '')), Choices.ternary_list() ) forminfo['publishing_rights_url'] = bibjson.author_publishing_rights.get('url') forminfo['suggester_name'] = obj.suggester.get('name') forminfo['suggester_email'] = obj.suggester.get('email') forminfo['suggester_email_confirm'] = forminfo['suggester_email'] forminfo['application_status'] = obj.application_status forminfo['notes'] = obj.notes() forminfo['subject'] = [] for s in bibjson.subjects(): forminfo['subject'].append(s['code']) forminfo['owner'] = obj.owner if obj.editor_group is not None: forminfo['editor_group'] = obj.editor_group if obj.editor is not None: forminfo['editor'] = obj.editor return forminfo