Ejemplo n.º 1
0
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')
Ejemplo n.º 2
0
def title(filename=None):
    form = TitleForm()

    # Process POST
    # if request.method == 'POST' and form.validate_on_submit():
    if request.method == 'POST':
        new_page = PAGE_DATA_TABLE_SELECT
        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)

        if 'Next' in request.form:
            new_page = PAGE_DATA_TABLE_SELECT
        elif BTN_HIDDEN_CHECK in request.form:
            new_page = PAGE_CHECK
        elif BTN_HIDDEN_SAVE in request.form:
            new_page = PAGE_TITLE
        elif BTN_HIDDEN_DOWNLOAD in request.form:
            new_page = PAGE_DOWNLOAD
        elif BTN_HIDDEN_NEW in request.form:
            new_page = PAGE_CREATE
        elif BTN_HIDDEN_OPEN in request.form:
            new_page = PAGE_OPEN
        elif BTN_HIDDEN_CLOSE in request.form:
            new_page = PAGE_CLOSE

        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)
Ejemplo n.º 3
0
def populate_method_step_form(form: MethodStepForm, ms_node: Node):
    description = ''
    instrumentation = ''

    if ms_node:
        description_node = ms_node.find_child(names.DESCRIPTION)
        if description_node:
            if description_node.content:
                description = description_node.content
            else:
                section_node = description_node.find_child(names.SECTION)
                if section_node:
                    description = remove_paragraph_tags(section_node.content)
                else:
                    para_node = description_node.find_child(names.PARA)
                    if para_node:
                        description = para_node.content

        instrumentation_node = ms_node.find_child(names.INSTRUMENTATION)
        if instrumentation_node:
            instrumentation = instrumentation_node.content

        form.description.data = remove_paragraph_tags(description)
        form.instrumentation.data = instrumentation
    form.md5.data = form_md5(form)
Ejemplo n.º 4
0
def populate_project_form(form: ProjectForm, project_node: Node):
    title = ''
    abstract = ''

    if project_node:
        title_node = project_node.find_child(names.TITLE)
        if title_node:
            title = title_node.content

        abstract_node = project_node.find_child(names.ABSTRACT)
        if abstract_node:
            abstract = abstract_node.content
            if not abstract:
                para_node = abstract_node.find_child(names.PARA)
                if para_node:
                    abstract = para_node.content
                else:
                    section_node = abstract_node.find_child(names.SECTION)
                    if section_node:
                        abstract = section_node.content
            abstract = abstract

        form.title.data = title
        form.abstract.data = remove_paragraph_tags(abstract)
    form.md5.data = form_md5(form)
Ejemplo n.º 5
0
def populate_taxonomic_coverage_form(form: TaxonomicCoverageForm, node: Node):
    general_taxonomic_coverage_node = node.find_child(
        names.GENERALTAXONOMICCOVERAGE)
    if general_taxonomic_coverage_node:
        form.general_taxonomic_coverage.data = general_taxonomic_coverage_node.content

    hierarchy = []
    taxonomic_classification_node = node.find_child(
        names.TAXONOMICCLASSIFICATION)
    populate_taxonomic_coverage_form_aux(hierarchy,
                                         taxonomic_classification_node)
    form.hierarchy.data = hierarchy[::-1]

    first_taxon = hierarchy[-1]
    form.taxon_value.data = first_taxon[1]
    taxon_rank = first_taxon[0].capitalize()
    if (taxon_rank, taxon_rank) in form.taxon_rank.choices:
        form.taxon_rank.data = taxon_rank
    if first_taxon[5]:
        form.taxonomic_authority.data = first_taxon[5]
    have_links = False
    for taxon in hierarchy:
        if taxon[4]:
            have_links = True
            break
    form.md5.data = form_md5(form)
    return have_links
Ejemplo n.º 6
0
def populate_method_step_form(form: MethodStepForm, ms_node: Node):
    description = ''
    instrumentation = ''
    data_sources = ''

    if ms_node:
        description_node = ms_node.find_child(names.DESCRIPTION)
        if description_node:
            description = display_texttype_node(description_node)
            if data_sources_marker_begin in description and data_sources_marker_end in description:
                begin = description.find(data_sources_marker_begin)
                end = description.find(data_sources_marker_end)
                data_sources = description[begin +
                                           len(data_sources_marker_begin) +
                                           1:end - 1]
                description = description[0:begin - 1]

        instrumentation_node = ms_node.find_child(names.INSTRUMENTATION)
        if instrumentation_node:
            instrumentation = instrumentation_node.content

        form.description.data = description
        form.instrumentation.data = instrumentation
        form.data_sources.data = data_sources
    form.md5.data = form_md5(form)
