Ejemplo n.º 1
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=None,
            request=request)
        if isinstance(context, HttpResponseRedirect):
            # sending user to login page
            return context

        extended_metadata_exists = False
        if content_model.metadata.program:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['script_metadata'] = content_model.metadata.program

        # get the helptext for each mp field
        attributes = [(f, f.model if f.model else None) for f in content_model.
                      metadata.scriptspecificmetadata.model._meta.get_fields()
                      if not f.is_relation or f.one_to_one or (
                          f.many_to_one and f.related_model)]
        attribute_dict = {}
        for att in attributes:
            if hasattr(att[0], 'help_text'):
                attribute_dict[att[0].attname] = att[0].help_text
        context["scripthelptext"] = attribute_dict

    else:
        output_form = ScriptForm(instance=content_model.metadata.program,
                                 res_short_id=content_model.short_id,
                                 element_id=content_model.metadata.program.id
                                 if content_model.metadata.program else None)

        ext_md_layout = Layout(
            HTML('<div class="col-sm-12">'
                 '{% load crispy_forms_tags %} '
                 '{% crispy output_form %} '
                 '</div>'), )

        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout,
            request=request)

        context['output_form'] = output_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 2
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=None)
        extended_metadata_exists = False
        if content_model.metadata.model_output or \
                content_model.metadata.executed_by:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['model_output'] = content_model.metadata.model_output
        context['executed_by'] = content_model.metadata.executed_by
    else:
        model_output_form = ModelOutputForm(instance=content_model.metadata.model_output,
                                            res_short_id=content_model.short_id,
                                            element_id=content_model.metadata.model_output.id if content_model.metadata.model_output else None)

        executed_by_form = ExecutedByForm(instance=content_model.metadata.executed_by,
                                          res_short_id=content_model.short_id,
                                          element_id=content_model.metadata.executed_by.id if content_model.metadata.executed_by else None)

        ext_md_layout = Layout(
            AccordionGroup('Model Output (required)',
                           HTML("<div class='form-group' id='modeloutput'> "
                                '{% load crispy_forms_tags %} '
                                '{% crispy model_output_form %} '
                                '</div>'),
                           ),

            AccordionGroup('Executed By (required)',
                           HTML('<div class="form-group" id="executedby"> '
                                '{% load crispy_forms_tags %} '
                                '{% crispy executed_by_form %} '
                                '</div> '),
                           ),
        )


        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout)

        context['resource_type'] = 'Model Instance Resource'
        context['model_output_form'] = model_output_form
        context['executed_by_form'] = executed_by_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 3
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=None, request=request)
        extended_metadata_exists = False
        if content_model.metadata.program:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['script_metadata'] = content_model.metadata.program

        # get the helptext for each mp field
        attributes = [
            (f, f.model if f.model else None)
            for f in content_model.metadata.scriptspecificmetadata.model._meta.get_fields()
            if not f.is_relation
                or f.one_to_one
                or (f.many_to_one and f.related_model)
        ]
        attribute_dict = {}
        for att in attributes:
            if hasattr(att[0], 'help_text'):
                attribute_dict[att[0].attname] = att[0].help_text
        context["scripthelptext"] = attribute_dict

    else:
        output_form = ScriptForm(instance=content_model.metadata.program,
                                 res_short_id=content_model.short_id,
                                 element_id=content_model.metadata.program.id
                                 if content_model.metadata.program else None)

        ext_md_layout = Layout(
                HTML('<div class="col-sm-12">'
                     '{% load crispy_forms_tags %} '
                     '{% crispy output_form %} '
                     '</div>'),
        )

        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout, request=request)

        context['output_form'] = output_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 4
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, request=request, resource_edit=edit_resource,
                                                   extended_metadata_layout=None)
        if isinstance(context, HttpResponseRedirect):
            # sending user to login page
            return context
        extended_metadata_exists = False
        if content_model.metadata.model_output or \
                content_model.metadata.executed_by:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['model_output'] = content_model.metadata.model_output
        context['executed_by'] = content_model.metadata.executed_by
    else:
        model_output_form = ModelOutputForm(instance=content_model.metadata.model_output,
                                            res_short_id=content_model.short_id,
                                            element_id=content_model.metadata.model_output.id if content_model.metadata.model_output else None)

        executed_by_form = ExecutedByForm(instance=content_model.metadata.executed_by,
                                          res_short_id=content_model.short_id,
                                          element_id=content_model.metadata.executed_by.id if content_model.metadata.executed_by else None)

        ext_md_layout = Layout(
                           HTML("<div class='form-group col-xs-12' id='modeloutput'> "
                                '{% load crispy_forms_tags %} '
                                '{% crispy model_output_form %} '
                                '</div>'),
                           HTML('<div class="form-group col-xs-12" id="executedby"> '
                                '{% load crispy_forms_tags %} '
                                '{% crispy executed_by_form %} '
                                '</div> ')
        )


        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout, request=request)

        context['resource_type'] = 'Model Instance Resource'
        context['model_output_form'] = model_output_form
        context['executed_by_form'] = executed_by_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 5
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            request=request,
            resource_edit=edit_resource,
            extended_metadata_layout=None)
        if isinstance(context, HttpResponseRedirect):
            # sending user to login page
            return context

        extended_metadata_exists = False
        if content_model.metadata.program:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['mpmetadata'] = content_model.metadata.program

    else:
        output_form = mp_form(files=content_model.files,
                              instance=content_model.metadata.program,
                              res_short_id=content_model.short_id,
                              element_id=content_model.metadata.program.id
                              if content_model.metadata.program else None)

        ext_md_layout = Layout(
            HTML('<div class="col-sm-12">'
                 '{% load crispy_forms_tags %} '
                 '{% crispy output_form %} '
                 '</div>'), )

        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout,
            request=request)

        context['resource_type'] = 'Model Program Resource'
        context['output_form'] = output_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 6
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    context = page_processors.get_page_context(page,
                                               request.user,
                                               resource_edit=edit_resource,
                                               extended_metadata_layout=None,
                                               request=request)
    extended_metadata_exists = False
    if content_model.metadata.referenceURLs.all().first():
        extended_metadata_exists = True

    context['extended_metadata_exists'] = extended_metadata_exists
    context['site'] = content_model.metadata.sites.all().first()
    context['variable'] = content_model.metadata.variables.all().first()
    context['method'] = content_model.metadata.methods.all().first()
    context['quality_level'] = content_model.metadata.quality_levels.all(
    ).first
    context['referenceURL'] = content_model.metadata.referenceURLs.all().first
    context[
        'download_files_url'] = "/hsapi/_internal/%s/download-refts-resource-bag/" % content_model.short_id
    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 7
0
def add_dublin_core(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)
    context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=None)
    extended_metadata_exists = False
    if content_model.metadata.sites.all().first() or \
            content_model.metadata.variables.all().first() or \
            content_model.metadata.methods.all().first() or \
            content_model.metadata.quality_levels.all().first():
        extended_metadata_exists = True

    wml2_url = ""
    for f in content_model.files.all():
        if 'visual' in str(f.resource_file.name):
            context['visfile'] = f
        if 'wml_2' in str(f.resource_file.name):
            wml2_url = f.resource_file.url

    tools = context.get('relevant_tools')
    if tools:
        for tool in tools:
            tool['url'] = "{}{}{}".format(tool['url'], "&fileurl=", request.build_absolute_uri(wml2_url))
    context['extended_metadata_exists'] = extended_metadata_exists
    context['site'] = content_model.metadata.sites.all().first()
    context['variable'] = content_model.metadata.variables.all().first()
    context['method'] = content_model.metadata.methods.all().first()
    context['quality_level'] = content_model.metadata.quality_levels.all().first
    context['referenceURL'] = content_model.metadata.referenceURLs.all().first
    context['short_id'] = content_model.short_id
    return context
Ejemplo n.º 8
0
def landing_page(request, page):
    """
        A typical Mezzanine page processor.

    """
    content_model = page.get_content_model()
    netcdf_logical_files = content_model.get_logical_files('NetCDFLogicalFile')
    for lf in netcdf_logical_files:
        if lf.metadata.is_dirty:
            msg = "One or more NetCDF files are out of sync with metadata changes."
            # prevent same message being displayed more than once
            msg_exists = False
            storage = get_messages(request)
            for message in storage:
                if message.message == msg:
                    msg_exists = True
                    break
            if not msg_exists:
                messages.info(request, msg)
            break

    edit_resource = page_processors.check_resource_mode(request)
    context = page_processors.get_page_context(page,
                                               request.user,
                                               resource_edit=edit_resource,
                                               extended_metadata_layout=None,
                                               request=request)

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 9
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    # current contained resources list
    collection_items_list = list(content_model.resources.all())

    # get the context from hs_core
    context = page_processors.get_page_context(page,
                                               request.user,
                                               resource_edit=edit_resource,
                                               extended_metadata_layout=None,
                                               request=request)
    if edit_resource:
        user = request.user
        if not user.is_authenticated():
            return HttpResponseForbidden()

        context['collection_candidate'] = get_collectable_resources(
            user, content_model)
        context['collection_res_id'] = content_model.short_id
    elif isinstance(context, HttpResponseRedirect):
        # resource view mode
        # sending user to login page
        return context

    context['deleted_resources'] = content_model.deleted_resources
    context['collection'] = collection_items_list
    context['edit_mode'] = edit_resource

    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 10
0
def _get_resource_view_context(page, request, content_model, selected_series_id, series_ids,
                               extended_metadata_exists):
    # get the context from hs_core
    context = page_processors.get_page_context(page, request.user, resource_edit=False,
                                               extended_metadata_layout=None, request=request)

    context['extended_metadata_exists'] = extended_metadata_exists
    context['selected_series_id'] = selected_series_id
    context['series_ids'] = series_ids
    context['sites'] = [site for site in content_model.metadata.sites if selected_series_id in
                        site.series_ids]
    context['variables'] = [variable for variable in content_model.metadata.variables if
                            selected_series_id in variable.series_ids]
    context['methods'] = [method for method in content_model.metadata.methods if
                          selected_series_id in method.series_ids]
    context['processing_levels'] = [pro_level for pro_level in
                                    content_model.metadata.processing_levels if
                                    selected_series_id in pro_level.series_ids]
    context['timeseries_results'] = [ts_result for ts_result in
                                     content_model.metadata.time_series_results if
                                     selected_series_id in ts_result.series_ids]
    context['utc_offset'] = content_model.metadata.utc_offset.value if \
        content_model.metadata.utc_offset else None

    return context
Ejemplo n.º 11
0
def _get_resource_edit_context(page, request, content_model,
                               selected_series_id, series_ids,
                               ts_result_value_count,
                               extended_metadata_exists):

    from hs_file_types.models.timeseries import create_site_form, create_variable_form, \
        create_method_form, create_processing_level_form, create_timeseries_result_form

    utcoffset_form = None
    if content_model.has_csv_file:
        utc_offset = content_model.metadata.utc_offset
        utcoffset_form = UTCOffSetForm(
            instance=utc_offset,
            res_short_id=content_model.short_id,
            element_id=utc_offset.id if utc_offset else None,
            selected_series_id=selected_series_id)
    # create timeseries specific metadata element forms
    site_form = create_site_form(target=content_model,
                                 selected_series_id=selected_series_id)
    variable_form = create_variable_form(target=content_model,
                                         selected_series_id=selected_series_id)
    method_form = create_method_form(target=content_model,
                                     selected_series_id=selected_series_id)
    processing_level_form = create_processing_level_form(
        target=content_model, selected_series_id=selected_series_id)

    timeseries_result_form = create_timeseries_result_form(
        target=content_model, selected_series_id=selected_series_id)

    ext_md_layout = Layout(UpdateSQLiteLayout, SeriesSelectionLayout,
                           TimeSeriesMetaDataLayout, UTCOffSetLayout)

    if content_model.files.all().count() == 0:
        ext_md_layout = Layout(
            HTML("""<div class="alert alert-warning"><strong>No resource
        specific metadata is available. Add an ODM2 SQLite file or CSV file to see
        metadata.</strong></div>"""))

    # get the context from hs_core
    context = page_processors.get_page_context(
        page,
        request.user,
        resource_edit=True,
        extended_metadata_layout=ext_md_layout,
        request=request)

    # customize base context
    context['extended_metadata_exists'] = extended_metadata_exists
    context['resource_type'] = 'Time Series Resource'
    context['selected_series_id'] = selected_series_id
    context['series_ids'] = series_ids
    context['utcoffset_form'] = utcoffset_form
    context['site_form'] = site_form
    context['variable_form'] = variable_form
    context['method_form'] = method_form
    context['processing_level_form'] = processing_level_form
    context['timeseries_result_form'] = timeseries_result_form
    return context
