def data_package_id(filename=None): form = DataPackageIDForm() eml_node = load_eml(filename=filename) # Process POST # if request.method == 'POST' and form.validate_on_submit(): if request.method == 'POST': save = False if is_dirty_form(form): save = True if save: data_package_id = form.data_package_id.data create_data_package_id(data_package_id, filename) set_active_packageid(data_package_id) form.md5.data = form_md5(form) new_page = PAGE_TITLE this_page = PAGE_DATA_PACKAGE_ID new_page = handle_hidden_buttons(new_page, this_page) return redirect(url_for(new_page, filename=filename)) # Process GET data_package_id = eml_node.attribute_value('packageId') form.data_package_id.data = data_package_id if data_package_id else '' form.md5.data = form_md5(form) set_current_page('data_package_id') help = get_helps(['data_package_id']) return render_template('data_package_id.html', form=form, help=help, title='Data Package ID')
def abstract(filename=None): form = AbstractForm(filename=filename) # Process POST if request.method == 'POST': form_value = request.form form_dict = form_value.to_dict(flat=False) if form_dict: if 'Reset' in form_dict: # User has elected to reset to last valid saved state return get_abstract(filename, form) new_page = PAGE_KEYWORD_SELECT this_page = PAGE_ABSTRACT new_page = handle_hidden_buttons(new_page, this_page) if form.validate_on_submit(): if is_dirty_form(form): abstract = form.abstract.data valid, msg = is_valid_xml_fragment(abstract, names.ABSTRACT) if valid: create_abstract(filename=filename, abstract=abstract) return redirect(url_for(new_page, filename=filename)) else: flash(invalid_xml_error_message(msg), 'error') return render_get_abstract_page(form, filename) else: return redirect(url_for(new_page, filename=filename)) # Process GET return get_abstract(filename, form)
def maintenance(filename=None): form = MaintenanceForm(filename=filename) eml_node = load_eml(filename=filename) if eml_node: dataset_node = eml_node.find_child(names.DATASET) if not dataset_node: dataset_node = Node(names.DATASET, parent=eml_node) add_child(eml_node, dataset_node) # Process POST if request.method == 'POST' and BTN_CANCEL in request.form: url = url_for(PAGE_MAINTENANCE, filename=filename) return redirect(url) if request.method == 'POST' and form.validate_on_submit(): save = False if is_dirty_form(form): save = True if save: maintenace_description = form.description.data valid, msg = is_valid_xml_fragment(maintenace_description, names.MAINTENANCE) if not valid: flash(invalid_xml_error_message(msg, False, names.DESCRIPTION), 'error') return render_get_maintenance_page(eml_node, form, filename) update_frequency = form.update_frequency.data create_maintenance(dataset_node, maintenace_description, update_frequency) save_both_formats(filename=filename, eml_node=eml_node) form_value = request.form form_dict = form_value.to_dict(flat=False) new_page = PAGE_MAINTENANCE if form_dict: for key in form_dict: val = form_dict[key][0] # value is the first list element if val == BTN_SAVE_AND_CONTINUE: new_page = PAGE_PUBLISHER else: new_page = handle_hidden_buttons(new_page, PAGE_MAINTENANCE) return redirect(url_for(new_page, filename=filename)) # Process GET if dataset_node: maintenance_node = dataset_node.find_child(names.MAINTENANCE) if maintenance_node: populate_maintenance_form(form, maintenance_node) return render_get_maintenance_page(eml_node, form, filename)
def intellectual_rights(filename=None): form = IntellectualRightsForm(filename=filename) # Process POST if request.method == 'POST' and form.validate_on_submit(): form_value = request.form form_dict = form_value.to_dict(flat=False) if form_dict: if 'Reset' in form_dict: # User has elected to reset to last valid saved state return get_intellectual_rights(filename, form) submit_type = None if is_dirty_form(form): submit_type = 'Save Changes' if submit_type == 'Save Changes': if form.intellectual_rights_radio.data == 'CC0': intellectual_rights = INTELLECTUAL_RIGHTS_CC0 elif form.intellectual_rights_radio.data == 'CCBY': intellectual_rights = INTELLECTUAL_RIGHTS_CC_BY else: intellectual_rights = form.intellectual_rights.data valid, msg = is_valid_xml_fragment(intellectual_rights, names.INTELLECTUALRIGHTS) if valid: create_intellectual_rights( filename=filename, intellectual_rights=intellectual_rights) else: flash(invalid_xml_error_message(msg), 'error') form.intellectual_rights.data = intellectual_rights # We don't have valid XML, so we can't look for literal descendant nodes font_family = '' return render_get_intellectual_rights_page( form, filename, font_family) new_page = PAGE_GEOGRAPHIC_COVERAGE_SELECT this_page = PAGE_INTELLECTUAL_RIGHTS new_page = handle_hidden_buttons(new_page, this_page) return redirect(url_for(new_page, filename=filename)) # Process GET return get_intellectual_rights(filename=filename, form=form)
def publication_info(filename=None): form = PublicationInfoForm() # Process POST # if request.method == 'POST' and form.validate_on_submit(): if request.method == 'POST': new_page = PAGE_METHOD_STEP_SELECT this_page = PAGE_PUBLICATION_INFO new_page = handle_hidden_buttons(new_page, this_page) save = False if is_dirty_form(form): save = True if save: pubplace = form.pubplace.data pubdate = form.pubdate.data create_pubinfo(pubplace=pubplace, pubdate=pubdate, filename=filename) return redirect(url_for(new_page, filename=filename)) # Process GET eml_node = load_eml(filename=filename) pubplace_node = eml_node.find_single_node_by_path( [names.DATASET, names.PUBPLACE]) if pubplace_node: form.pubplace.data = pubplace_node.content pubdate_node = eml_node.find_single_node_by_path( [names.DATASET, names.PUBDATE]) if pubdate_node: form.pubdate.data = pubdate_node.content form.md5.data = form_md5(form) set_current_page('publication_info') help = get_helps(['pubplace', 'pubdate']) return render_template('publication_info.html', help=help, form=form, title='Publication Info')
def title(filename=None): log_info(f'Title') form = TitleForm() # Process POST if request.method == 'POST' and form.validate_on_submit(): save = False if is_dirty_form(form): save = True if save: create_title(title=form.title.data, filename=filename) form.md5.data = form_md5(form) new_page = PAGE_DATA_TABLE_SELECT this_page = PAGE_TITLE new_page = handle_hidden_buttons(new_page, this_page) return redirect(url_for(new_page, filename=filename)) # Process GET eml_node = load_eml(filename=filename) dataset_node = eml_node.find_child(child_name=names.DATASET) title_node = dataset_node.find_child(names.TITLE) if title_node: form.title.data = title_node.content form.md5.data = form_md5(form) set_current_page('title') help = get_helps(['title', 'nav', 'welcome']) first_usage = is_first_usage() return render_template('title.html', title='Title', form=form, help=help, is_first_usage=first_usage)
def project(filename=None, project_node_id=None): form = ProjectForm(filename=filename) eml_node = load_eml(filename=filename) if eml_node: dataset_node = eml_node.find_child(names.DATASET) if not dataset_node: dataset_node = Node(names.DATASET, parent=eml_node) add_child(eml_node, dataset_node) doing_related_project = project_node_id # Process POST if request.method == 'POST' and form.validate_on_submit(): save = False if is_dirty_form(form): save = True # if not node_id: if not doing_related_project: this_page = PAGE_PROJECT else: this_page = PAGE_RELATED_PROJECT_SELECT # FIXME? new_page = None if 'Next' in request.form: # if not node_id: if not doing_related_project: new_page = PAGE_OTHER_ENTITY_SELECT else: new_page = PAGE_RELATED_PROJECT_SELECT elif BTN_PROJECT_PERSONNEL in request.form: new_page = PAGE_PROJECT_PERSONNEL_SELECT elif BTN_FUNDING_AWARDS in request.form: new_page = PAGE_FUNDING_AWARD_SELECT elif BTN_RELATED_PROJECTS in request.form: new_page = PAGE_RELATED_PROJECT_SELECT # doing_related_project = True else: new_page = handle_hidden_buttons(new_page, this_page) if save: abstract = form.abstract.data valid, msg = is_valid_xml_fragment(abstract, names.ABSTRACT) if not valid: flash(invalid_xml_error_message(msg, False, names.ABSTRACT), 'error') return render_get_project_page(eml_node, form, filename, doing_related_project, project_node_id) funding = form.funding.data valid, msg = is_valid_xml_fragment(funding, names.FUNDING) if not valid: flash(invalid_xml_error_message(msg, False, names.FUNDING), 'error') return render_get_project_page(eml_node, form, filename, doing_related_project, project_node_id) title = form.title.data if not doing_related_project: create_project(dataset_node, title, abstract, funding) else: related_project_node = create_related_project( dataset_node, title, abstract, funding, project_node_id) project_node_id = related_project_node.id save_both_formats(filename=filename, eml_node=eml_node) # if not node_id: if not doing_related_project: return redirect(url_for(new_page, filename=filename)) else: # return redirect(url_for(new_page, filename=filename, node_id=None, project_node_id=project_node_id)) return redirect( url_for(new_page, filename=filename, node_id='None', project_node_id=project_node_id)) # Process GET if project_node_id == '1': form.init_md5() elif doing_related_project: related_project_node = Node.get_node_instance(project_node_id) populate_project_form(form, related_project_node) elif dataset_node: project_node = dataset_node.find_child(names.PROJECT) populate_project_form(form, project_node) return render_get_project_page(eml_node, form, filename, doing_related_project, project_node_id)