Ejemplo n.º 7
0
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':
        new_page = PAGE_TITLE
        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)

        if 'Next' in request.form:
            new_page = PAGE_CHECK
        elif BTN_HIDDEN_CHECK in request.form:
            new_page = PAGE_CHECK
        elif BTN_HIDDEN_SAVE in request.form:
            new_page = PAGE_DATA_PACKAGE_ID
        elif BTN_HIDDEN_DOWNLOAD in request.form:
            new_page = PAGE_DOWNLOAD
        elif BTN_HIDDEN_NEW in request.form:
            new_page = PAGE_CREATE
        elif BTN_HIDDEN_OPEN in request.form:
            new_page = PAGE_OPEN
        elif BTN_HIDDEN_CLOSE in request.form:
            new_page = PAGE_CLOSE

        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')
Ejemplo n.º 8
0
def populate_geographic_coverage_form(form: GeographicCoverageForm, node: Node):
    geographic_description_node = node.find_child(names.GEOGRAPHICDESCRIPTION)
    if geographic_description_node:
        form.geographic_description.data = geographic_description_node.content

    wbc_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.WESTBOUNDINGCOORDINATE
    ])
    if wbc_node:
        form.wbc.data = wbc_node.content
    ebc_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.EASTBOUNDINGCOORDINATE
    ])
    if ebc_node:
        form.ebc.data = ebc_node.content
    nbc_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.NORTHBOUNDINGCOORDINATE
    ])
    if nbc_node:
        form.nbc.data = nbc_node.content
    sbc_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.SOUTHBOUNDINGCOORDINATE
    ])
    if sbc_node:
        form.sbc.data = sbc_node.content

    amin_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.BOUNDINGALTITUDES,
        names.ALTITUDEMINIMUM
    ])
    if amin_node:
        form.amin.data = amin_node.content

    amax_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.BOUNDINGALTITUDES,
        names.ALTITUDEMAXIMUM
    ])
    if amax_node:
        form.amax.data = amax_node.content

    aunits_node = node.find_single_node_by_path([
        names.BOUNDINGCOORDINATES,
        names.BOUNDINGALTITUDES,
        names.ALTITUDEUNITS
    ])
    if aunits_node:
        form.aunits.data = aunits_node.content

    form.md5.data = form_md5(form)
Ejemplo n.º 9
0
def populate_keyword_form(form: KeywordForm, kw_node: Node):
    keyword = ''
    keyword_type = ''

    if kw_node:
        keyword = kw_node.content if kw_node.content else ''
        kw_type = kw_node.attribute_value('keywordType')
        keyword_type = kw_type if kw_type else ''

    form.keyword.data = keyword
    form.keyword_type.data = keyword_type
    form.md5.data = form_md5(form)
Ejemplo n.º 10
0
def publication_info(filename=None):
    form = PublicationInfoForm()

    # Process POST
    # if request.method == 'POST' and form.validate_on_submit():
    if request.method == 'POST':
        if 'Next' in request.form:
            new_page = PAGE_METHOD_STEP_SELECT
        elif BTN_HIDDEN_CHECK in request.form:
            new_page = PAGE_CHECK
        elif BTN_HIDDEN_SAVE in request.form:
            new_page = PAGE_PUBLICATION_INFO
        elif BTN_HIDDEN_DOWNLOAD in request.form:
            new_page = PAGE_DOWNLOAD
        elif BTN_HIDDEN_NEW in request.form:
            new_page = PAGE_CREATE
        elif BTN_HIDDEN_OPEN in request.form:
            new_page = PAGE_OPEN
        elif BTN_HIDDEN_CLOSE in request.form:
            new_page = PAGE_CLOSE
        else:
            new_page = PAGE_PUBLISHER

        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')
Ejemplo n.º 11
0
def render_get_abstract_page(form, filename):
    eml_node = load_eml(filename)
    form.md5.data = form_md5(form)
    set_current_page('abstract')
    help = [get_help('abstract'), get_help('nav')]
    return render_template(
        'abstract.html',
        title='Abstract',
        model_has_complex_texttypes=model_has_complex_texttypes(eml_node),
        filename=filename,
        form=form,
        help=help)
Ejemplo n.º 12
0
def render_get_intellectual_rights_page(form, filename, font_family):
    eml_node = load_eml(filename)
    form.md5.data = form_md5(form)
    set_current_page('intellectual_rights')
    help = [get_help('intellectual_rights')]

    return render_template(
        'intellectual_rights.html',
        title='Intellectual Rights',
        font_family=font_family,
        model_has_complex_texttypes=model_has_complex_texttypes(eml_node),
        filename=filename,
        form=form,
        help=help)