Ejemplo n.º 12
0
def landing_page(request, page):
    """
        A typical Mezzanine page processor.

    """
    content_model = page.get_content_model()
    netcdf_logical_files = content_model.get_logical_files('NetCDFLogicalFile')
    for lf in netcdf_logical_files:
        if lf.metadata.is_dirty:
            msg = "One or more NetCDF files are out of sync with metadata changes."
            # prevent same message being displayed more than once
            msg_exists = False
            storage = get_messages(request)
            for message in storage:
                if message.message == msg:
                    msg_exists = True
                    break
            if not msg_exists:
                messages.info(request, msg)
            break

    timeseries_logical_files = content_model.get_logical_files(
        'TimeSeriesLogicalFile')
    for lf in timeseries_logical_files:
        if lf.metadata.is_dirty:
            msg = "One or more SQLite files are out of sync with metadata changes."
            # prevent same message being displayed more than once
            msg_exists = False
            storage = get_messages(request)
            for message in storage:
                if message.message == msg:
                    msg_exists = True
                    break
            if not msg_exists:
                messages.info(request, msg)
            break

    edit_resource = page_processors.check_resource_mode(request)
    context = page_processors.get_page_context(page,
                                               request.user,
                                               resource_edit=edit_resource,
                                               extended_metadata_layout=None,
                                               request=request)

    if isinstance(context, HttpResponseRedirect):
        # sending user to login page
        return context

    file_type_missing_metadata = {
        'file_type_missing_metadata':
        content_model.get_missing_file_type_metadata_info()
    }
    context.update(file_type_missing_metadata)
    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    # sending user to resource landing page
    return context
Ejemplo n.º 13
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    user = request.user
    if user.is_authenticated():
        user_all_accessible_resource_list = get_my_resources_list(user)
    else:  # anonymous user
        user_all_accessible_resource_list = list(
            BaseResource.discoverable_resources.all())

    # resource is collectable if
    # 1) Shareable=True
    # 2) OR, current user is a owner of it
    user_all_collectable_resource_list = []
    for res in user_all_accessible_resource_list:
        if res.raccess.shareable or res.raccess.owners.filter(
                pk=user.pk).exists():
            user_all_collectable_resource_list.append(res)

    # current contained resources list
    collection_items_list = list(content_model.resources.all())

    # get the context from hs_core
    context = page_processors.get_page_context(page,
                                               request.user,
                                               resource_edit=edit_resource,
                                               extended_metadata_layout=None,
                                               request=request)
    if edit_resource:
        candidate_resources_list = []
        for res in user_all_collectable_resource_list:
            if content_model.short_id == res.short_id:
                continue  # skip current collection resource object
            elif res in content_model.resources.all():
                continue  # skip resources that are already in current collection

            candidate_resources_list.append(res)

        context['collection_candidate'] = candidate_resources_list
        context['collection_res_id'] = content_model.short_id
    elif isinstance(context, HttpResponseRedirect):
        # resource view mode
        # sending user to login page
        return context

    context['deleted_resources'] = content_model.deleted_resources.all()
    context['collection'] = collection_items_list
    context['edit_mode'] = edit_resource

    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 14
0
def _get_resource_edit_context(page, request, content_model, selected_series_id, series_ids,
                               ts_result_value_count, extended_metadata_exists):

    from hs_file_types.models.timeseries import create_site_form, create_variable_form, \
        create_method_form, create_processing_level_form, create_timeseries_result_form

    utcoffset_form = None
    if content_model.has_csv_file:
        utc_offset = content_model.metadata.utc_offset
        utcoffset_form = UTCOffSetForm(instance=utc_offset,
                                       res_short_id=content_model.short_id,
                                       element_id=utc_offset.id if utc_offset else None,
                                       selected_series_id=selected_series_id)
    # create timeseries specific metadata element forms
    site_form = create_site_form(target=content_model, selected_series_id=selected_series_id)
    variable_form = create_variable_form(target=content_model,
                                         selected_series_id=selected_series_id)
    method_form = create_method_form(target=content_model, selected_series_id=selected_series_id)
    processing_level_form = create_processing_level_form(target=content_model,
                                                         selected_series_id=selected_series_id)

    timeseries_result_form = create_timeseries_result_form(target=content_model,
                                                           selected_series_id=selected_series_id)

    ext_md_layout = Layout(UpdateSQLiteLayout,
                           SeriesSelectionLayout,
                           TimeSeriesMetaDataLayout,
                           UTCOffSetLayout)

    if content_model.files.all().count() == 0:
        ext_md_layout = Layout(HTML("""<div class="alert alert-warning"><strong>No resource
        specific metadata is available. Add an ODM2 SQLite file or CSV file to see
        metadata.</strong></div>"""))

    # get the context from hs_core
    context = page_processors.get_page_context(page, request.user, resource_edit=True,
                                               extended_metadata_layout=ext_md_layout,
                                               request=request)

    # customize base context
    context['extended_metadata_exists'] = extended_metadata_exists
    context['resource_type'] = 'Time Series Resource'
    context['selected_series_id'] = selected_series_id
    context['series_ids'] = series_ids
    context['utcoffset_form'] = utcoffset_form
    context['site_form'] = site_form
    context['variable_form'] = variable_form
    context['method_form'] = method_form
    context['processing_level_form'] = processing_level_form
    context['timeseries_result_form'] = timeseries_result_form
    return context
Ejemplo n.º 15
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=None)
        extended_metadata_exists = False
        if content_model.metadata.program:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['mpmetadata'] = content_model.metadata.program


    else:
        output_form = mp_form(files=content_model.files, instance=content_model.metadata.program,
                              res_short_id=content_model.short_id,
                              element_id=content_model.metadata.program.id if content_model.metadata.program else None)

        ext_md_layout = Layout(
                        HTML("<div class='form-group col-lg-4 col-xs-12' id='site'> "
                                '{% load crispy_forms_tags %} '
                                '{% crispy output_form %} '
                             '</div>'),
                )

        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout)

        context['resource_type'] = 'Model Program Resource'
        context['output_form'] = output_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 16
0
def landing_page(request, page):
    """
        A typical Mezzanine page processor.

    """
    content_model = page.get_content_model()
    netcdf_logical_files = content_model.get_logical_files('NetCDFLogicalFile')
    for lf in netcdf_logical_files:
        if lf.metadata.is_dirty:
            msg = "One or more NetCDF files are out of sync with metadata changes."
            # prevent same message being displayed more than once
            msg_exists = False
            storage = get_messages(request)
            for message in storage:
                if message.message == msg:
                    msg_exists = True
                    break
            if not msg_exists:
                messages.info(request, msg)
            break

    timeseries_logical_files = content_model.get_logical_files('TimeSeriesLogicalFile')
    for lf in timeseries_logical_files:
        if lf.metadata.is_dirty:
            msg = "One or more SQLite files are out of sync with metadata changes."
            # prevent same message being displayed more than once
            msg_exists = False
            storage = get_messages(request)
            for message in storage:
                if message.message == msg:
                    msg_exists = True
                    break
            if not msg_exists:
                messages.info(request, msg)
            break

    edit_resource = page_processors.check_resource_mode(request)
    context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                               extended_metadata_layout=None, request=request)

    file_type_missing_metadata = {'file_type_missing_metadata':
                                  content_model.get_missing_file_type_metadata_info()}
    context.update(file_type_missing_metadata)
    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 17
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    user = request.user
    if user.is_authenticated():
        user_all_accessible_resource_list = get_my_resources_list(user)
    else:  # anonymous user
        user_all_accessible_resource_list = list(BaseResource.discoverable_resources.all())

    # resource is collectable if
    # 1) Shareable=True
    # 2) OR, current user is a owner of it
    user_all_collectable_resource_list = []
    for res in user_all_accessible_resource_list:
        if res.raccess.shareable or res.raccess.owners.filter(pk=user.pk).exists():
            user_all_collectable_resource_list.append(res)

    # current contained resources list
    collection_items_list = list(content_model.resources.all())

    # get the context from hs_core
    context = page_processors.get_page_context(page, request.user,
                                               resource_edit=edit_resource,
                                               extended_metadata_layout=None,
                                               request=request)
    if edit_resource:
        candidate_resources_list = []
        for res in user_all_collectable_resource_list:
            if content_model.short_id == res.short_id:
                continue  # skip current collection resource object
            elif res in content_model.resources.all():
                continue  # skip resources that are already in current collection

            candidate_resources_list.append(res)

        context['collection_candidate'] = candidate_resources_list
        context['collection_res_id'] = content_model.short_id

    context['deleted_resources'] = content_model.deleted_resources.all()
    context['collection'] = collection_items_list
    context['edit_mode'] = edit_resource

    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 18
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                               extended_metadata_layout=None, request=request)
    extended_metadata_exists = False
    if content_model.metadata.referenceURLs.all().first():
        extended_metadata_exists = True

    context['extended_metadata_exists'] = extended_metadata_exists
    context['site'] = content_model.metadata.sites.all().first()
    context['variable'] = content_model.metadata.variables.all().first()
    context['method'] = content_model.metadata.methods.all().first()
    context['quality_level'] = content_model.metadata.quality_levels.all().first
    context['referenceURL'] = content_model.metadata.referenceURLs.all().first
    context['download_files_url'] = "/hsapi/_internal/%s/download-refts-resource-bag/" % content_model.short_id
    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 19
0
def _get_resource_view_context(page, request, content_model,
                               selected_series_id, series_ids,
                               extended_metadata_exists):
    # get the context from hs_core
    context = page_processors.get_page_context(page,
                                               request.user,
                                               resource_edit=False,
                                               extended_metadata_layout=None,
                                               request=request)

    context['extended_metadata_exists'] = extended_metadata_exists
    context['selected_series_id'] = selected_series_id
    context['series_ids'] = series_ids
    context['sites'] = [
        site for site in content_model.metadata.sites
        if selected_series_id in site.series_ids
    ]
    context['variables'] = [
        variable for variable in content_model.metadata.variables
        if selected_series_id in variable.series_ids
    ]
    context['methods'] = [
        method for method in content_model.metadata.methods
        if selected_series_id in method.series_ids
    ]
    context['processing_levels'] = [
        pro_level for pro_level in content_model.metadata.processing_levels
        if selected_series_id in pro_level.series_ids
    ]
    context['timeseries_results'] = [
        ts_result for ts_result in content_model.metadata.time_series_results
        if selected_series_id in ts_result.series_ids
    ]
    context['utc_offset'] = content_model.metadata.utc_offset.value if \
        content_model.metadata.utc_offset else None

    return context
