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
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
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
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
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
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
def landing_page(request, page): """ A typical Mezzanine page processor. """ content_model = page.get_content_model() edit_resource = page_processors.check_resource_mode(request) if content_model.metadata.is_dirty and content_model.can_update_sqlite_file: messages.info(request, "SQLite file is out of sync with metadata changes.") extended_metadata_exists = False if content_model.metadata.sites or \ content_model.metadata.variables or \ content_model.metadata.methods or \ content_model.metadata.processing_levels or \ content_model.metadata.time_series_results: extended_metadata_exists = True series_ids = content_model.metadata.series_ids_with_labels if 'series_id' in request.GET: selected_series_id = request.GET['series_id'] if selected_series_id not in series_ids.keys(): # this will happen only in case of CSV file upload when data is written # first time to the blank sqlite file as the series ids get changed to # uuids selected_series_id = series_ids.keys()[0] if 'series_id' in request.session: if selected_series_id != request.session['series_id']: request.session['series_id'] = selected_series_id else: request.session['series_id'] = selected_series_id else: selected_series_id = series_ids.keys()[0] if series_ids.keys() else None request.session['series_id'] = selected_series_id ts_result_value_count = None if content_model.metadata.series_names and selected_series_id is not None: sorted_series_names = sorted(content_model.metadata.series_names) selected_series_name = sorted_series_names[int(selected_series_id)] ts_result_value_count = int(content_model.metadata.value_counts[selected_series_name]) # view depends on whether the resource is being edited if not edit_resource: # resource in VIEW Mode context = _get_resource_view_context(page, request, content_model, selected_series_id, series_ids, extended_metadata_exists) else: # resource in EDIT Mode context = _get_resource_edit_context(page, request, content_model, selected_series_id, series_ids, ts_result_value_count, extended_metadata_exists) # TODO: can we refactor to make it impossible to skip adding the generic context hs_core_context = add_generic_context(request, page) context.update(hs_core_context) return context
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
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
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
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
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
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
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
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
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
def landing_page(request, page): """ A typical Mezzanine page processor. """ content_model = page.get_content_model() edit_resource = page_processors.check_resource_mode(request) if content_model.metadata.is_dirty and content_model.can_update_sqlite_file: messages.info(request, "SQLite file is out of sync with metadata changes.") extended_metadata_exists = False if content_model.metadata.sites or \ content_model.metadata.variables or \ content_model.metadata.methods or \ content_model.metadata.processing_levels or \ content_model.metadata.time_series_results: extended_metadata_exists = True series_ids = content_model.metadata.series_ids_with_labels if 'series_id' in request.GET: selected_series_id = request.GET['series_id'] if selected_series_id not in series_ids.keys(): # this will happen only in case of CSV file upload when data is written # first time to the blank sqlite file as the series ids get changed to # uuids selected_series_id = series_ids.keys()[0] if 'series_id' in request.session: if selected_series_id != request.session['series_id']: request.session['series_id'] = selected_series_id else: request.session['series_id'] = selected_series_id else: selected_series_id = series_ids.keys()[0] if series_ids.keys( ) else None request.session['series_id'] = selected_series_id ts_result_value_count = None if content_model.metadata.series_names and selected_series_id is not None: sorted_series_names = sorted(content_model.metadata.series_names) selected_series_name = sorted_series_names[int(selected_series_id)] ts_result_value_count = int( content_model.metadata.value_counts[selected_series_name]) # view depends on whether the resource is being edited if not edit_resource: # resource in VIEW Mode context = _get_resource_view_context(page, request, content_model, selected_series_id, series_ids, extended_metadata_exists) if isinstance(context, HttpResponseRedirect): # sending user to login page return context else: # resource in EDIT Mode context = _get_resource_edit_context(page, request, content_model, selected_series_id, series_ids, ts_result_value_count, extended_metadata_exists) # TODO: can we refactor to make it impossible to skip adding the generic context hs_core_context = add_generic_context(request, page) context.update(hs_core_context) return context
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
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
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
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
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
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
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
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
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
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
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
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
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
def landing_page(request, page): """ A typical Mezzanine page processor. """ content_model = page.get_content_model() edit_resource = page_processors.check_resource_mode(request) if content_model.metadata.is_dirty and content_model.can_update_sqlite_file: messages.info(request, "SQLite file is out of sync with metadata changes.") extended_metadata_exists = False if content_model.metadata.sites or \ content_model.metadata.variables or \ content_model.metadata.methods or \ content_model.metadata.processing_levels or \ content_model.metadata.time_series_results: extended_metadata_exists = True series_ids = {} if content_model.has_csv_file and content_model.metadata.series_names: # this condition is true if the user has uploaded a csv file and the blank # sqlite file (added by the system) has never been synced before with metadata changes for index, series_name in enumerate( content_model.metadata.series_names): series_ids[str(index)] = series_name else: for result in content_model.metadata.time_series_results: series_id = result.series_ids[0] series_ids[series_id] = _get_series_label(series_id, content_model) # sort the dict on series names - item[1] series_ids = OrderedDict( sorted(series_ids.items(), key=lambda item: item[1].lower())) if 'series_id' in request.GET: selected_series_id = request.GET['series_id'] if selected_series_id not in series_ids.keys(): # this will happen only in case of CSV file upload when data is written # first time to the blank sqlite file as the series ids get changed to # uuids selected_series_id = series_ids.keys()[0] if 'series_id' in request.session: if selected_series_id != request.session['series_id']: is_resource_specific_tab_active = True request.session['series_id'] = selected_series_id else: is_resource_specific_tab_active = False else: request.session['series_id'] = selected_series_id is_resource_specific_tab_active = False else: selected_series_id = series_ids.keys()[0] if series_ids.keys( ) else None request.session['series_id'] = selected_series_id is_resource_specific_tab_active = False ts_result_value_count = None if content_model.metadata.series_names and selected_series_id is not None: sorted_series_names = sorted(content_model.metadata.series_names) selected_series_name = sorted_series_names[int(selected_series_id)] ts_result_value_count = int( content_model.metadata.value_counts[selected_series_name]) # view depends on whether the resource is being edited if not edit_resource: # resource in VIEW Mode context = _get_resource_view_context(page, request, content_model, selected_series_id, series_ids, extended_metadata_exists) else: # resource in EDIT Mode context = _get_resource_edit_context(page, request, content_model, selected_series_id, series_ids, ts_result_value_count, extended_metadata_exists) context[ 'is_resource_specific_tab_active'] = is_resource_specific_tab_active # TODO: can we refactor to make it impossible to skip adding the generic context hs_core_context = add_generic_context(request, page) context.update(hs_core_context) return context
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
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
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