Ejemplo n.º 13
0
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)
Ejemplo n.º 14
0
def populate_access_rule_form(form: AccessForm, allow_node: Node):
    userid = ''
    permission = ''

    if allow_node:
        principal_node = allow_node.find_child(names.PRINCIPAL)
        if principal_node:
            userid = principal_node.content

        permission_node = allow_node.find_child(names.PERMISSION)
        if permission_node:
            permission = permission_node.content

        form.userid.data = userid
        form.permission.data = permission
        form.md5.data = form_md5(form)
Ejemplo n.º 15
0
def populate_maintenance_form(form: MaintenanceForm, maintenance_node: Node):
    description = ''
    update_frequency = ''

    if maintenance_node:
        description_node = maintenance_node.find_child(names.DESCRIPTION)
        if description_node:
            description = display_texttype_node(description_node)

        update_frequency_node = maintenance_node.find_child(names.MAINTENANCEUPDATEFREQUENCY)
        if update_frequency_node:
            update_frequency = update_frequency_node.content

        form.description.data = description
        form.update_frequency.data = update_frequency
    form.md5.data = form_md5(form)
Ejemplo n.º 16
0
def populate_project_form(form: ProjectForm, project_node: Node):
    title = ''
    abstract = ''

    if project_node:
        title_node = project_node.find_child(names.TITLE)
        if title_node:
            title = title_node.content

        abstract_node = project_node.find_child(names.ABSTRACT)
        post_process_texttype_node(abstract_node)

        funding_node = project_node.find_child(names.FUNDING)
        post_process_texttype_node(funding_node)

        form.title.data = title
        form.abstract.data = display_texttype_node(abstract_node)
        form.funding.data = display_texttype_node(funding_node)
    form.md5.data = form_md5(form)
Ejemplo n.º 17
0
def abstract(filename=None):
    form = AbstractForm(filename=filename)

    # Process POST
    if request.method == 'POST':
        if 'Next' in request.form:
            new_page = PAGE_KEYWORD_SELECT
        elif BTN_HIDDEN_CHECK in request.form:
            new_page = PAGE_CHECK
        elif BTN_HIDDEN_SAVE in request.form:
            new_page = PAGE_ABSTRACT
        elif BTN_HIDDEN_DOWNLOAD in request.form:
            new_page = PAGE_DOWNLOAD
        elif BTN_HIDDEN_NEW in request.form:
            new_page = PAGE_CREATE
        elif BTN_HIDDEN_OPEN in request.form:
            new_page = PAGE_OPEN
        elif BTN_HIDDEN_CLOSE in request.form:
            new_page = PAGE_CLOSE
        else:
            submit_type = None
            new_page = PAGE_KEYWORD_SELECT

        if form.validate_on_submit():
            if is_dirty_form(form):
                abstract = add_paragraph_tags(form.abstract.data)
                create_abstract(filename=filename, abstract=abstract)
            return redirect(url_for(new_page, filename=filename))

    # Process GET
    eml_node = load_eml(filename=filename)
    abstract_node = eml_node.find_single_node_by_path(
        [names.DATASET, names.ABSTRACT])
    if abstract_node:
        form.abstract.data = remove_paragraph_tags(abstract_node.content)
    form.md5.data = form_md5(form)
    set_current_page('abstract')
    help = [get_help('abstract'), get_help('nav')]
    return render_template('abstract.html',
                           title='Abstract',
                           filename=filename,
                           form=form,
                           help=help)
Ejemplo n.º 18
0
def populate_temporal_coverage_form(form: TemporalCoverageForm, node: Node):
    begin_date_node = node.find_single_node_by_path(
        [names.RANGEOFDATES, names.BEGINDATE])
    if begin_date_node:
        calendar_date_node = begin_date_node.find_child(names.CALENDARDATE)
        form.begin_date.data = calendar_date_node.content

        end_date_node = node.find_single_node_by_path(
            [names.RANGEOFDATES, names.ENDDATE])
        if end_date_node:
            calendar_date_node = end_date_node.find_child(names.CALENDARDATE)
            form.end_date.data = calendar_date_node.content
    else:
        single_date_time_node = node.find_child(names.SINGLEDATETIME)
        if single_date_time_node:
            calendar_date_node = single_date_time_node.find_child(
                names.CALENDARDATE)
            form.begin_date.data = calendar_date_node.content

    form.md5.data = form_md5(form)