Ejemplo n.º 20
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:  # non-edit mode
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=None, request=request)
        extended_metadata_exists = False

        if content_model.metadata.originalcoverage:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists

        # add the original coverage context
        geom_info_for_view = {}
        geom_info = content_model.metadata.geometryinformation
        if geom_info:
            geom_info_for_view['geometryType'] = geom_info.geometryType
            geom_info_for_view['featureCount'] = geom_info.featureCount
            context['geometry_information'] = geom_info_for_view

        ori_cov_dict = {}
        ori_cov_obj = content_model.metadata.originalcoverage
        if ori_cov_obj:
            ori_cov_dict['northlimit'] = ori_cov_obj.northlimit
            ori_cov_dict['eastlimit'] = ori_cov_obj.eastlimit
            ori_cov_dict['southlimit'] = ori_cov_obj.southlimit
            ori_cov_dict['westlimit'] = ori_cov_obj.westlimit
            ori_cov_dict['projection_string'] = ori_cov_obj.projection_string
            ori_cov_dict['projection_name'] = ori_cov_obj.projection_name
            ori_cov_dict['datum'] = ori_cov_obj.datum
            ori_cov_dict['unit'] = ori_cov_obj.unit
            context['original_coverage'] = ori_cov_dict

        field_info_list = content_model.metadata.fieldinformations.all()
        field_info_list_context = []
        for field_info in field_info_list:
            field_info_dict_item = {}
            field_info_dict_item["fieldName"] = field_info.fieldName
            field_info_dict_item["fieldType"] = field_info.fieldType
            field_info_dict_item["fieldTypeCode"] = field_info.fieldTypeCode
            field_info_dict_item["fieldWidth"] = field_info.fieldWidth
            field_info_dict_item["fieldPrecision"] = field_info.fieldPrecision
            field_info_list_context.append(field_info_dict_item)
        context['field_information'] = field_info_list_context

    else:  # editing mode
        # now editing is allowed for resource specific metadata
        geom_info_for_view = {}
        geom_info = content_model.metadata.geometryinformation
        if geom_info:
            geom_info_for_view['geometryType'] = geom_info.geometryType
            geom_info_for_view['featureCount'] = geom_info.featureCount

        geom_information_form = GeometryInformationForm(initial=geom_info_for_view,
                                                        res_short_id=content_model.short_id,
                                                        allow_edit=False,
                                                        element_id=geom_info.id
                                                        if geom_info else None)

        geom_information_layout = HTML('<div class="form-group col-lg-6 col-xs-12" '
                                       'id="geometryinformation">'
                                       '{% load crispy_forms_tags %}'
                                       '{% crispy geom_information_form %}'
                                       '</div>')

        # origina coverage_form
        ori_cov_obj = content_model.metadata.originalcoverage
        ori_coverage_data_dict = {}
        if ori_cov_obj:
            ori_coverage_data_dict['projection_string'] = ori_cov_obj.projection_string
            ori_coverage_data_dict['projection_name'] = ori_cov_obj.projection_name
            ori_coverage_data_dict['datum'] = ori_cov_obj.datum
            ori_coverage_data_dict['unit'] = ori_cov_obj.unit
            ori_coverage_data_dict['northlimit'] = ori_cov_obj.northlimit
            ori_coverage_data_dict['eastlimit'] = ori_cov_obj.eastlimit
            ori_coverage_data_dict['southlimit'] = ori_cov_obj.southlimit
            ori_coverage_data_dict['westlimit'] = ori_cov_obj.westlimit

        ori_coverage_form = OriginalCoverageForm(initial=ori_coverage_data_dict,
                                                 res_short_id=content_model.short_id,
                                                 allow_edit=False,
                                                 element_id=ori_cov_obj.id
                                                 if ori_cov_obj else None)
        ori_coverage_layout = HTML('<div class="form-group col-lg-6 '
                                   'col-xs-12" id="originalcoverage"> '
                                   '{% load crispy_forms_tags %} '
                                   '{% crispy ori_coverage_form %} '
                                   '</div>')
        root_div = div(cls="col-md-12 col-sm-12 pull-left", style="margin-bottom:40px;")
        with root_div:
            legend('Field Information')
            with table(style="width: 100%;"):
                with tbody():
                    with tr(cls='row'):
                        th('Name')
                        th('Type')
                        th('Width')
                        th('Precision')

                    for field_info in content_model.metadata.fieldinformations.all():
                        field_info.get_html(pretty=False)

        ext_md_layout = Layout(HTML("<div class='row'>"),
                               geom_information_layout,
                               ori_coverage_layout,
                               HTML("</div>"),
                               HTML(root_div.render()))

        context = page_processors.get_page_context(page,
                                                   request.user,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)
        context['ori_coverage_form'] = ori_coverage_form
        context['geom_information_form'] = geom_information_form

    context['edit_mode'] = edit_resource
    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 21
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, request=request,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=None)
        if isinstance(context, HttpResponseRedirect):
            # sending user to login page
            return context

        extended_metadata_exists = False
        if content_model.metadata.model_output or \
                content_model.metadata.executed_by or \
                content_model.metadata.model_objective or \
                content_model.metadata.simulation_type or \
                content_model.metadata.model_method or \
                content_model.metadata.model_parameter or \
                content_model.metadata.model_input:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['model_output'] = content_model.metadata.model_output
        context['executed_by'] = content_model.metadata.executed_by
        context['model_objective'] = content_model.metadata.model_objective
        context['simulation_type'] = content_model.metadata.simulation_type
        context['model_method'] = content_model.metadata.model_method
        context['model_parameter'] = content_model.metadata.model_parameter
        context['model_input'] = content_model.metadata.model_input

        # add SWAT Model parameters context
    else:
        model_output_form = ModelOutputForm(
            instance=content_model.metadata.model_output, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_output.id
            if content_model.metadata.model_output else None)

        executed_by_form = ExecutedByForm(
            instance=content_model.metadata.executed_by, res_short_id=content_model.short_id,
            element_id=content_model.metadata.executed_by.id
            if content_model.metadata.executed_by else None)

        model_objective_form = ModelObjectiveForm(
            instance=content_model.metadata.model_objective, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_objective.id
            if content_model.metadata.model_objective else None)

        simulation_type_form = SimulationTypeForm(
            instance=content_model.metadata.simulation_type, res_short_id=content_model.short_id,
            element_id=content_model.metadata.simulation_type.id
            if content_model.metadata.simulation_type else None)

        model_method_form = ModelMethodForm(
            instance=content_model.metadata.model_method, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_method.id
            if content_model.metadata.model_method else None)

        model_parameter_form = ModelParameterForm(
            instance=content_model.metadata.model_parameter, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_parameter.id if
            content_model.metadata.model_parameter else None)

        model_input_form = ModelInputForm(
            instance=content_model.metadata.model_input, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_input.id
            if content_model.metadata.model_input else None)

        ext_md_layout = Layout(HTML("<div class='col-xs-12 col-sm-6'>"
                                    "<div class='form-group' id='modeloutput'> "
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_output_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="executedby"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy executed_by_form %} '
                                    '</div> '),

                               HTML('<div class="form-group" id="modelobjective"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_objective_form %} '
                                    '</div> '),

                               HTML('<div class="form-group" id="simulationtype"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy simulation_type_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="modelmethod"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_method_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="modelparameter"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_parameter_form %} '
                                    '</div></div>'),

                               HTML('<div class="col-xs-12 col-sm-6">'
                                    '<div class="form-group" id="modelinput"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_input_form %} '
                                    '</div></div>'),
                               )

        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)

        context['resource_type'] = 'SWAT Model Instance Resource'
        context['model_output_form'] = model_output_form
        context['executed_by_form'] = executed_by_form
        context['model_objective_form'] = model_objective_form
        context['simulation_type_form'] = simulation_type_form
        context['model_method_form'] = model_method_form
        context['model_parameter_form'] = model_parameter_form
        context['model_input_form'] = model_input_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 22
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=None,
                                                   request=request)
        if isinstance(context, HttpResponseRedirect):
            # sending user to login page
            return context
        extended_metadata_exists = False
        if content_model.metadata.url_base or content_model.metadata.version:
            extended_metadata_exists = True

        new_supported_res_types_array = []
        if content_model.metadata.supported_resource_types:
            extended_metadata_exists = True
            supported_res_types_str = content_model.metadata. \
                supported_resource_types.get_supported_res_types_str()
            supported_res_types_array = supported_res_types_str.split(',')
            for type_name in supported_res_types_array:
                for class_verbose_list in get_SupportedResTypes_choices():
                    if type_name.lower() == class_verbose_list[0].lower():
                        new_supported_res_types_array += [class_verbose_list[1]]
                        break

            context['supported_res_types'] = ", ".join(new_supported_res_types_array)

        new_supported_agg_types_array = []
        if content_model.metadata.supported_aggregation_types:
            extended_metadata_exists = True
            supported_agg_types_str = content_model.metadata. \
                supported_aggregation_types.get_supported_agg_types_str()
            supported_agg_types_array = supported_agg_types_str.split(',')
            for type_name in supported_agg_types_array:
                for class_verbose_list in get_SupportedAggTypes_choices():
                    if type_name.lower() == class_verbose_list[0].lower():
                        new_supported_agg_types_array += [class_verbose_list[1]]
                        break

            context['supported_agg_types'] = ", ".join(new_supported_agg_types_array)

        if content_model.metadata.supported_sharing_status is not None:
            extended_metadata_exists = True
            sharing_status_str = content_model.metadata.supported_sharing_status \
                .get_sharing_status_str()
            context['supported_sharing_status'] = sharing_status_str

        if content_model.metadata.app_icon:
            context['tool_icon_url'] = content_model.metadata.app_icon.data_url

        if content_model.metadata.supported_file_extensions:
            context['supported_file_extensions'] = content_model.metadata.supported_file_extensions

        context['extended_metadata_exists'] = extended_metadata_exists

        context['url_base'] = content_model.metadata.url_base
        context['url_base_aggregation'] = content_model.metadata.url_base_aggregation
        context['url_base_file'] = content_model.metadata.url_base_file
        context['version'] = content_model.metadata.version
        context['homepage_url'] = content_model.metadata.app_home_page_url
        context['testing_protocol_url'] = content_model.metadata.testing_protocol_url
        context['help_page_url'] = content_model.metadata.help_page_url
        context['source_code_url'] = content_model.metadata.source_code_url
        context['issues_page_url'] = content_model.metadata.issues_page_url
        context['mailing_list_url'] = content_model.metadata.mailing_list_url
        context['roadmap'] = content_model.metadata.roadmap

    else:
        url_base = content_model.metadata.url_base
        url_base_form = UrlBaseForm(instance=url_base,
                                    res_short_id=content_model.short_id,
                                    element_id=url_base.id
                                    if url_base else None)

        url_base_aggregation = content_model.metadata.url_base_aggregation
        url_base_aggregation_form = UrlBaseAggregationForm(instance=url_base_aggregation,
                                                           res_short_id=content_model.short_id,
                                                           element_id=url_base_aggregation.id
                                                           if url_base_aggregation else None)

        url_base_file = content_model.metadata.url_base_file
        url_base_file_form = UrlBaseFileForm(instance=url_base_file,
                                             res_short_id=content_model.short_id,
                                             element_id=url_base_file.id
                                             if url_base_file else None)

        supported_file_extensions = content_model.metadata.supported_file_extensions
        supported_file_extensions_form = \
            SupportedFileExtensionsForm(instance=supported_file_extensions,
                                        res_short_id=content_model.short_id,
                                        element_id=supported_file_extensions.id
                                        if supported_file_extensions else None)

        homepage_url = content_model.metadata.app_home_page_url
        homepage_url_form = \
            AppHomePageUrlForm(instance=homepage_url,
                               res_short_id=content_model.short_id,
                               element_id=homepage_url.id
                               if homepage_url else None)

        testing_protocol_url = content_model.metadata.testing_protocol_url
        testing_protocol_url_form = TestingProtocolUrlForm(instance=testing_protocol_url,
                                                           res_short_id=content_model.short_id,
                                                           element_id=testing_protocol_url.id
                                                           if testing_protocol_url else None)

        help_page_url = content_model.metadata.help_page_url
        help_page_url_form = HelpPageUrlForm(instance=help_page_url,
                                             res_short_id=content_model.short_id,
                                             element_id=help_page_url.id
                                             if help_page_url else None)

        source_code_url = content_model.metadata.source_code_url
        source_code_url_form = SourceCodeUrlForm(instance=source_code_url,
                                                 res_short_id=content_model.short_id,
                                                 element_id=source_code_url.id
                                                 if source_code_url else None)

        issues_page_url = content_model.metadata.issues_page_url
        issues_page_url_form = IssuesPageUrlForm(instance=issues_page_url,
                                                 res_short_id=content_model.short_id,
                                                 element_id=issues_page_url.id
                                                 if issues_page_url else None)

        mailing_list_url = content_model.metadata.mailing_list_url
        mailing_list_url_form = MailingListUrlForm(instance=mailing_list_url,
                                                   res_short_id=content_model.short_id,
                                                   element_id=mailing_list_url.id
                                                   if mailing_list_url else None)

        roadmap = content_model.metadata.roadmap
        roadmap_form = RoadmapForm(instance=roadmap,
                                   res_short_id=content_model.short_id,
                                   element_id=roadmap.id
                                   if roadmap else None)

        version = content_model.metadata.version
        version_form = VersionForm(instance=version,
                                   res_short_id=content_model.short_id,
                                   element_id=version.id
                                   if version else None)

        supported_res_types_obj = content_model.metadata.supported_resource_types
        supported_res_types_form = SupportedResTypesForm(instance=supported_res_types_obj,
                                                         res_short_id=content_model.short_id,
                                                         element_id=supported_res_types_obj.id
                                                         if supported_res_types_obj else None)

        supported_agg_types_obj = content_model.metadata.supported_aggregation_types
        supported_agg_types_form = SupportedAggTypesForm(instance=supported_agg_types_obj,
                                                         res_short_id=content_model.short_id,
                                                         element_id=supported_agg_types_obj.id
                                                         if supported_agg_types_obj else None)

        sharing_status_obj = content_model.metadata.supported_sharing_status
        sharing_status_obj_form = \
            SupportedSharingStatusForm(instance=sharing_status_obj,
                                       res_short_id=content_model.short_id,
                                       element_id=sharing_status_obj.id
                                       if sharing_status_obj else None)

        tool_icon_obj = content_model.metadata.app_icon
        tool_icon_form = ToolIconForm(instance=tool_icon_obj,
                                      res_short_id=content_model.short_id,
                                      element_id=tool_icon_obj.id
                                      if tool_icon_obj else None)

        ext_md_layout = Layout(
            HTML('<div class="form-group col-lg-6 col-xs-12" id="SupportedResTypes"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy supported_res_types_form %} '
                 '</div> '),
            HTML('<div class="form-group col-lg-6 col-xs-12" id="SupportedAggTypes"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy supported_agg_types_form %} '
                 '</div> '),
            HTML('<div class="form-group col-lg-6 col-xs-12" id="SupportedSharingStatus"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy sharing_status_obj_form %} '
                 '</div> '),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='supported_file_extensions'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy supported_file_extensions_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='homepage_url'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy homepage_url_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='url_bases'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy url_base_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='url_bases_aggregation'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy url_base_aggregation_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='url_bases_file'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy url_base_file_form %} '
                 '</div>'),
            HTML('<div class="form-group col-lg-6 col-xs-12" id="version"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy version_form %} '
                 '</div> '),
            HTML('<div class="form-group col-lg-6 col-xs-12" id="tool_icon"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy tool_icon_form %} '
                 '</div> '),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='testing_protocol_url'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy testing_protocol_url_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='help_page_url'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy help_page_url_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='source_code_url'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy source_code_url_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='issues_page_url'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy issues_page_url_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='mailing_list_url'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy mailing_list_url_form %} '
                 '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='roadmap'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy roadmap_form %} '
                 '</div>'),
        )

        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)
        context['url_base_form'] = url_base_form
        context['url_base_aggregation_form'] = url_base_aggregation_form
        context['url_base_file_form'] = url_base_file_form
        context['supported_file_extensions_form'] = supported_file_extensions_form
        context['homepage_url_form'] = homepage_url_form
        context['version_form'] = version_form
        context['supported_res_types_form'] = supported_res_types_form
        context['supported_agg_types_form'] = supported_agg_types_form
        context['tool_icon_form'] = tool_icon_form
        context['sharing_status_obj_form'] = sharing_status_obj_form
        context['testing_protocol_url_form'] = testing_protocol_url_form
        context['help_page_url_form'] = help_page_url_form
        context['source_code_url_form'] = source_code_url_form
        context['issues_page_url_form'] = issues_page_url_form
        context['mailing_list_url_form'] = mailing_list_url_form
        context['roadmap_form'] = roadmap_form

    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 23
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource: # not editing mode
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=None, request=request)
        extended_metadata_exists = False

        if content_model.metadata.variables.all() or content_model.metadata.ori_coverage.all():
            extended_metadata_exists = True
        elif content_model.files.all():
            for f in content_model.files.all():
                if '_header_info.txt' in f.resource_file.name:
                    extended_metadata_exists = True



        context['extended_metadata_exists'] = extended_metadata_exists

        # add the variables context
        context['variables'] = content_model.metadata.variables.all() # the variables is the field name from NetCDFMetaData model

        # add the original coverage context
        ori_cov_dict = {}
        ori_cov_obj = content_model.metadata.ori_coverage.all().first()
        if ori_cov_obj:
            ori_cov_dict['name'] = ori_cov_obj.value.get('name', None)
            ori_cov_dict['units'] = ori_cov_obj.value['units']
            ori_cov_dict['projection'] = ori_cov_obj.value.get('projection', None)
            ori_cov_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_cov_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_cov_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_cov_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_cov_dict['projection_string_type'] = ori_cov_obj.projection_string_type
            ori_cov_dict['projection_string_text'] = ori_cov_obj.projection_string_text
            context['original_coverage'] = ori_cov_dict
        else:
            context['original_coverage'] = None

    else: # editing mode

        # Original Coverage in editing mode
        ori_cov_obj = content_model.metadata.ori_coverage.all().first()
        ori_cov_dict = {}
        if ori_cov_obj:
            ori_cov_dict['name'] = ori_cov_obj.value.get('name', None)
            ori_cov_dict['units'] = ori_cov_obj.value['units']
            ori_cov_dict['projection'] = ori_cov_obj.value.get('projection', None)
            ori_cov_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_cov_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_cov_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_cov_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_cov_dict['projection_string_type'] = ori_cov_obj.projection_string_type
            ori_cov_dict['projection_string_text'] = ori_cov_obj.projection_string_text
        else:
            ori_cov_obj = None

        ori_cov_form = OriginalCoverageForm(initial=ori_cov_dict,
                                            allow_edit=edit_resource,
                                            res_short_id=content_model.short_id,
                                            element_id=ori_cov_obj.id if ori_cov_obj else None)

        ori_cov_form.delete_modal_form = OriginalCoverageMetaDelete(content_model.short_id, 'originalcoverage', ori_cov_obj.id if ori_cov_obj else None)

        # Variable Forms in editing mode
        VariableFormSetEdit = formset_factory(wraps(VariableForm)(partial(VariableForm, allow_edit=edit_resource)), formset=BaseFormSet, extra=0)
        variable_formset = VariableFormSetEdit(initial=content_model.metadata.variables.all().values(), prefix='variable')
        add_variable_modal_form = VariableForm(allow_edit=edit_resource, res_short_id=content_model.short_id)

        for form in variable_formset.forms:
            if len(form.initial) > 0:
                form.delete_modal_form = MetaDataElementDeleteForm(content_model.short_id, 'variable', form.initial['id'])
                form.action = "/hsapi/_internal/%s/variable/%s/update-metadata/" % (content_model.short_id, form.initial['id'])
                form.number = form.initial['id']
            else:
                form.action = "/hsapi/_internal/%s/variable/add-metadata/" % content_model.short_id

        # get the context from hs_core
        ext_md_layout = Layout(
                                AccordionGroup('Spatial Reference',
                                    HTML('<div class="form-group col-lg-6 col-xs-12" id="originalcoverage"> '
                                                '{% load crispy_forms_tags %} '
                                                '{% crispy original_coverage_form %} '
                                              '</div> '

                                              '<div class="row" style="margin-top:10px">'
                                                '<div class="col-md-10">'
                                                    '<input class="btn-danger btn btn-md" onclick="check_ori_meta_status()" type="button" data-toggle="modal" data-target="#delete-original-coverage-element-dialog" value="Delete Spatial Reference">'
                                                '</div>'
                                              '</div>'
                                                '<hr style="border: 0;">'
                                              '{% crispy original_coverage_form.delete_modal_form %} '
                                         ),
                                ),
                                AccordionGroup('Variable', VariableLayoutEdit),
                                ModalDialogLayoutAddVariable,

        )

        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=ext_md_layout)
        context['variable_formset'] = variable_formset
        context['add_variable_modal_form'] = add_variable_modal_form
        context['original_coverage_form'] = ori_cov_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 24
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:  # non-edit mode
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=None,
            request=request)
        extended_metadata_exists = False

        if content_model.metadata.originalcoverage.all():
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists

        # add the original coverage context
        geom_info_for_view = {}
        geom_info = content_model.metadata.geometryinformation.all().first()
        if geom_info:
            geom_info_for_view['geometryType'] = geom_info.geometryType
            geom_info_for_view['featureCount'] = geom_info.featureCount
            context['geometry_information'] = geom_info_for_view

        ori_cov_dict = {}
        ori_cov_obj = content_model.metadata.originalcoverage.all().first()
        if ori_cov_obj:
            ori_cov_dict['northlimit'] = ori_cov_obj.northlimit
            ori_cov_dict['eastlimit'] = ori_cov_obj.eastlimit
            ori_cov_dict['southlimit'] = ori_cov_obj.southlimit
            ori_cov_dict['westlimit'] = ori_cov_obj.westlimit
            ori_cov_dict['projection_string'] = ori_cov_obj.projection_string
            ori_cov_dict['projection_name'] = ori_cov_obj.projection_name
            ori_cov_dict['datum'] = ori_cov_obj.datum
            ori_cov_dict['unit'] = ori_cov_obj.unit
            context['original_coverage'] = ori_cov_dict

        field_info_list = content_model.metadata.fieldinformation.all()
        field_info_list_context = []
        for field_info in field_info_list:
            field_info_dict_item = {}
            field_info_dict_item["fieldName"] = field_info.fieldName
            field_info_dict_item["fieldType"] = field_info.fieldType
            field_info_dict_item["fieldTypeCode"] = field_info.fieldTypeCode
            field_info_dict_item["fieldWidth"] = field_info.fieldWidth
            field_info_dict_item["fieldPrecision"] = field_info.fieldPrecision
            field_info_list_context.append(field_info_dict_item)
        context['field_information'] = field_info_list_context

    else:  # editing mode
        geom_info_for_view = {}
        geom_info = content_model.metadata.geometryinformation.all().first()
        if geom_info:
            geom_info_for_view['geometryType'] = geom_info.geometryType
            geom_info_for_view['featureCount'] = geom_info.featureCount

        geom_information_form = GeometryInformationForm(
            initial=geom_info_for_view,
            res_short_id=content_model.short_id,
            allow_edit=edit_resource,
            element_id=geom_info.id if geom_info else None)

        geom_information_layout = HTML(
            '<div class="form-group col-lg-6 col-xs-12" '
            'id="geometryinformation">'
            '{% load crispy_forms_tags %}'
            '{% crispy geom_information_form %}'
            '</div>')

        # origina coverage_form
        ori_cov_obj = content_model.metadata.originalcoverage.all().first()
        ori_coverage_data_dict = {}
        if ori_cov_obj:
            ori_coverage_data_dict[
                'projection_string'] = ori_cov_obj.projection_string
            ori_coverage_data_dict[
                'projection_name'] = ori_cov_obj.projection_name
            ori_coverage_data_dict['datum'] = ori_cov_obj.datum
            ori_coverage_data_dict['unit'] = ori_cov_obj.unit
            ori_coverage_data_dict['northlimit'] = ori_cov_obj.northlimit
            ori_coverage_data_dict['eastlimit'] = ori_cov_obj.eastlimit
            ori_coverage_data_dict['southlimit'] = ori_cov_obj.southlimit
            ori_coverage_data_dict['westlimit'] = ori_cov_obj.westlimit

        ori_coverage_form = OriginalCoverageForm(
            initial=ori_coverage_data_dict,
            res_short_id=content_model.short_id,
            allow_edit=edit_resource,
            element_id=ori_cov_obj.id if ori_cov_obj else None)
        ori_coverage_layout = HTML('<div class="form-group col-lg-6 '
                                   'col-xs-12" id="originalcoverage"> '
                                   '{% load crispy_forms_tags %} '
                                   '{% crispy ori_coverage_form %} '
                                   '</div>')
        ext_md_layout = Layout(HTML("<div class='row'>"),
                               geom_information_layout, ori_coverage_layout,
                               HTML("</div>"))

        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout,
            request=request)
        context['ori_coverage_form'] = ori_coverage_form
        context['geom_information_form'] = geom_information_form

    context['edit_mode'] = edit_resource
    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 25
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                               extended_metadata_layout=None, request=request)
    extended_metadata_exists = False
    if content_model.metadata.cellInformation or content_model.metadata.bandInformations:
        extended_metadata_exists = True

    context['extended_metadata_exists'] = extended_metadata_exists
    if not edit_resource:
        # get the context from content_model
        if content_model.metadata.originalCoverage:
            ori_coverage_data_dict = {}
            ori_coverage_data_dict['units'] = content_model.metadata.originalCoverage.value['units']
            ori_coverage_data_dict['projection'] = content_model.metadata.originalCoverage.\
                value.get('projection', None)
            ori_coverage_data_dict['northlimit'] = content_model.metadata.originalCoverage.\
                value['northlimit']
            ori_coverage_data_dict['eastlimit'] = content_model.metadata.originalCoverage.\
                value['eastlimit']
            ori_coverage_data_dict['southlimit'] = content_model.metadata.originalCoverage.\
                value['southlimit']
            ori_coverage_data_dict['westlimit'] = content_model.metadata.originalCoverage.\
                value['westlimit']
            ori_coverage_data_dict['projection_string'] = content_model.metadata.originalCoverage.\
                value.get('projection_string', None)
            ori_coverage_data_dict['datum'] = content_model.metadata.originalCoverage.\
                value.get('datum', None)
            context['originalCoverage'] = ori_coverage_data_dict
        context['cellInformation'] = content_model.metadata.cellInformation
        context['bandInformation'] = content_model.metadata.bandInformations
    else:
        # cellinfo_form
        cellinfo_form = CellInfoForm(instance=content_model.metadata.cellInformation,
                                     res_short_id=content_model.short_id,
                                     allow_edit=True,
                                     element_id=content_model.metadata.cellInformation.id
                                     if content_model.metadata.cellInformation else None)
        cellinfo_layout = HTML("<div class='form-group col-lg-6 col-xs-12' id='CellInformation'> "
                               '{% load crispy_forms_tags %} '
                               '{% crispy cellinfo_form %} '
                               '</div>')
        # bandinfo_formset
        BandInfoFormSetEdit = formset_factory(wraps(BandInfoForm)
                                              (partial(BandInfoForm, allow_edit=edit_resource)),
                                              formset=BaseBandInfoFormSet, extra=0)
        bandinfo_formset = BandInfoFormSetEdit(
            initial=content_model.metadata.bandInformations.values(),
            prefix='BandInformation')

        for form in bandinfo_formset.forms:
            if len(form.initial) > 0:
                form.action = "/hsapi/_internal/%s/bandinformation/%s/update-metadata/" % \
                              (content_model.short_id, form.initial['id'])
                form.number = form.initial['id']

        # original coverage_form
        ori_cov_obj = content_model.metadata.originalCoverage
        ori_coverage_data_dict = {}
        if ori_cov_obj:
            ori_coverage_data_dict['units'] = ori_cov_obj.value['units']
            ori_coverage_data_dict['projection'] = ori_cov_obj.value.get('projection', None)
            ori_coverage_data_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_coverage_data_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_coverage_data_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_coverage_data_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_coverage_data_dict['projection_string'] = ori_cov_obj.value.\
                get('projection_string', None)
            ori_coverage_data_dict['datum'] = ori_cov_obj.value.get('datum', None)
        else:
            ori_cov_obj = None

        ori_coverage_form = OriginalCoverageSpatialForm(initial=ori_coverage_data_dict,
                                                        res_short_id=content_model.short_id,
                                                        allow_edit=edit_resource,
                                                        element_id=ori_cov_obj.id
                                                        if ori_cov_obj else None)
        ori_coverage_layout = HTML("""
                              <div class="form-group col-lg-6 col-xs-12" id="originalcoverage">
                              {% load crispy_forms_tags %}
                              {% crispy ori_coverage_form %}
                              </div>
                                """)

        # update context
        ext_md_layout = Layout(HTML("<div class='row'>"),
                               ori_coverage_layout,
                               cellinfo_layout,
                               BandInfoLayoutEdit,
                               HTML("</div>")
                               )
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)
        context['ori_coverage_form'] = ori_coverage_form
        context['cellinfo_form'] = cellinfo_form
        context['bandinfo_formset'] = bandinfo_formset

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 26
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if content_model.metadata.supported_sharing_status.first() is None:
        content_model.metadata.create_element(
            'SupportedSharingStatus',
            sharing_status=['Published', 'Public', 'Discoverable', 'Private'],
        )
    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=None,
            request=request)
        extended_metadata_exists = False
        if content_model.metadata.url_bases.first(
        ) or content_model.metadata.versions.first():
            extended_metadata_exists = True

        new_supported_res_types_array = []
        if content_model.metadata.supported_res_types.first():
            extended_metadata_exists = True
            supported_res_types_str = content_model.metadata.\
                supported_res_types.first().get_supported_res_types_str()
            supported_res_types_array = supported_res_types_str.split(',')
            for type_name in supported_res_types_array:
                for class_verbose_list in get_SupportedResTypes_choices():
                    if type_name.lower() == class_verbose_list[0].lower():
                        new_supported_res_types_array += [
                            class_verbose_list[1]
                        ]
                        break

            context['supported_res_types'] = ", ".join(
                new_supported_res_types_array)

        if content_model.metadata.supported_sharing_status.first() is not None:
            extended_metadata_exists = True
            sharing_status_str = content_model.metadata.supported_sharing_status.first()\
                .get_sharing_status_str()
            context['supported_sharing_status'] = sharing_status_str

        if content_model.metadata.tool_icon.first():
            context['tool_icon_url'] = content_model.metadata.tool_icon.first(
            ).value

        context['extended_metadata_exists'] = extended_metadata_exists
        context['url_base'] = content_model.metadata.url_bases.first()
        context['version'] = content_model.metadata.versions.first()
        context['homepage_url'] = content_model.metadata.homepage_url.first()

    else:
        url_base = content_model.metadata.url_bases.first()
        url_base_form = UrlBaseForm(
            instance=url_base,
            res_short_id=content_model.short_id,
            element_id=url_base.id if url_base else None)

        homepage_url = content_model.metadata.homepage_url.first()
        homepage_url_form = \
            AppHomePageUrlForm(instance=homepage_url,
                               res_short_id=content_model.short_id,
                               element_id=homepage_url.id
                               if homepage_url else None)

        version = content_model.metadata.versions.first()
        version_form = VersionForm(instance=version,
                                   res_short_id=content_model.short_id,
                                   element_id=version.id if version else None)

        supported_res_types_obj = content_model.metadata.supported_res_types.first(
        )
        supported_res_types_form = SupportedResTypesForm(
            instance=supported_res_types_obj,
            res_short_id=content_model.short_id,
            element_id=supported_res_types_obj.id
            if supported_res_types_obj else None)

        sharing_status_obj = content_model.metadata.supported_sharing_status.first(
        )
        sharing_status_obj_form = \
            SupportedSharingStatusForm(instance=sharing_status_obj,
                                       res_short_id=content_model.short_id,
                                       element_id=sharing_status_obj.id
                                       if sharing_status_obj else None)

        tool_icon_obj = content_model.metadata.tool_icon.first()
        tool_icon_form = ToolIconForm(
            instance=tool_icon_obj,
            res_short_id=content_model.short_id,
            element_id=tool_icon_obj.id if tool_icon_obj else None)

        ext_md_layout = Layout(
            HTML(
                '<div class="form-group col-lg-6 col-xs-12" id="SupportedResTypes"> '
                '{% load crispy_forms_tags %} '
                '{% crispy supported_res_types_form %} '
                '</div> '),
            HTML(
                '<div class="form-group col-lg-6 col-xs-12" id="SupportedSharingStatus"> '
                '{% load crispy_forms_tags %} '
                '{% crispy sharing_status_obj_form %} '
                '</div> '),
            HTML(
                "<div class='form-group col-lg-6 col-xs-12' id='homepage_url'> "
                '{% load crispy_forms_tags %} '
                '{% crispy homepage_url_form %} '
                '</div>'),
            HTML("<div class='form-group col-lg-6 col-xs-12' id='url_bases'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy url_base_form %} '
                 '</div>'),
            HTML('<div class="form-group col-lg-6 col-xs-12" id="version"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy version_form %} '
                 '</div> '),
            HTML('<div class="form-group col-lg-6 col-xs-12" id="tool_icon"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy tool_icon_form %} '
                 '</div> '),
        )

        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout,
            request=request)
        context['url_base_form'] = url_base_form
        context['homepage_url_form'] = homepage_url_form
        context['version_form'] = version_form
        context['supported_res_types_form'] = supported_res_types_form
        context['tool_icon_form'] = tool_icon_form
        context['sharing_status_obj_form'] = sharing_status_obj_form

    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context