Ejemplo n.º 19
0
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')
Ejemplo n.º 20
0
def intellectual_rights(filename=None):
    form = IntellectualRightsForm(filename=filename)

    # Process POST
    # if request.method == 'POST' and form.validate_on_submit():
    if request.method == 'POST':
        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

            create_intellectual_rights(filename=filename,
                                       intellectual_rights=intellectual_rights)

        if BTN_HIDDEN_CHECK in request.form:
            new_page = PAGE_CHECK
        elif BTN_HIDDEN_SAVE in request.form:
            new_page = PAGE_INTELLECTUAL_RIGHTS
        elif BTN_HIDDEN_DOWNLOAD in request.form:
            new_page = PAGE_DOWNLOAD
        elif BTN_HIDDEN_NEW in request.form:
            new_page = PAGE_CREATE
        elif BTN_HIDDEN_OPEN in request.form:
            new_page = PAGE_OPEN
        elif BTN_HIDDEN_CLOSE in request.form:
            new_page = PAGE_CLOSE
        else:
            new_page = PAGE_GEOGRAPHIC_COVERAGE_SELECT

        return redirect(url_for(new_page, filename=filename))

    # Process GET
    eml_node = load_eml(filename=filename)
    intellectual_rights_node = eml_node.find_single_node_by_path(
        [names.DATASET, names.INTELLECTUALRIGHTS])
    if intellectual_rights_node:
        ir_content = intellectual_rights_node.content
        if ir_content == INTELLECTUAL_RIGHTS_CC0:
            form.intellectual_rights_radio.data = 'CC0'
            form.intellectual_rights.data = ''
        elif ir_content == INTELLECTUAL_RIGHTS_CC_BY:
            form.intellectual_rights_radio.data = 'CCBY'
            form.intellectual_rights.data = ''
        else:
            form.intellectual_rights_radio.data = "Other"
            form.intellectual_rights.data = intellectual_rights_node.content

    form.md5.data = form_md5(form)

    set_current_page('intellectual_rights')
    help = [get_help('intellectual_rights')]
    return render_template('intellectual_rights.html',
                           title='Intellectual Rights',
                           filename=filename,
                           form=form,
                           help=help)
Ejemplo n.º 21
0
def populate_responsible_party_form(form: ResponsiblePartyForm, node: Node):
    in_node = node.find_child(names.INDIVIDUALNAME)
    if in_node:
        salutation_node = in_node.find_child(names.SALUTATION)
        if salutation_node:
            form.salutation.data = salutation_node.content

        gn_nodes = in_node.find_all_children(names.GIVENNAME)
        if gn_nodes:
            form.gn.data = gn_nodes[0].content
            if len(gn_nodes) > 1:
                form.mn.data = gn_nodes[1].content

        sn_node = in_node.find_child(names.SURNAME)
        if sn_node:
            form.sn.data = sn_node.content

    user_id_node = node.find_child(names.USERID)
    if user_id_node:
        form.user_id.data = user_id_node.content

    organization_node = node.find_child(names.ORGANIZATIONNAME)
    if organization_node:
        form.organization.data = organization_node.content

    position_name_node = node.find_child(names.POSITIONNAME)
    if position_name_node:
        form.position_name.data = position_name_node.content

    address_node = node.find_child(names.ADDRESS)

    if address_node:
        delivery_point_nodes = \
            address_node.find_all_children(names.DELIVERYPOINT)
        if len(delivery_point_nodes) > 0:
            form.address_1.data = delivery_point_nodes[0].content
        if len(delivery_point_nodes) > 1:
            form.address_2.data = delivery_point_nodes[1].content

        city_node = address_node.find_child(names.CITY)
        if city_node:
            form.city.data = city_node.content

        administrative_area_node = \
            address_node.find_child(names.ADMINISTRATIVEAREA)
        if administrative_area_node:
            form.state.data = administrative_area_node.content

        postal_code_node = address_node.find_child(names.POSTALCODE)
        if postal_code_node:
            form.postal_code.data = postal_code_node.content

        country_node = address_node.find_child(names.COUNTRY)
        if country_node:
            form.country.data = country_node.content

        phone_node = node.find_child(names.PHONE)
        if phone_node:
            form.phone.data = phone_node.content


    phone_nodes = node.find_all_children(names.PHONE)
    for phone_node in phone_nodes:
        phone_type = phone_node.attribute_value('phonetype')
        if phone_type == 'facsimile':
            form.fax.data = phone_node.content
        else:
            form.phone.data = phone_node.content

    email_node = node.find_child(names.ELECTRONICMAILADDRESS)
    if email_node:
        form.email.data = email_node.content

    online_url_node = node.find_child(names.ONLINEURL)
    if online_url_node:
        form.online_url.data = online_url_node.content

    role_node = node.find_child(names.ROLE)
    if role_node:
        form.role.data = role_node.content

    form.md5.data = form_md5(form)