Ejemplo n.º 27
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page,
                                                   request.user,
                                                   request=request,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=None)
        extended_metadata_exists = False
        if content_model.metadata.model_output or \
                content_model.metadata.executed_by or \
                content_model.metadata.study_area or \
                content_model.metadata.grid_dimensions or \
                content_model.metadata.stress_period or \
                content_model.metadata.ground_water_flow or \
                content_model.metadata.boundary_condition or \
                content_model.metadata.model_calibration or \
                content_model.metadata.model_inputs or \
                content_model.metadata.general_elements:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['model_output'] = content_model.metadata.model_output
        context['executed_by'] = content_model.metadata.executed_by
        context['study_area'] = content_model.metadata.study_area
        context['grid_dimensions'] = content_model.metadata.grid_dimensions
        context['stress_period'] = content_model.metadata.stress_period
        context['ground_water_flow'] = content_model.metadata.ground_water_flow
        context['boundary_condition'] = content_model.metadata.boundary_condition
        context['model_calibration'] = content_model.metadata.model_calibration
        context['model_inputs'] = content_model.metadata.model_inputs
        context['general_elements'] = content_model.metadata.general_elements

    # add MODFLOW Model parameters context
    else:
        model_output_form = ModelOutputForm(instance=content_model.metadata.model_output,
                                            res_short_id=content_model.short_id,
                                            element_id=content_model.metadata.model_output.id
                                            if content_model.metadata.model_output else None)

        executed_by_form = ExecutedByForm(instance=content_model.metadata.executed_by,
                                          res_short_id=content_model.short_id,
                                          element_id=content_model.metadata.executed_by.id
                                          if content_model.metadata.executed_by else None)

        study_area_form = StudyAreaForm(instance=content_model.metadata.study_area,
                                        res_short_id=content_model.short_id,
                                        element_id=content_model.metadata.study_area.id
                                        if content_model.metadata.study_area else None)

        grid_dimensions_form = GridDimensionsForm(
            instance=content_model.metadata.grid_dimensions,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.grid_dimensions.id
            if content_model.metadata.grid_dimensions else None)

        stress_period_form = StressPeriodForm(instance=content_model.metadata.stress_period,
                                              res_short_id=content_model.short_id,
                                              element_id=content_model.metadata.stress_period.id
                                              if content_model.metadata.stress_period else None)

        ground_water_flow_form = GroundWaterFlowForm(
            instance=content_model.metadata.ground_water_flow,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.ground_water_flow.id
            if content_model.metadata.ground_water_flow else None)

        boundary_condition_form = BoundaryConditionForm(
            instance=content_model.metadata.boundary_condition,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.boundary_condition.id
            if content_model.metadata.boundary_condition else None)

        model_calibration_form = ModelCalibrationForm(
            instance=content_model.metadata.model_calibration,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_calibration.id
            if content_model.metadata.model_calibration else None)

        ModelInputFormSetEdit = formset_factory(wraps(ModelInputForm)(partial(ModelInputForm,
                                                                              allow_edit=True)),
                                                formset=BaseFormSet, extra=0)
        model_input_formset = ModelInputFormSetEdit(
            initial=content_model.metadata.model_inputs.values(),
            prefix='modelinput')
        for model_input_form in model_input_formset.forms:
            if len(model_input_form.initial) > 0:
                model_input_form.action = "/hsapi/_internal/%s/modelinput/%s/update-metadata/" % \
                                          (content_model.short_id, model_input_form.initial['id'])
                model_input_form.delete_modal_form = MetaDataElementDeleteForm(
                    content_model.short_id, 'modelinput',
                    model_input_form.initial['id'])
                model_input_form.number = model_input_form.initial['id']
            else:
                model_input_form.action = "/hsapi/_internal/%s/modelinput/add-metadata/" % \
                                          content_model.short_id

        add_modelinput_modal_form = ModelInputForm(allow_edit=False,
                                                   res_short_id=content_model.short_id)

        general_elements_form = GeneralElementsForm(
            instance=content_model.metadata.general_elements,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.general_elements.id
            if content_model.metadata.general_elements else None)

        ext_md_layout = Layout(HTML("<div class='col-xs-12 col-sm-6'>"
                                    "<div class='form-group' id='modeloutput'> "
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_output_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="executedby"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy executed_by_form %} '
                                    '</div> '),

                               HTML('<div class="form-group" id="boundarycondition"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy boundary_condition_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="generalelements"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy general_elements_form %} '
                                    '</div>'),
                               HTML("</div>"),

                               ModelInputLayoutEdit,

                               ModalDialogLayoutAddModelInput,

                               HTML('<div class="col-xs-12 col-sm-6">'
                                    '<div class="form-group" id="studyarea"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy study_area_form %} '
                                    '</div> '),

                               HTML('<div class="form-group" id="griddimensions"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy grid_dimensions_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="stressperiod"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy stress_period_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="groundwaterflow"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy ground_water_flow_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="modelcalibration"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_calibration_form %} '
                                    '</div></div>')
                               )

        # get the context from hs_core
        context = page_processors.get_page_context(page,
                                                   request.user,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)

        context['resource_type'] = 'MODFLOW Model Instance Resource'
        context['model_output_form'] = model_output_form
        context['executed_by_form'] = executed_by_form
        context['study_area_form'] = study_area_form
        context['grid_dimensions_form'] = grid_dimensions_form
        context['stress_period_form'] = stress_period_form
        context['ground_water_flow_form'] = ground_water_flow_form
        context['boundary_condition_form'] = boundary_condition_form
        context['model_calibration_form'] = model_calibration_form
        context['model_input_formset'] = model_input_formset
        context['add_modelinput_modal_form'] = add_modelinput_modal_form
        context['general_elements_form'] = general_elements_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 28
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)
    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=None,
            request=request)
        extended_metadata_exists = False
        if content_model.metadata.site or \
                content_model.metadata.variable or \
                content_model.metadata.method or \
                content_model.metadata.processing_level or \
                content_model.metadata.time_series_result:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['site'] = content_model.metadata.site
        context['variable'] = content_model.metadata.variable
        context['method'] = content_model.metadata.method
        context['processing_level'] = content_model.metadata.processing_level
        context[
            'timeseries_result'] = content_model.metadata.time_series_result
    else:
        site_form = SiteForm(instance=content_model.metadata.site,
                             res_short_id=content_model.short_id,
                             element_id=content_model.metadata.site.id
                             if content_model.metadata.site else None)

        variable_form = VariableForm(
            instance=content_model.metadata.variable,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.variable.id
            if content_model.metadata.variable else None)

        method_form = MethodForm(instance=content_model.metadata.method,
                                 res_short_id=content_model.short_id,
                                 element_id=content_model.metadata.method.id
                                 if content_model.metadata.method else None)

        processing_level_form = ProcessingLevelForm(
            instance=content_model.metadata.processing_level,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.processing_level.id
            if content_model.metadata.processing_level else None)

        timeseries_result_form = TimeSeriesResultForm(
            instance=content_model.metadata.time_series_result,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.time_series_result.id
            if content_model.metadata.time_series_result else None)
        ext_md_layout = Layout(
            HTML("<div class='form-group col-lg-4 col-xs-12' id='site'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy site_form %} '
                 '</div>'),
            HTML('<div class="form-group col-lg-4 col-xs-12" id="variable"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy variable_form %} '
                 '</div> '),
            HTML('<div class="form-group col-lg-4 col-xs-12" id="method"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy method_form %} '
                 '</div> '),
            HTML(
                '<div class="form-group col-lg-4 col-xs-12" id="processinglevel"> '
                '{% load crispy_forms_tags %} '
                '{% crispy processing_level_form %} '
                '</div> '),
            HTML(
                '<div class="form-group col-lg-4 col-xs-12" id="timeseriesresult"> '
                '{% load crispy_forms_tags %} '
                '{% crispy timeseries_result_form %} '
                '</div> '),
        )

        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout)

        context['resource_type'] = 'Time Series Resource'
        context['site_form'] = site_form
        context['variable_form'] = variable_form
        context['method_form'] = method_form
        context['processing_level_form'] = processing_level_form
        context['timeseries_result_form'] = timeseries_result_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 29
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)
    if content_model.metadata.is_dirty:
        messages.info(request, "NetCDF file is out of sync with resource metadata changes.")

    if not edit_resource:  # not editing mode
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=None, request=request)
        extended_metadata_exists = False

        if content_model.metadata.variables.all() or content_model.metadata.ori_coverage.all():
            extended_metadata_exists = True
        elif content_model.files.all():
            for f in content_model.files.all():
                if '_header_info.txt' in f.resource_file.name:
                    extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists

        # add the variables context
        # the variables is the field name from NetCDFMetaData model
        context['variables'] = content_model.metadata.variables.all()

        # add the original coverage context
        ori_cov_dict = {}
        ori_cov_obj = content_model.metadata.ori_coverage.all().first()
        if ori_cov_obj:
            ori_cov_dict['name'] = ori_cov_obj.value.get('name', None)
            ori_cov_dict['units'] = ori_cov_obj.value['units']
            ori_cov_dict['projection'] = ori_cov_obj.value.get('projection', None)
            ori_cov_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_cov_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_cov_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_cov_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_cov_dict['projection_string_type'] = ori_cov_obj.projection_string_type
            ori_cov_dict['projection_string_text'] = ori_cov_obj.projection_string_text
            ori_cov_dict['datum'] = ori_cov_obj.datum
            context['original_coverage'] = ori_cov_dict
        else:
            context['original_coverage'] = None

    else:  # editing mode

        # Original Coverage in editing mode
        ori_cov_obj = content_model.metadata.ori_coverage.all().first()
        ori_cov_dict = {}
        if ori_cov_obj:
            ori_cov_dict['name'] = ori_cov_obj.value.get('name', None)
            ori_cov_dict['units'] = ori_cov_obj.value['units']
            ori_cov_dict['projection'] = ori_cov_obj.value.get('projection', None)
            ori_cov_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_cov_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_cov_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_cov_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_cov_dict['projection_string_type'] = ori_cov_obj.projection_string_type
            ori_cov_dict['projection_string_text'] = ori_cov_obj.projection_string_text
            ori_cov_dict['datum'] = ori_cov_obj.datum
        else:
            ori_cov_obj = None

        ori_cov_form = OriginalCoverageForm(initial=ori_cov_dict,
                                            allow_edit=edit_resource,
                                            res_short_id=content_model.short_id,
                                            element_id=ori_cov_obj.id if ori_cov_obj else None)

        ori_cov_form.delete_modal_form = OriginalCoverageMetaDelete(
            content_model.short_id, 'originalcoverage', ori_cov_obj.id if ori_cov_obj else None)

        # Variable Forms in editing mode
        VariableFormSetEdit = formset_factory(wraps(VariableForm)
                                              (partial(VariableForm, allow_edit=edit_resource)),
                                              formset=BaseFormSet, extra=0)
        variable_formset = VariableFormSetEdit(
            initial=content_model.metadata.variables.all().values(), prefix='variable')
        add_variable_modal_form = VariableForm(
            allow_edit=edit_resource, res_short_id=content_model.short_id)

        for form in variable_formset.forms:
            if len(form.initial) > 0:
                form.delete_modal_form = MetaDataElementDeleteForm(
                    content_model.short_id, 'variable', form.initial['id'])
                form.action = "/hsapi/_internal/%s/variable/%s/update-metadata/" % \
                              (content_model.short_id, form.initial['id'])
                form.number = form.initial['id']
            else:
                form.action = "/hsapi/_internal/%s/variable/add-metadata/" % content_model.short_id

        # netcdf file update notification in editing mode
        UpdateNetcdfLayout = HTML(content_model.metadata.get_update_netcdf_file_html_form())

        # get the context from hs_core
        ext_md_layout = Layout(
            UpdateNetcdfLayout,
            HTML(
                """
                    <div class="row">
                        <div class="form-group col-sm-6 col-xs-12" id="originalcoverage">
                        {% load crispy_forms_tags %}
                        {% crispy original_coverage_form %}
                        </div>
                    </div>
                """
            ),
            VariableLayoutEdit,
            ModalDialogLayoutAddVariable,)

        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)
        context['variable_formset'] = variable_formset
        context['add_variable_modal_form'] = add_variable_modal_form
        context['original_coverage_form'] = ori_cov_form

    # add thredds service links if the resource is public
    if content_model.raccess.public:
        for f in content_model.files.all():
            if '.nc' in f.resource_file.name[-3:]:
                ip = 'http://hyrax.hydroshare.org'
                shortkey = content_model.short_id
                nc_file_name = f.resource_file.name.split('/')[-1]

                context['opendap'] = '{}/opendap/{}/data/contents/{}.html'\
                    .format(ip, shortkey, nc_file_name)
                context['nc_file_name'] = nc_file_name

    # get hs_core context
    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 30
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            request=request,
            resource_edit=edit_resource,
            extended_metadata_layout=None)
        extended_metadata_exists = False
        if content_model.metadata.model_output or \
                content_model.metadata.executed_by or \
                content_model.metadata.study_area or \
                content_model.metadata.grid_dimensions or \
                content_model.metadata.stress_period or \
                content_model.metadata.ground_water_flow or \
                content_model.metadata.boundary_condition or \
                content_model.metadata.model_calibration or \
                content_model.metadata.model_inputs or \
                content_model.metadata.general_elements:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['model_output'] = content_model.metadata.model_output
        context['executed_by'] = content_model.metadata.executed_by
        context['study_area'] = content_model.metadata.study_area
        context['grid_dimensions'] = content_model.metadata.grid_dimensions
        context['stress_period'] = content_model.metadata.stress_period
        context['ground_water_flow'] = content_model.metadata.ground_water_flow
        context[
            'boundary_condition'] = content_model.metadata.boundary_condition
        context['model_calibration'] = content_model.metadata.model_calibration
        context['model_inputs'] = content_model.metadata.model_inputs
        context['general_elements'] = content_model.metadata.general_elements

    # add MODFLOW Model parameters context
    else:
        model_output_form = ModelOutputForm(
            instance=content_model.metadata.model_output,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_output.id
            if content_model.metadata.model_output else None)

        executed_by_form = ExecutedByForm(
            instance=content_model.metadata.executed_by,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.executed_by.id
            if content_model.metadata.executed_by else None)

        study_area_form = StudyAreaForm(
            instance=content_model.metadata.study_area,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.study_area.id
            if content_model.metadata.study_area else None)

        grid_dimensions_form = GridDimensionsForm(
            instance=content_model.metadata.grid_dimensions,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.grid_dimensions.id
            if content_model.metadata.grid_dimensions else None)

        stress_period_form = StressPeriodForm(
            instance=content_model.metadata.stress_period,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.stress_period.id
            if content_model.metadata.stress_period else None)

        ground_water_flow_form = GroundWaterFlowForm(
            instance=content_model.metadata.ground_water_flow,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.ground_water_flow.id
            if content_model.metadata.ground_water_flow else None)

        boundary_condition_form = BoundaryConditionForm(
            instance=content_model.metadata.boundary_condition,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.boundary_condition.id
            if content_model.metadata.boundary_condition else None)

        model_calibration_form = ModelCalibrationForm(
            instance=content_model.metadata.model_calibration,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_calibration.id
            if content_model.metadata.model_calibration else None)

        ModelInputFormSetEdit = formset_factory(wraps(ModelInputForm)(partial(
            ModelInputForm, allow_edit=True)),
                                                formset=BaseFormSet,
                                                extra=0)
        model_input_formset = ModelInputFormSetEdit(
            initial=content_model.metadata.model_inputs.values(),
            prefix='modelinput')
        for model_input_form in model_input_formset.forms:
            if len(model_input_form.initial) > 0:
                model_input_form.action = "/hsapi/_internal/%s/modelinput/%s/update-metadata/" % \
                                          (content_model.short_id, model_input_form.initial['id'])
                model_input_form.delete_modal_form = MetaDataElementDeleteForm(
                    content_model.short_id, 'modelinput',
                    model_input_form.initial['id'])
                model_input_form.number = model_input_form.initial['id']
            else:
                model_input_form.action = "/hsapi/_internal/%s/modelinput/add-metadata/" % \
                                          content_model.short_id

        add_modelinput_modal_form = ModelInputForm(
            allow_edit=False, res_short_id=content_model.short_id)

        general_elements_form = GeneralElementsForm(
            instance=content_model.metadata.general_elements,
            res_short_id=content_model.short_id,
            element_id=content_model.metadata.general_elements.id
            if content_model.metadata.general_elements else None)

        ext_md_layout = Layout(
            HTML("<div class='row'><div class='col-xs-12 col-sm-6'>"
                 "<div class='form-group' id='modeloutput'> "
                 '{% load crispy_forms_tags %} '
                 '{% crispy model_output_form %} '
                 '</div>'),
            HTML('<div class="form-group" id="executedby"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy executed_by_form %} '
                 '</div> '),
            HTML('<div class="form-group" id="boundarycondition"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy boundary_condition_form %} '
                 '</div>'),
            HTML('<div class="form-group" id="generalelements"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy general_elements_form %} '
                 '</div>'), HTML("</div>"), ModelInputLayoutEdit,
            ModalDialogLayoutAddModelInput,
            HTML('<div class="col-xs-12 col-sm-6">'
                 '<div class="form-group" id="studyarea"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy study_area_form %} '
                 '</div> '),
            HTML('<div class="form-group" id="griddimensions"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy grid_dimensions_form %} '
                 '</div>'),
            HTML('<div class="form-group" id="stressperiod"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy stress_period_form %} '
                 '</div>'),
            HTML('<div class="form-group" id="groundwaterflow"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy ground_water_flow_form %} '
                 '</div>'),
            HTML('<div class="form-group" id="modelcalibration"> '
                 '{% load crispy_forms_tags %} '
                 '{% crispy model_calibration_form %} '
                 '</div></div></div>'))

        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout,
            request=request)

        context['resource_type'] = 'MODFLOW Model Instance Resource'
        context['model_output_form'] = model_output_form
        context['executed_by_form'] = executed_by_form
        context['study_area_form'] = study_area_form
        context['grid_dimensions_form'] = grid_dimensions_form
        context['stress_period_form'] = stress_period_form
        context['ground_water_flow_form'] = ground_water_flow_form
        context['boundary_condition_form'] = boundary_condition_form
        context['model_calibration_form'] = model_calibration_form
        context['model_input_formset'] = model_input_formset
        context['add_modelinput_modal_form'] = add_modelinput_modal_form
        context['general_elements_form'] = general_elements_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 31
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:  # non-edit mode
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=None, request=request)
        extended_metadata_exists = False

        if content_model.metadata.originalcoverage:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists

        # add the original coverage context
        geom_info_for_view = {}
        geom_info = content_model.metadata.geometryinformation
        if geom_info:
            geom_info_for_view['geometryType'] = geom_info.geometryType
            geom_info_for_view['featureCount'] = geom_info.featureCount
            context['geometry_information'] = geom_info_for_view

        ori_cov_dict = {}
        ori_cov_obj = content_model.metadata.originalcoverage
        if ori_cov_obj:
            ori_cov_dict['northlimit'] = ori_cov_obj.northlimit
            ori_cov_dict['eastlimit'] = ori_cov_obj.eastlimit
            ori_cov_dict['southlimit'] = ori_cov_obj.southlimit
            ori_cov_dict['westlimit'] = ori_cov_obj.westlimit
            ori_cov_dict['projection_string'] = ori_cov_obj.projection_string
            ori_cov_dict['projection_name'] = ori_cov_obj.projection_name
            ori_cov_dict['datum'] = ori_cov_obj.datum
            ori_cov_dict['unit'] = ori_cov_obj.unit
            context['original_coverage'] = ori_cov_dict

        field_info_list = content_model.metadata.fieldinformations.all()
        field_info_list_context = []
        for field_info in field_info_list:
            field_info_dict_item = {}
            field_info_dict_item["fieldName"] = field_info.fieldName
            field_info_dict_item["fieldType"] = field_info.fieldType
            field_info_dict_item["fieldTypeCode"] = field_info.fieldTypeCode
            field_info_dict_item["fieldWidth"] = field_info.fieldWidth
            field_info_dict_item["fieldPrecision"] = field_info.fieldPrecision
            field_info_list_context.append(field_info_dict_item)
        context['field_information'] = field_info_list_context

    else:  # editing mode
        # now editing is allowed for resource specific metadata
        geom_info_for_view = {}
        geom_info = content_model.metadata.geometryinformation
        if geom_info:
            geom_info_for_view['geometryType'] = geom_info.geometryType
            geom_info_for_view['featureCount'] = geom_info.featureCount

        geom_information_form = GeometryInformationForm(initial=geom_info_for_view,
                                                        res_short_id=content_model.short_id,
                                                        allow_edit=False,
                                                        element_id=geom_info.id
                                                        if geom_info else None)

        geom_information_layout = HTML('<div class="form-group col-lg-6 col-xs-12" '
                                       'id="geometryinformation">'
                                       '{% load crispy_forms_tags %}'
                                       '{% crispy geom_information_form %}'
                                       '</div>')

        # origina coverage_form
        ori_cov_obj = content_model.metadata.originalcoverage
        ori_coverage_data_dict = {}
        if ori_cov_obj:
            ori_coverage_data_dict['projection_string'] = ori_cov_obj.projection_string
            ori_coverage_data_dict['projection_name'] = ori_cov_obj.projection_name
            ori_coverage_data_dict['datum'] = ori_cov_obj.datum
            ori_coverage_data_dict['unit'] = ori_cov_obj.unit
            ori_coverage_data_dict['northlimit'] = ori_cov_obj.northlimit
            ori_coverage_data_dict['eastlimit'] = ori_cov_obj.eastlimit
            ori_coverage_data_dict['southlimit'] = ori_cov_obj.southlimit
            ori_coverage_data_dict['westlimit'] = ori_cov_obj.westlimit

        ori_coverage_form = OriginalCoverageForm(initial=ori_coverage_data_dict,
                                                 res_short_id=content_model.short_id,
                                                 allow_edit=False,
                                                 element_id=ori_cov_obj.id
                                                 if ori_cov_obj else None)
        ori_coverage_layout = HTML('<div class="form-group col-lg-6 '
                                   'col-xs-12" id="originalcoverage"> '
                                   '{% load crispy_forms_tags %} '
                                   '{% crispy ori_coverage_form %} '
                                   '</div>')
        root_div = div(cls="col-md-12 col-sm-12 pull-left", style="margin-bottom:40px;")
        with root_div:
            legend('Field Information')
            with table(style="width: 100%;"):
                with tbody():
                    with tr(cls='row'):
                        th('Name')
                        th('Type')
                        th('Width')
                        th('Precision')

                    for field_info in content_model.metadata.fieldinformations.all():
                        field_info.get_html(pretty=False)

        ext_md_layout = Layout(geom_information_layout,
                               ori_coverage_layout,
                               HTML(root_div.render()))

        context = page_processors.get_page_context(page,
                                                   request.user,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)
        context['ori_coverage_form'] = ori_coverage_form
        context['geom_information_form'] = geom_information_form

    context['edit_mode'] = edit_resource
    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 32
0
def _get_resource_edit_context(page, request, content_model,
                               selected_series_id, series_ids,
                               ts_result_value_count,
                               extended_metadata_exists):

    if series_ids and selected_series_id is not None:
        selected_series_label = series_ids[selected_series_id]
    else:
        selected_series_label = ''

    utcoffset_form = None
    if content_model.has_csv_file:
        utc_offset = content_model.metadata.utc_offset
        utcoffset_form = UTCOffSetForm(
            instance=utc_offset,
            res_short_id=content_model.short_id,
            element_id=utc_offset.id if utc_offset else None,
            selected_series_id=selected_series_id)
    # create timeseries specific metadata element forms
    site_form = _create_site_form(resource=content_model,
                                  selected_series_id=selected_series_id)
    variable_form = _create_variable_form(
        resource=content_model, selected_series_id=selected_series_id)
    method_form = _create_method_form(resource=content_model,
                                      selected_series_id=selected_series_id)
    processing_level_form = _create_processing_level_form(
        resource=content_model, selected_series_id=selected_series_id)

    time_series_result = content_model.metadata.time_series_results.filter(
        series_ids__contains=[selected_series_id]).first()
    timeseries_result_form = TimeSeriesResultForm(
        instance=time_series_result,
        res_short_id=content_model.short_id,
        element_id=time_series_result.id if time_series_result else None,
        cv_sample_mediums=content_model.metadata.cv_mediums.all(),
        cv_units_types=content_model.metadata.cv_units_types.all(),
        cv_aggregation_statistics=content_model.metadata.
        cv_aggregation_statistics.all(),
        cv_statuses=content_model.metadata.cv_statuses.all(),
        selected_series_id=selected_series_id)

    if time_series_result is not None:
        timeseries_result_form.action = _get_element_update_form_action(
            'timeseriesresult', content_model.short_id, time_series_result.id)
        timeseries_result_form.number = time_series_result.id
        timeseries_result_form.set_dropdown_widgets(
            timeseries_result_form.initial['sample_medium'],
            timeseries_result_form.initial['units_type'],
            timeseries_result_form.initial['aggregation_statistics'],
            timeseries_result_form.initial['status'])
    else:
        timeseries_result_form.set_dropdown_widgets()
        timeseries_result_form.set_series_label(selected_series_label)
        timeseries_result_form.set_value_count(ts_result_value_count)

    ext_md_layout = Layout(UpdateSQLiteLayout, SeriesSelectionLayout,
                           TimeSeriesMetaDataLayout, UTCOffSetLayout)

    if content_model.files.all().count() == 0:
        ext_md_layout = Layout(
            HTML("""<div class="alert alert-warning"><strong>No resource
        specific metadata is available. Add an ODM2 SQLite file or CSV file to see
        metadata.</strong></div>"""))

    # get the context from hs_core
    context = page_processors.get_page_context(
        page,
        request.user,
        resource_edit=True,
        extended_metadata_layout=ext_md_layout,
        request=request)

    # customize base context
    context['extended_metadata_exists'] = extended_metadata_exists
    context['resource_type'] = 'Time Series Resource'
    context['selected_series_id'] = selected_series_id
    context['series_ids'] = series_ids
    context['utcoffset_form'] = utcoffset_form
    context['site_form'] = site_form
    context['variable_form'] = variable_form
    context['method_form'] = method_form
    context['processing_level_form'] = processing_level_form
    context['timeseries_result_form'] = timeseries_result_form
    return context
Ejemplo n.º 33
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, request=request,
                                                   resource_edit=edit_resource,
                                                   extended_metadata_layout=None)
        extended_metadata_exists = False
        if content_model.metadata.model_output or \
                content_model.metadata.executed_by or \
                content_model.metadata.model_objective or \
                content_model.metadata.simulation_type or \
                content_model.metadata.model_method or \
                content_model.metadata.model_parameter or \
                content_model.metadata.model_input:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['model_output'] = content_model.metadata.model_output
        context['executed_by'] = content_model.metadata.executed_by
        context['model_objective'] = content_model.metadata.model_objective
        context['simulation_type'] = content_model.metadata.simulation_type
        context['model_method'] = content_model.metadata.model_method
        context['model_parameter'] = content_model.metadata.model_parameter
        context['model_input'] = content_model.metadata.model_input

        # add SWAT Model parameters context
    else:
        model_output_form = ModelOutputForm(
            instance=content_model.metadata.model_output, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_output.id
            if content_model.metadata.model_output else None)

        executed_by_form = ExecutedByForm(
            instance=content_model.metadata.executed_by, res_short_id=content_model.short_id,
            element_id=content_model.metadata.executed_by.id
            if content_model.metadata.executed_by else None)

        model_objective_form = ModelObjectiveForm(
            instance=content_model.metadata.model_objective, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_objective.id
            if content_model.metadata.model_objective else None)

        simulation_type_form = SimulationTypeForm(
            instance=content_model.metadata.simulation_type, res_short_id=content_model.short_id,
            element_id=content_model.metadata.simulation_type.id
            if content_model.metadata.simulation_type else None)

        model_method_form = ModelMethodForm(
            instance=content_model.metadata.model_method, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_method.id
            if content_model.metadata.model_method else None)

        model_parameter_form = ModelParameterForm(
            instance=content_model.metadata.model_parameter, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_parameter.id if
            content_model.metadata.model_parameter else None)

        model_input_form = ModelInputForm(
            instance=content_model.metadata.model_input, res_short_id=content_model.short_id,
            element_id=content_model.metadata.model_input.id
            if content_model.metadata.model_input else None)

        ext_md_layout = Layout(HTML("<div class='col-xs-12 col-sm-6'>"
                                    "<div class='form-group' id='modeloutput'> "
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_output_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="executedby"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy executed_by_form %} '
                                    '</div> '),

                               HTML('<div class="form-group" id="modelobjective"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_objective_form %} '
                                    '</div> '),

                               HTML('<div class="form-group" id="simulationtype"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy simulation_type_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="modelmethod"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_method_form %} '
                                    '</div>'),

                               HTML('<div class="form-group" id="modelparameter"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_parameter_form %} '
                                    '</div></div>'),

                               HTML('<div class="col-xs-12 col-sm-6">'
                                    '<div class="form-group" id="modelinput"> '
                                    '{% load crispy_forms_tags %} '
                                    '{% crispy model_input_form %} '
                                    '</div></div>'),
                               )

        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource,
                                                   extended_metadata_layout=ext_md_layout,
                                                   request=request)

        context['resource_type'] = 'SWAT Model Instance Resource'
        context['model_output_form'] = model_output_form
        context['executed_by_form'] = executed_by_form
        context['model_objective_form'] = model_objective_form
        context['simulation_type_form'] = simulation_type_form
        context['model_method_form'] = model_method_form
        context['model_parameter_form'] = model_parameter_form
        context['model_input_form'] = model_input_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 34
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)
    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=None, request=request)
        extended_metadata_exists = False
        if content_model.metadata.site or \
                content_model.metadata.variable or \
                content_model.metadata.method or \
                content_model.metadata.processing_level or \
                content_model.metadata.time_series_result:
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['site'] = content_model.metadata.site
        context['variable'] = content_model.metadata.variable
        context['method'] = content_model.metadata.method
        context['processing_level'] = content_model.metadata.processing_level
        context['timeseries_result'] = content_model.metadata.time_series_result
    else:
        site_form = SiteForm(instance=content_model.metadata.site, res_short_id=content_model.short_id,
                             element_id=content_model.metadata.site.id if content_model.metadata.site else None)

        variable_form = VariableForm(instance=content_model.metadata.variable, res_short_id=content_model.short_id,
                             element_id=content_model.metadata.variable.id if content_model.metadata.variable else None)

        method_form = MethodForm(instance=content_model.metadata.method, res_short_id=content_model.short_id,
                                 element_id=content_model.metadata.method.id if content_model.metadata.method else None)

        processing_level_form = ProcessingLevelForm(instance=content_model.metadata.processing_level,
                                                    res_short_id=content_model.short_id,
                                                    element_id=content_model.metadata.processing_level.id
                                                    if content_model.metadata.processing_level else None)

        timeseries_result_form = TimeSeriesResultForm(instance=content_model.metadata.time_series_result,
                                                      res_short_id=content_model.short_id,
                                                      element_id=content_model.metadata.time_series_result.id
                                                      if content_model.metadata.time_series_result else None)
        ext_md_layout = Layout(
                                HTML("<div class='form-group col-lg-4 col-xs-12' id='site'> "
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy site_form %} '
                                     '</div>'),

                                HTML('<div class="form-group col-lg-4 col-xs-12" id="variable"> '
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy variable_form %} '
                                     '</div> '),

                                HTML('<div class="form-group col-lg-4 col-xs-12" id="method"> '
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy method_form %} '
                                     '</div> '),

                                HTML('<div class="form-group col-lg-4 col-xs-12" id="processinglevel"> '
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy processing_level_form %} '
                                     '</div> '),

                                HTML('<div class="form-group col-lg-4 col-xs-12" id="timeseriesresult"> '
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy timeseries_result_form %} '
                                     '</div> '),
                        )


        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=ext_md_layout)

        context['resource_type'] = 'Time Series Resource'
        context['site_form'] = site_form
        context['variable_form'] = variable_form
        context['method_form'] = method_form
        context['processing_level_form'] = processing_level_form
        context['timeseries_result_form'] = timeseries_result_form


    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)
    return context
Ejemplo n.º 35
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:  # not editing mode
        # get the context from hs_core
        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=None,
            request=request)
        extended_metadata_exists = False

        if content_model.metadata.variables.all(
        ) or content_model.metadata.ori_coverage.all():
            extended_metadata_exists = True
        elif content_model.files.all():
            for f in content_model.files.all():
                if '_header_info.txt' in f.resource_file.name:
                    extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists

        # add the variables context
        context['variables'] = content_model.metadata.variables.all(
        )  # the variables is the field name from NetCDFMetaData model

        # add the original coverage context
        ori_cov_dict = {}
        ori_cov_obj = content_model.metadata.ori_coverage.all().first()
        if ori_cov_obj:
            ori_cov_dict['name'] = ori_cov_obj.value.get('name', None)
            ori_cov_dict['units'] = ori_cov_obj.value['units']
            ori_cov_dict['projection'] = ori_cov_obj.value.get(
                'projection', None)
            ori_cov_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_cov_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_cov_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_cov_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_cov_dict[
                'projection_string_type'] = ori_cov_obj.projection_string_type
            ori_cov_dict[
                'projection_string_text'] = ori_cov_obj.projection_string_text
            context['original_coverage'] = ori_cov_dict
        else:
            context['original_coverage'] = None

    else:  # editing mode

        # Original Coverage in editing mode
        ori_cov_obj = content_model.metadata.ori_coverage.all().first()
        ori_cov_dict = {}
        if ori_cov_obj:
            ori_cov_dict['name'] = ori_cov_obj.value.get('name', None)
            ori_cov_dict['units'] = ori_cov_obj.value['units']
            ori_cov_dict['projection'] = ori_cov_obj.value.get(
                'projection', None)
            ori_cov_dict['northlimit'] = ori_cov_obj.value['northlimit']
            ori_cov_dict['eastlimit'] = ori_cov_obj.value['eastlimit']
            ori_cov_dict['southlimit'] = ori_cov_obj.value['southlimit']
            ori_cov_dict['westlimit'] = ori_cov_obj.value['westlimit']
            ori_cov_dict[
                'projection_string_type'] = ori_cov_obj.projection_string_type
            ori_cov_dict[
                'projection_string_text'] = ori_cov_obj.projection_string_text
        else:
            ori_cov_obj = None

        ori_cov_form = OriginalCoverageForm(
            initial=ori_cov_dict,
            allow_edit=edit_resource,
            res_short_id=content_model.short_id,
            element_id=ori_cov_obj.id if ori_cov_obj else None)

        ori_cov_form.delete_modal_form = OriginalCoverageMetaDelete(
            content_model.short_id, 'originalcoverage',
            ori_cov_obj.id if ori_cov_obj else None)

        # Variable Forms in editing mode
        VariableFormSetEdit = formset_factory(wraps(VariableForm)(partial(
            VariableForm, allow_edit=edit_resource)),
                                              formset=BaseFormSet,
                                              extra=0)
        variable_formset = VariableFormSetEdit(
            initial=content_model.metadata.variables.all().values(),
            prefix='variable')
        add_variable_modal_form = VariableForm(
            allow_edit=edit_resource, res_short_id=content_model.short_id)

        for form in variable_formset.forms:
            if len(form.initial) > 0:
                form.delete_modal_form = MetaDataElementDeleteForm(
                    content_model.short_id, 'variable', form.initial['id'])
                form.action = "/hsapi/_internal/%s/variable/%s/update-metadata/" % (
                    content_model.short_id, form.initial['id'])
                form.number = form.initial['id']
            else:
                form.action = "/hsapi/_internal/%s/variable/add-metadata/" % content_model.short_id

        # get the context from hs_core
        ext_md_layout = Layout(
            AccordionGroup(
                'Spatial Reference',
                HTML(
                    '<div class="form-group col-lg-6 col-xs-12" id="originalcoverage"> '
                    '{% load crispy_forms_tags %} '
                    '{% crispy original_coverage_form %} '
                    '</div> '
                    '<div class="row" style="margin-top:10px">'
                    '<div class="col-md-10">'
                    '<input class="btn-danger btn btn-md" onclick="check_ori_meta_status()" type="button" data-toggle="modal" data-target="#delete-original-coverage-element-dialog" value="Delete Spatial Reference">'
                    '</div>'
                    '</div>'
                    '<hr style="border: 0;">'
                    '{% crispy original_coverage_form.delete_modal_form %} '),
            ),
            AccordionGroup('Variable', VariableLayoutEdit),
            ModalDialogLayoutAddVariable,
        )

        context = page_processors.get_page_context(
            page,
            request.user,
            resource_edit=edit_resource,
            extended_metadata_layout=ext_md_layout)
        context['variable_formset'] = variable_formset
        context['add_variable_modal_form'] = add_variable_modal_form
        context['original_coverage_form'] = ori_cov_form

    hs_core_context = add_generic_context(request, page)
    context.update(hs_core_context)

    return context
Ejemplo n.º 36
0
def landing_page(request, page):
    content_model = page.get_content_model()
    edit_resource = page_processors.check_resource_mode(request)

    if not edit_resource:
        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=None)
        extended_metadata_exists = False
        if content_model.metadata.url_bases.first() or \
                content_model.metadata.res_types.first():
            extended_metadata_exists = True

        context['extended_metadata_exists'] = extended_metadata_exists
        context['url_base'] = content_model.metadata.url_bases.first()
        context['res_types'] = content_model.metadata.res_types.all()
        context['fees'] = content_model.metadata.fees.all()
        context['version'] = content_model.metadata.versions.first()
    else:
        url_base = content_model.metadata.url_bases.first()
        url_base_form = UrlBaseForm(instance=url_base,
                                    res_short_id=content_model.short_id,
                                    element_id=url_base.id
                                    if url_base else None)

        res_type = content_model.metadata.res_types.first()
        res_type_form = ResTypeForm(instance=res_type,
                                    res_short_id=content_model.short_id,
                                    element_id=res_type.id
                                    if res_type else None)


        fee = content_model.metadata.fees.first()
        fees_form = FeeForm(instance=fee,
                            res_short_id=content_model.short_id,
                            element_id=fee.id
                            if fee else None)

        version = content_model.metadata.versions.first()
        version_form = VersionForm(instance=version,
                                   res_short_id=content_model.short_id,
                                   element_id=version.id
                                   if version else None)

        ext_md_layout = Layout(HTML("<div class='form-group col-lg-6 col-xs-12' id='url_bases'> "
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy url_base_form %} '
                                     '</div>'),
                                HTML("<div class='form-group col-lg-6 col-xs-12' id='res_types'> "
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy res_type_form %} '
                                     '</div>'),
                                HTML('<div class="form-group col-lg-6 col-xs-12" id="fees"> '
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy fees_form %} '
                                     '</div> '),
                                HTML('<div class="form-group col-lg-6 col-xs-12" id="version"> '
                                        '{% load crispy_forms_tags %} '
                                        '{% crispy version_form %} '
                                     '</div> '),
                        )


        # get the context from hs_core
        context = page_processors.get_page_context(page, request.user, resource_edit=edit_resource, extended_metadata_layout=ext_md_layout)

        res_type_names = []
        for res_type_class in get_resource_types():
            res_type_names.append(res_type_class.__name__)

        context['resource_type'] = 'Tool Resource'
        context['url_base_form'] = url_base_form
        context['res_type_form'] = res_type_form
        context['fees_form'] = fees_form
        context['version_form'] = version_form
        context['res_types'] = res_type_names

    hs_core_dublin_context = add_generic_context(request, page)
    context.update(hs_core_dublin_context)

    return context