tender
) can't be both a value (tender
), a path to "
@@ -1460,3 +1462,12 @@ msgid ""
""
"span> Error message: {}"
msgstr ""
+
+#: cove_ocds/views.py:147
+msgid "JSON reference error"
+msgstr ""
+
+#: cove_ocds/views.py:159
+#, python-format
+msgid "%(error)s"
+msgstr ""
diff --git a/cove_ocds/locale/es/LC_MESSAGES/django.po b/cove_ocds/locale/es/LC_MESSAGES/django.po
index 0e60dad3..3643c53b 100644
--- a/cove_ocds/locale/es/LC_MESSAGES/django.po
+++ b/cove_ocds/locale/es/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-10-10 00:56+0000\n"
+"POT-Creation-Date: 2024-10-19 04:51+0000\n"
"PO-Revision-Date: 2020-09-08 08:53+0000\n"
"Last-Translator: James McKinney, 2024\n"
"Language-Team: Spanish (https://app.transifex.com/open-contracting-"
@@ -27,66 +27,6 @@ msgstr ""
"Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? "
"1 : 2;\n"
-#: cove_ocds/lib/exceptions.py:12
-msgid "Unrecognised version of the schema"
-msgstr "Versión del esquema no reconocida"
-
-#: cove_ocds/lib/exceptions.py:14 cove_ocds/lib/exceptions.py:34
-#: cove_ocds/lib/exceptions.py:57 cove_ocds/lib/exceptions.py:77
-#: cove_ocds/views.py:90 cove_ocds/views.py:108 cove_ocds/views.py:126
-#: cove_ocds/views.py:237
-msgid "Try Again"
-msgstr "Inténtelo de nuevo"
-
-#: cove_ocds/lib/exceptions.py:24 cove_ocds/lib/exceptions.py:47
-#, python-format
-msgid "%(version)s is not a known schema version"
-msgstr "%(version)s no es una versión conocida del esquema"
-
-#: cove_ocds/lib/exceptions.py:32
-msgid "Version format does not comply with the schema"
-msgstr "El formato de la versión no se ajusta al esquema"
-
-#: cove_ocds/lib/exceptions.py:55
-msgid "JSON reference error"
-msgstr "Error de referencia en JSON"
-
-#: cove_ocds/lib/exceptions.py:67
-#, python-format
-msgid "%(error)s"
-msgstr "%(error)s"
-
-#: cove_ocds/lib/exceptions.py:75 cove_ocds/lib/exceptions.py:92
-msgid "Missing OCDS package"
-msgstr "Paquete OCDS no encontrado"
-
-#: cove_ocds/lib/exceptions.py:80
-msgid ""
-"We could not detect a package structure at the top-level of your data. OCDS "
-"releases and records should be published within a release package "
-"a> or record package to provide important meta-data. For "
-"more information, please refer to the Releases and "
-"Records section in the OCDS documentation.\n"
-"\n"
-""
-"span> Error message: Missing OCDS package"
-msgstr ""
-"No pudimos detectar una estructura de paquete en el nivel superior de sus "
-"datos. Las versiones y registros de OCDS deben publicarse dentro de un paquete de entrega o paquete de registros "
-"para proporcionar metadatos importantes. Para obtener más información, "
-"consulte la sección Entregas y registros en la documentación "
-"de OCDS.\n"
-"\n"
-""
-"span> Mensaje de error: Falta el paquete OCDS"
-
#: cove_ocds/templates/cove_ocds/additional_checks_table.html:7
msgid "Check Description"
msgstr "Compruebe la Descripción"
@@ -268,9 +208,8 @@ msgid ""
"example/1.1/ocds-213czf-000-00001-02-tender.json"
msgstr ""
"Para ver cómo funciona la herramienta de revisión de datos, intente subir "
-"https://raw.githubusercontent.com/open-"
-"contracting/sample-data/main/fictional-example/1.1/ocds-213czf-000-00001-02-"
-"tender.json
"
+"https://raw.githubusercontent.com/open-contracting/sample-data/main/"
+"fictional-example/1.1/ocds-213czf-000-00001-02-tender.json
"
#: cove_ocds/templates/cove_ocds/base.html:153
msgid "Built by"
@@ -1660,36 +1599,18 @@ msgstr ""
"DDT00:00:00Z. Lea más sobre fechas en OCDS"
-#: cove_ocds/views.py:50
-msgid "Sorry, the page you are looking for is not available"
-msgstr "Lo sentimos, la página que está buscando no está disponible"
-
-#: cove_ocds/views.py:52
-msgid "Go to Home page"
-msgstr "Ir a la Página de Inicio"
-
-#: cove_ocds/views.py:55
-#, python-format
-msgid ""
-"The data you were hoping to explore no longer exists.\n"
-"\n"
-"This is because all data supplied to this website is automatically deleted "
-"after %s days, and therefore the analysis of that data is no longer "
-"available."
-msgstr ""
-"Los datos que usted quería explorar ya no existen.\n"
-"\n"
-"Esto se debe a que todos los datos suministrados a este sitio web se borran "
-"automáticamente después de 7 días, y por lo tanto el análisis de esos datos "
-"automáticamente después de %s días, y por lo tanto el análisis de esos datos "
-"ya no está disponible."
-
-#: cove_ocds/views.py:88 cove_ocds/views.py:106 cove_ocds/views.py:124
-#: cove_ocds/views.py:235
+#: cove_ocds/util.py:20 cove_ocds/util.py:39 cove_ocds/util.py:57
+#: cove_ocds/views.py:112
msgid "Sorry, we can't process that data"
msgstr "Lo sentimos, no podemos procesar esos datos"
-#: cove_ocds/views.py:93
+#: cove_ocds/util.py:23 cove_ocds/util.py:42 cove_ocds/util.py:59
+#: cove_ocds/util.py:85 cove_ocds/util.py:108 cove_ocds/util.py:127
+#: cove_ocds/views.py:114 cove_ocds/views.py:149
+msgid "Try Again"
+msgstr "Inténtelo de nuevo"
+
+#: cove_ocds/util.py:26
msgid ""
"The file that you uploaded doesn't appear to be well formed JSON. OCDS JSON "
"follows the I-JSON format, which requires UTF-8 encoding. Ensure that your "
@@ -1706,7 +1627,7 @@ msgstr ""
""
"span> Mensaje del error: {}"
-#: cove_ocds/views.py:111
+#: cove_ocds/util.py:45
msgid ""
"We think you tried to upload a JSON file, but it is not well formed JSON.\n"
"\n"
@@ -1719,7 +1640,7 @@ msgstr ""
""
"span> Mensaje del error: {}"
-#: cove_ocds/views.py:127
+#: cove_ocds/util.py:60
msgid ""
"OCDS JSON should have an object as the top level, the JSON you supplied does "
"not."
@@ -1727,7 +1648,81 @@ msgstr ""
"OCDS JSON debe ser un objeto al nivel más alto pero el JSON que usted ha "
"aportado no lo es."
-#: cove_ocds/views.py:240
+#: cove_ocds/util.py:82 cove_ocds/util.py:83
+msgid "Missing OCDS package"
+msgstr "Paquete OCDS no encontrado"
+
+#: cove_ocds/util.py:88
+msgid ""
+"We could not detect a package structure at the top-level of your data. OCDS "
+"releases and records should be published within a release package "
+"a> or record package to provide important meta-data. For "
+"more information, please refer to the Releases and "
+"Records section in the OCDS documentation.\n"
+"\n"
+""
+"span> Error message: Missing OCDS package"
+msgstr ""
+"No pudimos detectar una estructura de paquete en el nivel superior de sus "
+"datos. Las versiones y registros de OCDS deben publicarse dentro de un paquete de entrega o paquete de registros "
+"para proporcionar metadatos importantes. Para obtener más información, "
+"consulte la sección Entregas y registros en la documentación "
+"de OCDS.\n"
+"\n"
+""
+"span> Mensaje de error: Falta el paquete OCDS"
+
+#: cove_ocds/util.py:105
+msgid "Unrecognised version of the schema"
+msgstr "Versión del esquema no reconocida"
+
+#: cove_ocds/util.py:106 cove_ocds/util.py:125
+#, python-format
+msgid "%(version)s is not a known schema version"
+msgstr "%(version)s no es una versión conocida del esquema"
+
+#: cove_ocds/util.py:111
+msgid ""
+"We think you tried to run your data against an unrecognised version of the "
+"schema.\n"
+"\n"
+""
+"span> Error message: {} is not a recognised choice "
+"for the schema version"
+msgstr ""
+
+#: cove_ocds/util.py:124
+msgid "Version format does not comply with the schema"
+msgstr "El formato de la versión no se ajusta al esquema"
+
+#: cove_ocds/util.py:130
+msgid ""
+"The value for the \"version\" field in your data follows the "
+"major.minor.patch pattern but according to the schema the patch "
+"digit shouldn't be included (e.g. \"1.1.0\" should appear as "
+"\"1.1\" in your data as this tool always uses the latest patch "
+"release for a major.minor version).\n"
+"\n"
+"Please get rid of the patch digit and try again.\n"
+"\n"
+""
+"span> Error message: {} format does not comply "
+"with the schema"
+msgstr ""
+
+#: cove_ocds/util.py:144
+#, python-format
+msgid "%(version)s (not a string)"
+msgstr ""
+
+#: cove_ocds/views.py:118
msgid ""
"The table isn't structured correctly. For example, a JSON Pointer "
"(tender
) can't be both a value (tender
), a path to "
@@ -1744,3 +1739,33 @@ msgstr ""
"\n"
""
"span> Error message: {}"
+
+#: cove_ocds/views.py:147
+msgid "JSON reference error"
+msgstr "Error de referencia en JSON"
+
+#: cove_ocds/views.py:159
+#, python-format
+msgid "%(error)s"
+msgstr "%(error)s"
+
+#~ msgid "Sorry, the page you are looking for is not available"
+#~ msgstr "Lo sentimos, la página que está buscando no está disponible"
+
+#~ msgid "Go to Home page"
+#~ msgstr "Ir a la Página de Inicio"
+
+#, python-format
+#~ msgid ""
+#~ "The data you were hoping to explore no longer exists.\n"
+#~ "\n"
+#~ "This is because all data supplied to this website is automatically "
+#~ "deleted after %s days, and therefore the analysis of that data is no "
+#~ "longer available."
+#~ msgstr ""
+#~ "Los datos que usted quería explorar ya no existen.\n"
+#~ "\n"
+#~ "Esto se debe a que todos los datos suministrados a este sitio web se "
+#~ "borran automáticamente después de 7 días, y por lo tanto el análisis de "
+#~ "esos datos automáticamente después de %s días, y por lo tanto el análisis "
+#~ "de esos datos ya no está disponible."
diff --git a/cove_ocds/util.py b/cove_ocds/util.py
new file mode 100644
index 00000000..0a51be61
--- /dev/null
+++ b/cove_ocds/util.py
@@ -0,0 +1,203 @@
+import json
+import re
+from decimal import Decimal
+
+from django.utils.html import format_html, mark_safe
+from django.utils.translation import gettext as _
+from libcove.lib.common import schema_dict_fields_generator
+from libcove.lib.exceptions import CoveInputDataError
+from libcoveocds.schema import SchemaOCDS
+
+
+def read_json(path):
+ # Read as text, because the json module can read binary UTF-16 and UTF-32.
+ with open(path, encoding="utf-8") as f:
+ try:
+ data = json.load(f)
+ except UnicodeError as err:
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("Sorry, we can't process that data"),
+ "error": format(err),
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": format_html(
+ _(
+ "The file that you uploaded doesn't appear to be well formed JSON. OCDS JSON follows the "
+ "I-JSON format, which requires UTF-8 encoding. Ensure that your file uses UTF-8 encoding, "
+ "then try uploading again.\n\n"
+ ' '
+ "Error message: {}"
+ ),
+ err,
+ ),
+ }
+ ) from None
+ except ValueError as err:
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("Sorry, we can't process that data"),
+ "error": format(err),
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": format_html(
+ _(
+ "We think you tried to upload a JSON file, but it is not well formed JSON.\n\n"
+ ' '
+ "Error message: {}"
+ ),
+ err,
+ ),
+ }
+ ) from None
+
+ if not isinstance(data, dict):
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("Sorry, we can't process that data"),
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": _("OCDS JSON should have an object as the top level, the JSON you supplied does not."),
+ }
+ )
+
+ return data
+
+
+def get_schema(request, context, supplied_data, lib_cove_ocds_config, package_data):
+ request_version = request.POST.get("version")
+ data_version = package_data.get("version")
+
+ schema_ocds = SchemaOCDS(
+ # This will be the user-requested version, the previously-determined version, or None.
+ select_version=request_version or supplied_data.schema_version,
+ package_data=package_data,
+ lib_cove_ocds_config=lib_cove_ocds_config,
+ record_pkg="records" in package_data,
+ )
+
+ if schema_ocds.missing_package:
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("Missing OCDS package"),
+ "error": _("Missing OCDS package"),
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": mark_safe(
+ _(
+ "We could not detect a package structure at the top-level of your data. OCDS releases and "
+ 'records should be published within a release package or record package to provide important meta-data. '
+ 'For more information, please refer to the Releases and Records section in the OCDS '
+ "documentation.\n\n"
+ ' '
+ "Error message: Missing OCDS package"
+ )
+ ),
+ }
+ )
+
+ if schema_ocds.invalid_version_argument:
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("Unrecognised version of the schema"),
+ "error": _("%(version)s is not a known schema version") % {"version": request_version},
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": format_html(
+ _(
+ "We think you tried to run your data against an unrecognised version of the schema.\n\n"
+ ' '
+ "Error message: {} is not a recognised choice for the schema version",
+ ),
+ request_version,
+ ),
+ }
+ )
+
+ if schema_ocds.invalid_version_data:
+ if isinstance(data_version, str) and re.compile(r"^\d+\.\d+\.\d+$").match(data_version):
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("Version format does not comply with the schema"),
+ "error": _("%(version)s is not a known schema version") % {"version": data_version},
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": format_html(
+ _(
+ 'The value for the "version" field in your data follows the major.minor.'
+ "patch pattern but according to the schema the patch digit shouldn't be included "
+ '(e.g. "1.1.0" should appear as "1.1" in your data as this tool '
+ "always uses the latest patch release for a major.minor version).\n\n"
+ "Please get rid of the patch digit and try again.\n\n"
+ ' '
+ "Error message: {} format does not comply with the schema",
+ ),
+ json.dumps(data_version),
+ ),
+ }
+ )
+
+ if not isinstance(data_version, str):
+ data_version = _("%(version)s (not a string)") % {"version": json.dumps(data_version)}
+ context["unrecognized_version_data"] = data_version
+
+ # Cache the extended schema.
+ if schema_ocds.extensions:
+ schema_ocds.create_extended_schema_file(supplied_data.upload_dir(), supplied_data.upload_url())
+
+ # If the schema is not extended, extended_schema_file is None.
+ schema_url = schema_ocds.extended_schema_file or schema_ocds.schema_url
+
+ # Regenerate alternative formats if the user requests a different version.
+ replace = bool(supplied_data.schema_version) and schema_ocds.version != supplied_data.schema_version
+
+ return schema_ocds, schema_url, replace
+
+
+def default(obj):
+ if isinstance(obj, Decimal):
+ return float(obj)
+ return json.JSONEncoder().default(obj)
+
+
+def add_extra_fields(data, deref_release_schema):
+ all_schema_fields = set(schema_dict_fields_generator(deref_release_schema))
+
+ if "releases" in data:
+ for release in data.get("releases", []):
+ if not isinstance(release, dict):
+ return
+ _add_extra_fields_to_obj(release, all_schema_fields, "")
+ elif "records" in data:
+ for record in data.get("records", []):
+ if not isinstance(record, dict):
+ return
+ for release in record.get("releases", []):
+ _add_extra_fields_to_obj(release, all_schema_fields, "")
+
+
+def _add_extra_fields_to_obj(obj, all_schema_fields, current_path):
+ if not isinstance(obj, dict):
+ return
+ obj["__extra"] = {}
+
+ for key, value in list(obj.items()):
+ if key == "__extra":
+ continue
+
+ new_path = f"{current_path}/{key}"
+ if new_path not in all_schema_fields:
+ obj["__extra"][key] = value
+ continue
+
+ if isinstance(value, list):
+ for item in value:
+ _add_extra_fields_to_obj(item, all_schema_fields, new_path)
+ elif isinstance(value, dict):
+ _add_extra_fields_to_obj(value, all_schema_fields, new_path)
+
+ if not obj["__extra"]:
+ obj.pop("__extra")
diff --git a/cove_ocds/views.py b/cove_ocds/views.py
index a05c86dc..73498429 100644
--- a/cove_ocds/views.py
+++ b/cove_ocds/views.py
@@ -4,7 +4,7 @@
import os
import re
import warnings
-from decimal import Decimal
+from collections import defaultdict
from cove.views import cove_web_input_error, explore_data_context
from django.conf import settings
@@ -20,212 +20,89 @@
from libcoveocds.config import LibCoveOCDSConfig
from libcoveocds.schema import SchemaOCDS
-from cove_ocds.lib.views import group_validation_errors
-
-from .lib import exceptions
-from .lib.ocds_show_extra import add_extra_fields
+from cove_ocds import util
logger = logging.getLogger(__name__)
MAXIMUM_RELEASES_OR_RECORDS = 100
-def format_lang(choices, lang):
- """Format the urls with `{lang}` contained in a schema_version_choices."""
- formatted_choices = {}
- for version, (display, url, tag) in choices.items():
- formatted_choices[version] = (display, url.format(lang=lang), tag)
- return formatted_choices
-
-
@cove_web_input_error
def explore_ocds(request, pk):
- try:
- context, db_data, error = explore_data_context(request, pk)
- # https://github.com/OpenDataServices/lib-cove-web/pull/145
- except FileNotFoundError:
- return render(
- request,
- "error.html",
- {
- "sub_title": _("Sorry, the page you are looking for is not available"),
- "link": "index",
- "link_text": _("Go to Home page"),
- "support_email": settings.COVE_CONFIG.get("support_email"),
- "msg": _(
- "The data you were hoping to explore no longer exists.\n\nThis is because all "
- "data supplied to this website is automatically deleted after %s days, and therefore "
- "the analysis of that data is no longer available."
- )
- % getattr(settings, "DELETE_FILES_AFTER_DAYS", 7),
- },
- status=404,
- )
+ context, supplied_data, error = explore_data_context(request, pk)
if error:
return error
+ # Initialize the CoVE configuration.
+
lib_cove_ocds_config = LibCoveOCDSConfig(settings.COVE_CONFIG)
lib_cove_ocds_config.config["current_language"] = translation.get_language()
- lib_cove_ocds_config.config["schema_version_choices"] = format_lang(
- lib_cove_ocds_config.config["schema_version_choices"], request.LANGUAGE_CODE
- )
+ # Format the urls with `{lang}` contained in a schema_version_choices.
+ lib_cove_ocds_config.config["schema_version_choices"] = {
+ version: (display, url.format(lang=request.LANGUAGE_CODE), tag)
+ for version, (display, url, tag) in lib_cove_ocds_config.config["schema_version_choices"].items()
+ }
- upload_dir = db_data.upload_dir()
- upload_url = db_data.upload_url()
- file_name = db_data.original_file.path
- file_type = context["file_type"]
+ # Read the supplied data, and convert to alternative formats (if not done on a previous request).
- post_version_choice = request.POST.get("version")
- replace = False
- validation_errors_path = os.path.join(upload_dir, "validation_errors-3.json")
+ if context["file_type"] == "json":
+ package_data = util.read_json(supplied_data.original_file.path)
- if file_type == "json":
- with open(file_name, encoding="utf-8") as fp:
- try:
- json_data = json.load(fp)
- except UnicodeError as err:
- raise CoveInputDataError(
- context={
- "sub_title": _("Sorry, we can't process that data"),
- "link": "index",
- "link_text": _("Try Again"),
- "msg": format_html(
- _(
- "The file that you uploaded doesn't appear to be well formed JSON. OCDS JSON follows "
- "the I-JSON format, which requires UTF-8 encoding. Ensure that your file uses UTF-8 "
- 'encoding, then try uploading again.\n\n Error message: {}'
- ),
- err,
- ),
- "error": format(err),
- }
- ) from None
- except ValueError as err:
- raise CoveInputDataError(
- context={
- "sub_title": _("Sorry, we can't process that data"),
- "link": "index",
- "link_text": _("Try Again"),
- "msg": format_html(
- _(
- "We think you tried to upload a JSON file, but it is not well formed JSON."
- '\n\ntender"
"
) can't be both a value (tender
), a path to an object ("
- "tender/id
) and a path to an array (tender/0/title
)."
- '\n\n Error message: {}",
+ "tender/id) and a path to an array (tender/0/title
).\n\n"
+ ' '
+ "Error message: {}",
),
err,
),
- "error": format(err),
}
) from None
except Exception as err:
- logger.exception(extra={"request": request})
+ logger.exception("", extra={"request": request})
raise CoveInputDataError(wrapped_err=err) from None
- with open(context["converted_path"], encoding="utf-8") as fp:
- json_data = json.load(fp)
+ with open(context["converted_path"], "rb") as f:
+ package_data = json.load(f)
+ # Perform the validation.
+
+ # common_checks_ocds() calls libcove.lib.common.common_checks_context(), which writes `validation_errors-3.json`.
+ validation_errors_path = os.path.join(supplied_data.upload_dir(), "validation_errors-3.json")
if replace and os.path.exists(validation_errors_path):
os.remove(validation_errors_path)
+ context = common_checks_ocds(context, supplied_data.upload_dir(), package_data, schema_ocds)
- context = common_checks_ocds(context, upload_dir, json_data, schema_ocds)
-
+ # Set by SchemaOCDS.get_schema_obj(deref=True), which, at the latest, is called indirectly by common_checks_ocds().
if schema_ocds.json_deref_error:
- exceptions.raise_json_deref_error(schema_ocds.json_deref_error)
+ raise CoveInputDataError(
+ context={
+ "sub_title": _("JSON reference error"),
+ "link": "index",
+ "link_text": _("Try Again"),
+ "msg": _(
+ format_html(
+ "We have detected a JSON reference error in the schema. This may be "
+ " due to some extension trying to resolve non-existing references. "
+ '\n\n Error message: {}",
+ schema_ocds.json_deref_error,
+ )
+ ),
+ "error": _("%(error)s") % {"error": schema_ocds.json_deref_error},
+ }
+ )
+
+ # Update the row in the database.
+
+ # The data_schema_version column is NOT NULL.
+ supplied_data.data_schema_version = package_data.get("version") or ""
+ supplied_data.schema_version = schema_ocds.version
+ supplied_data.rendered = True # not relevant to CoVE OCDS
+ supplied_data.save()
+
+ # Finalize the context and select the template.
+
+ validation_errors_grouped = defaultdict(list)
+ for error_json, values in context["validation_errors"]:
+ match json.loads(error_json)["message_type"]:
+ case "required":
+ key = "required"
+ case "format" | "pattern" | "number" | "string" | "date-time" | "uri" | "object" | "integer" | "array":
+ key = "format"
+ case _:
+ key = "other"
+ validation_errors_grouped[key].append((error_json, values))
context.update(
{
- "data_schema_version": db_data.data_schema_version,
- "first_render": not db_data.rendered,
- "validation_errors_grouped": group_validation_errors(context["validation_errors"]),
+ "data_schema_version": supplied_data.data_schema_version,
+ "validation_errors_grouped": validation_errors_grouped,
}
)
for key in ("additional_closed_codelist_values", "additional_open_codelist_values"):
- for codelist_info in context[key].values():
- if codelist_info["codelist_url"].startswith(schema_ocds.codelists):
- codelist_info["codelist_url"] = (
- f"https://standard.open-contracting.org/{db_data.data_schema_version}/en/schema/codelists/#"
- + re.sub(r"([A-Z])", r"-\1", codelist_info["codelist"].split(".")[0]).lower()
+ for additional_codelist_values in context[key].values():
+ if additional_codelist_values["codelist_url"].startswith(schema_ocds.codelists):
+ additional_codelist_values["codelist_url"] = (
+ f"https://standard.open-contracting.org/{supplied_data.data_schema_version}/en/schema/codelists/#"
+ + re.sub(r"([A-Z])", r"-\1", additional_codelist_values["codelist"].split(".")[0]).lower()
)
- schema_version = getattr(schema_ocds, "version", None)
- if schema_version:
- db_data.schema_version = schema_version
- if not db_data.rendered:
- db_data.rendered = True
-
- db_data.save()
-
- if "records" in json_data:
- context["release_or_record"] = "record"
- ocds_show_schema = SchemaOCDS(record_pkg=True)
- ocds_show_deref_schema = ocds_show_schema.get_schema_obj(deref=True)
+ has_records = "records" in package_data
+ if has_records:
template = "cove_ocds/explore_record.html"
- if hasattr(json_data, "get") and hasattr(json_data.get("records"), "__iter__"):
- context["records"] = json_data["records"]
- if isinstance(json_data["records"], list) and len(json_data["records"]) < MAXIMUM_RELEASES_OR_RECORDS:
- context["ocds_show_data"] = ocds_show_data(json_data, ocds_show_deref_schema)
- else:
- context["records"] = []
+ context["release_or_record"] = "record"
+ key = "records"
else:
- context["release_or_record"] = "release"
- ocds_show_schema = SchemaOCDS(record_pkg=False)
- ocds_show_deref_schema = ocds_show_schema.get_schema_obj(deref=True)
template = "cove_ocds/explore_release.html"
- if hasattr(json_data, "get") and hasattr(json_data.get("releases"), "__iter__"):
- context["releases"] = json_data["releases"]
- if isinstance(json_data["releases"], list) and len(json_data["releases"]) < MAXIMUM_RELEASES_OR_RECORDS:
- context["ocds_show_data"] = ocds_show_data(json_data, ocds_show_deref_schema)
- else:
- context["releases"] = []
+ context["release_or_record"] = "release"
+ key = "releases"
+
+ if isinstance(package_data, dict) and isinstance(package_data.get(key), list):
+ # This is for the "Releases Table" and "Records Table" features.
+ context[key] = package_data[key]
+
+ # This is for the OCDS Show feature.
+ # https://github.com/open-contracting/cove-ocds/commit/d8dbf55
+ if len(package_data[key]) < MAXIMUM_RELEASES_OR_RECORDS:
+ new_package_data = copy.deepcopy(package_data)
+ util.add_extra_fields(new_package_data, SchemaOCDS(record_pkg=has_records).get_schema_obj(deref=True))
+ context["ocds_show_data"] = json.dumps(new_package_data, default=util.default)
+ else:
+ context[key] = []
return render(request, template, context)
-
-
-# This should only be run when data is small.
-def ocds_show_data(json_data, ocds_show_deref_schema):
- new_json_data = copy.deepcopy(json_data)
- add_extra_fields(new_json_data, ocds_show_deref_schema)
- return json.dumps(new_json_data, default=default)
-
-
-def default(self, obj):
- if isinstance(obj, Decimal):
- return float(obj)
- return json.JSONEncoder().default(obj)
diff --git a/docs/architecture.rst b/docs/architecture.rst
index 6ec97977..cc1ee3a9 100644
--- a/docs/architecture.rst
+++ b/docs/architecture.rst
@@ -9,8 +9,6 @@ The OCDS Data Review tool comprises two main parts, which are documented here.
cove-ocds
---------
-``cove_ocds/lib`` contains OCDS data specific exceptions (errors generated by invalid data or input), as well as additional functions for OCDS Show (the JavaScript data explorer).
-
``tests/`` also contains fixtures for testing, and the tests themselves; templates and related static files; code for the CLI version of the DRT; and locale files for translations.
``cove_ocds/views.py`` does most of the heavy lifting of taking an input file from the web interface and carrying out the various validation checks and conversions, then piping the output back to the right templates.
diff --git a/tests/test_functional.py b/tests/test_functional.py
index 74490431..d928a3f6 100644
--- a/tests/test_functional.py
+++ b/tests/test_functional.py
@@ -377,7 +377,7 @@ def test_500_error(server_url, browser):
(
"tenders_releases_1_release_with_wrong_version_type.json",
[
- "Your data specifies a version 1000 (it must be a string) which is not recognised",
+ "Your data specifies a version 1000 (not a string) which is not recognised",
f"checked against OCDS release package schema version {OCDS_DEFAULT_SCHEMA_VERSION}. You can",
"Convert to Spreadsheet",
],
@@ -388,7 +388,7 @@ def test_500_error(server_url, browser):
"tenders_releases_1_release_with_patch_in_version.json",
[
'"version" field in your data follows the major.minor.patch pattern',
- "100.100.0 format does not comply with the schema",
+ '"100.100.0" format does not comply with the schema',
"Error message",
],
["Convert to Spreadsheet"],
diff --git a/tests/test_general.py b/tests/test_general.py
index 6238ca82..303d1e7e 100644
--- a/tests/test_general.py
+++ b/tests/test_general.py
@@ -260,6 +260,7 @@ def test_explore_page_null_version(client):
data.current_app = "cove_ocds"
resp = client.get(data.get_absolute_url())
assert resp.status_code == 200
+ assert b"null (not a string)" in resp.content
@pytest.mark.django_db
From 93b344040885719ea470a2c66761fdcac1f97756 Mon Sep 17 00:00:00 2001
From: James McKinney <26463+jpmckinney@users.noreply.github.com>
Date: Sat, 19 Oct 2024 01:32:01 -0400
Subject: [PATCH 02/37] build: Upgrade libcoveocds
---
requirements.txt | 2 +-
requirements_dev.txt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/requirements.txt b/requirements.txt
index ccfd4413..4223a136 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -72,7 +72,7 @@ libcove==0.32.1
# -r requirements.in
# libcoveocds
# libcoveweb
-libcoveocds==0.16.0
+libcoveocds==0.16.2
# via -r requirements.in
libcoveweb==0.31.0
# via -r requirements.in
diff --git a/requirements_dev.txt b/requirements_dev.txt
index b7c674ab..0c6d81b5 100644
--- a/requirements_dev.txt
+++ b/requirements_dev.txt
@@ -121,7 +121,7 @@ libcove==0.32.1
# -r requirements.txt
# libcoveocds
# libcoveweb
-libcoveocds==0.16.0
+libcoveocds==0.16.2
# via -r requirements.txt
libcoveweb==0.31.0
# via -r requirements.txt
From 59e1d609efb20bb7426b50e79ca5a6f8349f0d3e Mon Sep 17 00:00:00 2001
From: James McKinney <26463+jpmckinney@users.noreply.github.com>
Date: Sat, 19 Oct 2024 01:35:00 -0400
Subject: [PATCH 03/37] feat: Remove OCDS Show
---
cove_ocds/locale/en/LC_MESSAGES/django.po | 408 ++++++++--------
cove_ocds/locale/es/LC_MESSAGES/django.po | 449 +++++++++---------
cove_ocds/sass/_custom-ocds.sass | 5 -
.../templates/cove_ocds/explore_base.html | 312 ------------
.../templates/cove_ocds/explore_record.html | 33 --
.../templates/cove_ocds/explore_release.html | 35 --
cove_ocds/util.py | 41 --
cove_ocds/views.py | 8 -
docs/architecture.rst | 5 -
.../fixtures/tenders_releases_extra_data.json | 115 -----
tests/test_functional.py | 17 -
11 files changed, 411 insertions(+), 1017 deletions(-)
delete mode 100644 tests/fixtures/tenders_releases_extra_data.json
diff --git a/cove_ocds/locale/en/LC_MESSAGES/django.po b/cove_ocds/locale/en/LC_MESSAGES/django.po
index 5aa80f75..97ed4196 100644
--- a/cove_ocds/locale/en/LC_MESSAGES/django.po
+++ b/cove_ocds/locale/en/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-10-19 04:51+0000\n"
+"POT-Creation-Date: 2024-10-19 05:34+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME tender
) can't be both a value (tender
), a path to "
@@ -1463,11 +1435,11 @@ msgid ""
"span> Error message: {}"
msgstr ""
-#: cove_ocds/views.py:147
+#: cove_ocds/views.py:146
msgid "JSON reference error"
msgstr ""
-#: cove_ocds/views.py:159
+#: cove_ocds/views.py:158
#, python-format
msgid "%(error)s"
msgstr ""
diff --git a/cove_ocds/locale/es/LC_MESSAGES/django.po b/cove_ocds/locale/es/LC_MESSAGES/django.po
index 3643c53b..67c89bc4 100644
--- a/cove_ocds/locale/es/LC_MESSAGES/django.po
+++ b/cove_ocds/locale/es/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-10-19 04:51+0000\n"
+"POT-Creation-Date: 2024-10-19 05:34+0000\n"
"PO-Revision-Date: 2020-09-08 08:53+0000\n"
"Last-Translator: James McKinney, 2024\n"
"Language-Team: Spanish (https://app.transifex.com/open-contracting-"
@@ -52,7 +52,7 @@ msgstr "ver todos"
#. Translators: Label of a button that triggers search
#: cove_ocds/templates/cove_ocds/base.html:54
-#: cove_ocds/templates/cove_ocds/explore_base.html:52
+#: cove_ocds/templates/cove_ocds/explore_base.html:46
msgid "Go"
msgstr "Ir"
@@ -277,11 +277,11 @@ msgstr ""
msgid "Load New File"
msgstr "Cargar archivo nuevo"
-#: cove_ocds/templates/cove_ocds/explore_base.html:24
+#: cove_ocds/templates/cove_ocds/explore_base.html:18
msgid "Schema"
msgstr "Esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:29
+#: cove_ocds/templates/cove_ocds/explore_base.html:23
#, python-format
msgid ""
"Your data specifies a version %(unrecognized_version_data)s "
@@ -292,7 +292,7 @@ msgstr ""
"strong>que no es reconocida. Por esta razón, se ha verificado en relación a "
"la versión actual por defecto."
-#: cove_ocds/templates/cove_ocds/explore_base.html:32
+#: cove_ocds/templates/cove_ocds/explore_base.html:26
#, python-format
msgid ""
"This data has been checked against OCDS "
@@ -301,7 +301,7 @@ msgstr ""
"Este dato ha sido verificado con la versión "
"%(version_used_display)sdel paquete del esquema %(release_or_record)s"
-#: cove_ocds/templates/cove_ocds/explore_base.html:32
+#: cove_ocds/templates/cove_ocds/explore_base.html:26
msgid ""
"You can choose a different version of the schema to check and explore your "
"data."
@@ -309,13 +309,13 @@ msgstr ""
"Puede elegir una versión diferente del esquema para verificar y explorar sus "
"datos."
-#: cove_ocds/templates/cove_ocds/explore_base.html:34
+#: cove_ocds/templates/cove_ocds/explore_base.html:28
msgid "Check and explore same data against a different version of the schema"
msgstr ""
"Verifique y explore los mismos datos en relación a una versión diferente del "
"esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:37
+#: cove_ocds/templates/cove_ocds/explore_base.html:31
msgid ""
"Switching the schema version will result in changes to CoVE output and "
"conversions. If you revisit or share this URL, the latest version selected "
@@ -325,11 +325,11 @@ msgstr ""
"conversiones del CoVE. Si vuelve a visitar o compartir esta URL, la última "
"versión seleccionada se utilizará para verificar sus datos."
-#: cove_ocds/templates/cove_ocds/explore_base.html:64
+#: cove_ocds/templates/cove_ocds/explore_base.html:58
msgid "Convert"
msgstr "Convertir"
-#: cove_ocds/templates/cove_ocds/explore_base.html:71
+#: cove_ocds/templates/cove_ocds/explore_base.html:65
msgid ""
"There were conversion warnings when "
"processing your file. The converted data may not represent your data as you "
@@ -339,38 +339,38 @@ msgstr ""
"procesar su archivo. Los datos convertidos puede que no representen sus "
"datos como lo desea. "
-#: cove_ocds/templates/cove_ocds/explore_base.html:74
+#: cove_ocds/templates/cove_ocds/explore_base.html:68
msgid "We have tried to convert your JSON into a spreadsheet format."
msgstr "Hemos intentado convertir su JSON a un formato de hoja de cálculo."
-#: cove_ocds/templates/cove_ocds/explore_base.html:74
-#: cove_ocds/templates/cove_ocds/explore_base.html:98
+#: cove_ocds/templates/cove_ocds/explore_base.html:68
+#: cove_ocds/templates/cove_ocds/explore_base.html:92
msgid "The results can be seen below."
msgstr "Los resultados se pueden ver a continuación."
-#: cove_ocds/templates/cove_ocds/explore_base.html:81
-#: cove_ocds/templates/cove_ocds/explore_base.html:86
-#: cove_ocds/templates/cove_ocds/explore_base.html:112
+#: cove_ocds/templates/cove_ocds/explore_base.html:75
+#: cove_ocds/templates/cove_ocds/explore_base.html:80
+#: cove_ocds/templates/cove_ocds/explore_base.html:106
msgid "using schema version"
msgstr "usando versión del esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:92
+#: cove_ocds/templates/cove_ocds/explore_base.html:86
msgid "The JSON could not be converted to Spreadsheet due to the error:"
msgstr "El JSON no se pudo convertir a hoja de cálculo debido al error:"
-#: cove_ocds/templates/cove_ocds/explore_base.html:98
+#: cove_ocds/templates/cove_ocds/explore_base.html:92
msgid "We have tried to convert your data into JSON format."
msgstr "Hemos intentado convertir sus datos a formato JSON."
-#: cove_ocds/templates/cove_ocds/explore_base.html:124
+#: cove_ocds/templates/cove_ocds/explore_base.html:118
msgid "Convert to Spreadsheet"
msgstr "Convertir a hoja de cálculo"
-#: cove_ocds/templates/cove_ocds/explore_base.html:145
+#: cove_ocds/templates/cove_ocds/explore_base.html:139
msgid "Schema Extensions"
msgstr "Extensiones del Esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:151
+#: cove_ocds/templates/cove_ocds/explore_base.html:145
msgid ""
"Your data has been checked against schema version 1.0 and "
"includes extensions but extensions were not introduced in the schema until "
@@ -380,38 +380,38 @@ msgstr ""
"incluyen extensiones, pero no se introdujeron extensiones en el esquema "
"hasta la versión 1.1 ."
-#: cove_ocds/templates/cove_ocds/explore_base.html:154
+#: cove_ocds/templates/cove_ocds/explore_base.html:148
msgid "Your data contains the following schema extensions"
msgstr "Los datos contienen las siguientes extensiones de esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:154
+#: cove_ocds/templates/cove_ocds/explore_base.html:148
msgid ", but it wasn't possible to fetch them"
msgstr ", pero no fue posible recuperarlos "
-#: cove_ocds/templates/cove_ocds/explore_base.html:160
+#: cove_ocds/templates/cove_ocds/explore_base.html:154
msgid "release schema"
msgstr "esquema de entrega"
-#: cove_ocds/templates/cove_ocds/explore_base.html:177
+#: cove_ocds/templates/cove_ocds/explore_base.html:171
msgid "The following extensions failed:"
msgstr "Las siguientes extensiones fallaron:"
-#: cove_ocds/templates/cove_ocds/explore_base.html:187
+#: cove_ocds/templates/cove_ocds/explore_base.html:181
msgid ""
"Only those extensions successfully fetched were applied to extend the schema."
msgstr ""
"Solo las extensiones obtenidas con éxito se aplicaron para ampliar el "
"esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:189
+#: cove_ocds/templates/cove_ocds/explore_base.html:183
msgid "All the extensions above were applied to extend the schema."
msgstr "Todas las extensiones anteriores se aplicaron para ampliar el esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:191
+#: cove_ocds/templates/cove_ocds/explore_base.html:185
msgid "Get a copy of the schema with extension patches applied"
msgstr "Obtenga una copia del esquema con los parches de extensión aplicados"
-#: cove_ocds/templates/cove_ocds/explore_base.html:193
+#: cove_ocds/templates/cove_ocds/explore_base.html:187
msgid ""
"None of the extensions above could be applied. Your data has been checked "
"against a schema with no extensions."
@@ -419,12 +419,12 @@ msgstr ""
"No se pudo aplicar ninguna de las extensiones anteriores. Sus datos han sido "
"comparados con un esquema sin extensiones."
-#: cove_ocds/templates/cove_ocds/explore_base.html:206
+#: cove_ocds/templates/cove_ocds/explore_base.html:200
msgid "Conversion Errors"
msgstr "Errores de Conversión"
-#: cove_ocds/templates/cove_ocds/explore_base.html:211
-#: cove_ocds/templates/cove_ocds/explore_base.html:233
+#: cove_ocds/templates/cove_ocds/explore_base.html:205
+#: cove_ocds/templates/cove_ocds/explore_base.html:227
msgid ""
"In order to check your data we need to convert it. During that conversion we "
"found the following issues:"
@@ -432,65 +432,65 @@ msgstr ""
"Para verificar sus datos, necesitamos convertirlos. Durante esta conversión, "
"encontramos los siguientes problemas:"
-#: cove_ocds/templates/cove_ocds/explore_base.html:228
+#: cove_ocds/templates/cove_ocds/explore_base.html:222
msgid "Conversion Errors (titles)"
msgstr "Errores de Conversión (títulos)"
-#: cove_ocds/templates/cove_ocds/explore_base.html:256
+#: cove_ocds/templates/cove_ocds/explore_base.html:250
msgid "Structural Errors - Required Fields"
msgstr "Errores Estructurales - Campos Requeridos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:260
+#: cove_ocds/templates/cove_ocds/explore_base.html:254
msgid ""
"Some or all of your data is missing fields which are required by the OCDS "
"schema."
msgstr ""
"En alguno o todos tus datos faltan campos requeridos por el esquema OCDS."
-#: cove_ocds/templates/cove_ocds/explore_base.html:280
+#: cove_ocds/templates/cove_ocds/explore_base.html:274
msgid "Structural Errors - Format"
msgstr "Errores Estructurales - Formato"
-#: cove_ocds/templates/cove_ocds/explore_base.html:284
+#: cove_ocds/templates/cove_ocds/explore_base.html:278
msgid ""
"Some or all of your data includes fields which are incorrectly formatted."
msgstr ""
"Alguno o todos tus datos incluyen campos que están formateados "
"incorrectamente."
-#: cove_ocds/templates/cove_ocds/explore_base.html:304
+#: cove_ocds/templates/cove_ocds/explore_base.html:298
msgid "Structural Errors - Other"
msgstr "Errores Estructurales - Otro"
-#: cove_ocds/templates/cove_ocds/explore_base.html:308
+#: cove_ocds/templates/cove_ocds/explore_base.html:302
msgid "Some or all of your data has validation errors."
msgstr "Alguno o todos tus datos tienen errores de validación."
-#: cove_ocds/templates/cove_ocds/explore_base.html:321
-#: cove_ocds/templates/cove_ocds/explore_base.html:493
-#: cove_ocds/templates/cove_ocds/explore_base.html:496
+#: cove_ocds/templates/cove_ocds/explore_base.html:315
+#: cove_ocds/templates/cove_ocds/explore_base.html:487
+#: cove_ocds/templates/cove_ocds/explore_base.html:490
msgid "Structure Warnings"
msgstr "Advertencias de Estructura"
-#: cove_ocds/templates/cove_ocds/explore_base.html:326
-#: cove_ocds/templates/cove_ocds/explore_base.html:348
+#: cove_ocds/templates/cove_ocds/explore_base.html:320
+#: cove_ocds/templates/cove_ocds/explore_base.html:342
msgid ""
"Fixing the following issues will improve the interoperability of your data."
msgstr ""
"La resolución de los siguientes problemas mejorará la interoperabilidad de "
"sus datos."
-#: cove_ocds/templates/cove_ocds/explore_base.html:343
-#: cove_ocds/templates/cove_ocds/explore_base.html:481
-#: cove_ocds/templates/cove_ocds/explore_base.html:484
+#: cove_ocds/templates/cove_ocds/explore_base.html:337
+#: cove_ocds/templates/cove_ocds/explore_base.html:475
+#: cove_ocds/templates/cove_ocds/explore_base.html:478
msgid "Conformance (Rules)"
msgstr "Conformidad (Reglas)"
-#: cove_ocds/templates/cove_ocds/explore_base.html:365
+#: cove_ocds/templates/cove_ocds/explore_base.html:359
msgid "Codelist Errors"
msgstr "Errores de la Lista de Códigos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:370
+#: cove_ocds/templates/cove_ocds/explore_base.html:364
msgid ""
"The fields below use closed codelists. When using these fields, you "
"must use one of the pre-defined codelist values. If you use a "
@@ -506,7 +506,7 @@ msgstr ""
"+ o - esto indica que la lista de códigos ha sido modificada con estas "
"adiciones (+) o sustracciones (-) por una o más extensiones."
-#: cove_ocds/templates/cove_ocds/explore_base.html:374
+#: cove_ocds/templates/cove_ocds/explore_base.html:368
msgid ""
"You may need to create a mapping between your local codes and the OCDS "
"closed codelists to address these errors. In most cases, there will be a "
@@ -520,11 +520,11 @@ msgstr ""
"códigos locales. Si ya ha completado un mapeo, favor revise la ortografía y "
"las mayúsculas utilizadas en estos campos cerrados de la lista de códigos."
-#: cove_ocds/templates/cove_ocds/explore_base.html:385
+#: cove_ocds/templates/cove_ocds/explore_base.html:379
msgid "Additional Fields"
msgstr "Campos adicionales"
-#: cove_ocds/templates/cove_ocds/explore_base.html:389
+#: cove_ocds/templates/cove_ocds/explore_base.html:383
msgid ""
"This data includes the following fields which are not part of the OCDS "
"schema. You should check whether the data in these fields could be provided "
@@ -538,11 +538,11 @@ msgstr ""
"standard.open-contracting.org/latest/en/extensions/\">extensión "
"existente del esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:403
+#: cove_ocds/templates/cove_ocds/explore_base.html:397
msgid "Additional Codelist Values"
msgstr "Valores Adicionales de Listas de Códigos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:407
+#: cove_ocds/templates/cove_ocds/explore_base.html:401
msgid ""
"Your data contains a number of fields that use an open codelist. You should "
"use values from the codelist whenever possible, but if the codelist does not "
@@ -561,7 +561,7 @@ msgstr ""
"de códigos ha sido modificada con estas adiciones (+) o sustracciones (-) "
"por una o más extensiones."
-#: cove_ocds/templates/cove_ocds/explore_base.html:413
+#: cove_ocds/templates/cove_ocds/explore_base.html:407
msgid ""
"Make sure you list the definition of any additional codelist values you "
"include within your gestor de "
"incidencias de OCDS ."
-#: cove_ocds/templates/cove_ocds/explore_base.html:423
+#: cove_ocds/templates/cove_ocds/explore_base.html:417
msgid "Additional Checks"
msgstr "Comprobaciones adicionales"
-#: cove_ocds/templates/cove_ocds/explore_base.html:437
-#: cove_ocds/templates/cove_ocds/explore_base.html:517
-#: cove_ocds/templates/cove_ocds/explore_base.html:520
+#: cove_ocds/templates/cove_ocds/explore_base.html:431
+#: cove_ocds/templates/cove_ocds/explore_base.html:511
+#: cove_ocds/templates/cove_ocds/explore_base.html:514
msgid "Deprecated Fields"
msgstr "Campos Obsoletos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:437
+#: cove_ocds/templates/cove_ocds/explore_base.html:431
msgid ""
"Fields flagged as 'deprecated' will be either replaced or removed in future "
"versions of the schema."
@@ -596,16 +596,16 @@ msgstr ""
"Campos marcados como 'obsoletos' serán reemplazados o eliminados en futuras "
"versiones del esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:453
+#: cove_ocds/templates/cove_ocds/explore_base.html:447
msgid "Save or Share these results"
msgstr "Guardar o Compartir estos resultados"
-#: cove_ocds/templates/cove_ocds/explore_base.html:454
+#: cove_ocds/templates/cove_ocds/explore_base.html:448
msgid "Use the following url to share these results:"
msgstr "Use la siguiente url para compartir estos resultados: "
#. Translators: Paragraph that describes the application
-#: cove_ocds/templates/cove_ocds/explore_base.html:459
+#: cove_ocds/templates/cove_ocds/explore_base.html:453
#, python-format
msgid ""
"These results will be available for %(delete_files_after_days)s days from "
@@ -616,7 +616,7 @@ msgstr ""
"días desde el día en que los datos fueron subidos. Puede revisar estos "
"resultados hasta entonces."
-#: cove_ocds/templates/cove_ocds/explore_base.html:460
+#: cove_ocds/templates/cove_ocds/explore_base.html:454
#, python-format
msgid ""
"After %(delete_files_after_days)s days all uploaded data is deleted from our "
@@ -629,43 +629,43 @@ msgstr ""
"Cualquiera que use el enlace a esta página después de ese periodo verá un "
"mensaje informando de que el archivo ha sido borrado."
-#: cove_ocds/templates/cove_ocds/explore_base.html:475
-#: cove_ocds/templates/cove_ocds/explore_base.html:478
+#: cove_ocds/templates/cove_ocds/explore_base.html:469
+#: cove_ocds/templates/cove_ocds/explore_base.html:472
msgid "Structural Errors"
msgstr "Errores Estructurales"
-#: cove_ocds/templates/cove_ocds/explore_base.html:487
+#: cove_ocds/templates/cove_ocds/explore_base.html:481
msgid "view all errors ▼"
msgstr "ver todos los errores ▼"
-#: cove_ocds/templates/cove_ocds/explore_base.html:490
+#: cove_ocds/templates/cove_ocds/explore_base.html:484
+#: cove_ocds/templates/cove_ocds/explore_base.html:496
#: cove_ocds/templates/cove_ocds/explore_base.html:502
-#: cove_ocds/templates/cove_ocds/explore_base.html:508
msgid "View all errors ▲"
msgstr "Vea todos los errores ▲"
-#: cove_ocds/templates/cove_ocds/explore_base.html:499
+#: cove_ocds/templates/cove_ocds/explore_base.html:493
#: cove_ocds/templates/cove_ocds/ocds_missing_ids_table.html:6
#: cove_ocds/templates/cove_ocds/ocid_prefixes_table.html:5
msgid "View all errors ▼"
msgstr "Vea todos los errores ▼"
-#: cove_ocds/templates/cove_ocds/explore_base.html:505
+#: cove_ocds/templates/cove_ocds/explore_base.html:499
msgid "Quality Warnings"
msgstr "Advertencias de Calidad"
-#: cove_ocds/templates/cove_ocds/explore_base.html:511
-#: cove_ocds/templates/cove_ocds/explore_base.html:514
+#: cove_ocds/templates/cove_ocds/explore_base.html:505
+#: cove_ocds/templates/cove_ocds/explore_base.html:508
msgid "Additional Fields (fields in data not in schema)"
msgstr "Campos adicionales (campos en los datos que no están en el esquema)"
#: cove_ocds/templates/cove_ocds/explore_record.html:12
-#: cove_ocds/templates/cove_ocds/explore_release.html:11
+#: cove_ocds/templates/cove_ocds/explore_release.html:10
msgid "Headlines"
msgstr "Titulares"
#: cove_ocds/templates/cove_ocds/explore_record.html:17
-#: cove_ocds/templates/cove_ocds/explore_release.html:15
+#: cove_ocds/templates/cove_ocds/explore_release.html:14
msgid ""
"Please read the conversion warnings "
"below."
@@ -674,17 +674,17 @@ msgstr ""
"conversión más abajo."
#: cove_ocds/templates/cove_ocds/explore_record.html:21
-#: cove_ocds/templates/cove_ocds/explore_release.html:19
+#: cove_ocds/templates/cove_ocds/explore_release.html:18
msgid "Failed "
msgstr "Ha fallado "
#: cove_ocds/templates/cove_ocds/explore_record.html:23
-#: cove_ocds/templates/cove_ocds/explore_release.html:21
+#: cove_ocds/templates/cove_ocds/explore_release.html:20
msgid "Passed "
msgstr "Ha pasado "
#: cove_ocds/templates/cove_ocds/explore_record.html:25
-#: cove_ocds/templates/cove_ocds/explore_release.html:23
+#: cove_ocds/templates/cove_ocds/explore_release.html:22
msgid "structural checks against "
msgstr "comprobaciones estructurales contra"
@@ -693,13 +693,13 @@ msgid "OCDS record package schema version"
msgstr "Versión del esquema del paquete de registros OCDS"
#: cove_ocds/templates/cove_ocds/explore_record.html:26
-#: cove_ocds/templates/cove_ocds/explore_release.html:24
+#: cove_ocds/templates/cove_ocds/explore_release.html:23
msgid "See Structural Errors below."
msgstr ""
"Ver Errores Estructurales más abajo."
#: cove_ocds/templates/cove_ocds/explore_record.html:30
-#: cove_ocds/templates/cove_ocds/explore_release.html:33
+#: cove_ocds/templates/cove_ocds/explore_release.html:32
msgid "At a glance"
msgstr "De un vistazo"
@@ -712,7 +712,7 @@ msgstr[1] "Este archivo contiene %(count)s registros."
msgstr[2] "Este archivo contiene %(count)s registros."
#: cove_ocds/templates/cove_ocds/explore_record.html:39
-#: cove_ocds/templates/cove_ocds/explore_release.html:43
+#: cove_ocds/templates/cove_ocds/explore_release.html:42
msgid "The schema version specified in the file is"
msgstr "La versión del esquema especificada en el archivo es "
@@ -725,22 +725,22 @@ msgstr[1] "Hay %(count)s es OCIDs únicas."
msgstr[2] "Hay %(count)s es OCIDs únicas."
#: cove_ocds/templates/cove_ocds/explore_record.html:47
-#: cove_ocds/templates/cove_ocds/explore_release.html:48
+#: cove_ocds/templates/cove_ocds/explore_release.html:47
msgid "The publisher named in the file is"
msgstr "El publicador nombrado en el archivo es"
#: cove_ocds/templates/cove_ocds/explore_record.html:52
-#: cove_ocds/templates/cove_ocds/explore_release.html:53
+#: cove_ocds/templates/cove_ocds/explore_release.html:52
msgid "The license is"
msgstr "La licencia es "
#: cove_ocds/templates/cove_ocds/explore_record.html:57
-#: cove_ocds/templates/cove_ocds/explore_release.html:58
+#: cove_ocds/templates/cove_ocds/explore_release.html:57
msgid "Publication policy is"
msgstr "Una política de publicación es"
#: cove_ocds/templates/cove_ocds/explore_record.html:63
-#: cove_ocds/templates/cove_ocds/explore_release.html:70
+#: cove_ocds/templates/cove_ocds/explore_release.html:69
#, python-format
msgid ""
"There is %(count)s duplicate release ID in "
@@ -760,7 +760,7 @@ msgstr[2] ""
"este paquete."
#: cove_ocds/templates/cove_ocds/explore_record.html:69
-#: cove_ocds/templates/cove_ocds/explore_release.html:75
+#: cove_ocds/templates/cove_ocds/explore_release.html:74
#, python-format
msgid ""
"This file uses %(count)s additional field "
@@ -780,32 +780,32 @@ msgstr[2] ""
"adicionalesno incluidos en el estándar."
#: cove_ocds/templates/cove_ocds/explore_record.html:74
-#: cove_ocds/templates/cove_ocds/explore_release.html:80
+#: cove_ocds/templates/cove_ocds/explore_release.html:79
msgid "This file is not 'utf-8' encoded (it is"
msgstr "Este archivo no ha sido codificado con 'utf-8' (ha sido "
#: cove_ocds/templates/cove_ocds/explore_record.html:74
-#: cove_ocds/templates/cove_ocds/explore_release.html:80
+#: cove_ocds/templates/cove_ocds/explore_release.html:79
msgid "encoded)."
msgstr "codificado)."
#: cove_ocds/templates/cove_ocds/explore_record.html:78
-#: cove_ocds/templates/cove_ocds/explore_release.html:89
+#: cove_ocds/templates/cove_ocds/explore_release.html:88
msgid "Data "
msgstr "Datos "
#: cove_ocds/templates/cove_ocds/explore_record.html:80
-#: cove_ocds/templates/cove_ocds/explore_release.html:91
+#: cove_ocds/templates/cove_ocds/explore_release.html:90
msgid "downloaded from "
msgstr "descargado desde "
#: cove_ocds/templates/cove_ocds/explore_record.html:82
-#: cove_ocds/templates/cove_ocds/explore_release.html:93
+#: cove_ocds/templates/cove_ocds/explore_release.html:92
msgid "uploaded "
msgstr "subido "
#: cove_ocds/templates/cove_ocds/explore_record.html:84
-#: cove_ocds/templates/cove_ocds/explore_release.html:95
+#: cove_ocds/templates/cove_ocds/explore_release.html:94
msgid "on "
msgstr "el "
@@ -846,53 +846,15 @@ msgstr "Mostrando los primeros %(releases_or_records_table_length)s registros."
msgid "release count"
msgstr "cantidad de entregas"
-#: cove_ocds/templates/cove_ocds/explore_record.html:185
-#: cove_ocds/templates/cove_ocds/explore_release.html:428
-msgid "Explore your data:"
-msgstr "Explora tus datos:"
-
-#: cove_ocds/templates/cove_ocds/explore_record.html:190
-#: cove_ocds/templates/cove_ocds/explore_release.html:433
-msgid ""
-"This section provides a visual representation of the data, use it to check "
-"whether the data makes sense in the type of tool a user might use to explore "
-"it."
-msgstr ""
-"Esta sección proporciona una representación visual de los datos, utilícela "
-"para verificar si tienen sentido en el tipo de herramienta que un usuario "
-"podría usar para explorarlos."
-
-#: cove_ocds/templates/cove_ocds/explore_record.html:193
-#: cove_ocds/templates/cove_ocds/explore_release.html:436
-msgid ""
-"Extensions and additional fields are hidden by default, click the 'Extra "
-"fields' buttons or open the 'Extra fields' section to view them."
-msgstr ""
-"Las extensiones y los campos adicionales están ocultos por defecto, haga "
-"clic en los botones \"Campos adicionales\" o abra la sección \"Campos "
-"adicionales\" para verlos."
-
-#: cove_ocds/templates/cove_ocds/explore_record.html:196
-#: cove_ocds/templates/cove_ocds/explore_release.html:439
-msgid ""
-"When viewing an OCDS record, use the numbers at the top of the visualization "
-"to browse the change history. New and changed fields are highlighted, use "
-"this feature to check whether any fields have changed unexpectedly."
-msgstr ""
-"Al ver un registro de OCDS, use los números en la parte superior de la "
-"visualización para navegar en el historial de cambios. Los campos nuevos y "
-"modificados están resaltados, use esta función para verificar si alguno de "
-"los campos ha cambiado inesperadamente."
-
-#: cove_ocds/templates/cove_ocds/explore_release.html:23
+#: cove_ocds/templates/cove_ocds/explore_release.html:22
msgid "OCDS release package schema version"
msgstr "Versión del esquema del paquete de entrega de OCDS"
-#: cove_ocds/templates/cove_ocds/explore_release.html:28
+#: cove_ocds/templates/cove_ocds/explore_release.html:27
msgid "Failed to apply "
msgstr " Ha fallado al aplicar"
-#: cove_ocds/templates/cove_ocds/explore_release.html:28
+#: cove_ocds/templates/cove_ocds/explore_release.html:27
#, python-format
msgid " %(count)s extension "
msgid_plural "%(count)s extensions "
@@ -900,14 +862,14 @@ msgstr[0] "%(count)s extensión"
msgstr[1] "%(count)s extensiones"
msgstr[2] "%(count)s extensiones"
-#: cove_ocds/templates/cove_ocds/explore_release.html:28
+#: cove_ocds/templates/cove_ocds/explore_release.html:27
msgid ""
" to the schema.tender
) can't be both a value (tender
), a path to "
@@ -1740,15 +1702,46 @@ msgstr ""
""
"span> Error message: {}"
-#: cove_ocds/views.py:147
+#: cove_ocds/views.py:146
msgid "JSON reference error"
msgstr "Error de referencia en JSON"
-#: cove_ocds/views.py:159
+#: cove_ocds/views.py:158
#, python-format
msgid "%(error)s"
msgstr "%(error)s"
+#~ msgid "Explore your data:"
+#~ msgstr "Explora tus datos:"
+
+#~ msgid ""
+#~ "This section provides a visual representation of the data, use it to "
+#~ "check whether the data makes sense in the type of tool a user might use "
+#~ "to explore it."
+#~ msgstr ""
+#~ "Esta sección proporciona una representación visual de los datos, "
+#~ "utilícela para verificar si tienen sentido en el tipo de herramienta que "
+#~ "un usuario podría usar para explorarlos."
+
+#~ msgid ""
+#~ "Extensions and additional fields are hidden by default, click the 'Extra "
+#~ "fields' buttons or open the 'Extra fields' section to view them."
+#~ msgstr ""
+#~ "Las extensiones y los campos adicionales están ocultos por defecto, haga "
+#~ "clic en los botones \"Campos adicionales\" o abra la sección \"Campos "
+#~ "adicionales\" para verlos."
+
+#~ msgid ""
+#~ "When viewing an OCDS record, use the numbers at the top of the "
+#~ "visualization to browse the change history. New and changed fields are "
+#~ "highlighted, use this feature to check whether any fields have changed "
+#~ "unexpectedly."
+#~ msgstr ""
+#~ "Al ver un registro de OCDS, use los números en la parte superior de la "
+#~ "visualización para navegar en el historial de cambios. Los campos nuevos "
+#~ "y modificados están resaltados, use esta función para verificar si alguno "
+#~ "de los campos ha cambiado inesperadamente."
+
#~ msgid "Sorry, the page you are looking for is not available"
#~ msgstr "Lo sentimos, la página que está buscando no está disponible"
diff --git a/cove_ocds/sass/_custom-ocds.sass b/cove_ocds/sass/_custom-ocds.sass
index 849674fe..25ab82c5 100644
--- a/cove_ocds/sass/_custom-ocds.sass
+++ b/cove_ocds/sass/_custom-ocds.sass
@@ -137,11 +137,6 @@ a.view-all
text-decoration: none;
-.release-badge.success
- background-color: #676C3F !important
-.release-badge.primary
- background-color: #9baf00 !important
-
#container .panel
&-body dt
color: $gray;
diff --git a/cove_ocds/templates/cove_ocds/explore_base.html b/cove_ocds/templates/cove_ocds/explore_base.html
index 983b7236..aedce18c 100644
--- a/cove_ocds/templates/cove_ocds/explore_base.html
+++ b/cove_ocds/templates/cove_ocds/explore_base.html
@@ -5,12 +5,6 @@
{% trans 'Load New File' %}
{% endblock %}
-{% block after_head %}
- {{block.super}}
-
-
-{% endblock %}
-
{% block explore_content %}
- {% blocktrans %}This section provides a visual representation of the data, use it to check whether the data makes sense in the type of tool a user might use to explore it.{% endblocktrans %} -
-- {% blocktrans %}Extensions and additional fields are hidden by default, click the 'Extra fields' buttons or open the 'Extra fields' section to view them.{% endblocktrans %} -
-- {% blocktrans %}When viewing an OCDS record, use the numbers at the top of the visualization to browse the change history. New and changed fields are highlighted, use this feature to check whether any fields have changed unexpectedly.{% endblocktrans %} -
-- {% blocktrans %}This section provides a visual representation of the data, use it to check whether the data makes sense in the type of tool a user might use to explore it.{% endblocktrans %} -
-- {% blocktrans %}Extensions and additional fields are hidden by default, click the 'Extra fields' buttons or open the 'Extra fields' section to view them.{% endblocktrans %} -
-- {% blocktrans %}When viewing an OCDS record, use the numbers at the top of the visualization to browse the change history. New and changed fields are highlighted, use this feature to check whether any fields have changed unexpectedly.{% endblocktrans %} -
-- {% blocktrans %}Showing the first {{releases_or_records_table_length}} records.{% endblocktrans %} -
- {% endif %} -ocid | -{% trans "release count" %} | -compiledRelease | -versionedRelease | -
---|---|---|---|
{{ record.ocid }} | -{{ record.releases|length }} | -{% if record.compiledRelease %}{% trans "Yes" %}{% else %}{% trans "No" %}{% endif %} | -{% if record.versionedRelease %}{% trans "Yes" %}{% else %}{% trans "No" %}{% endif %} | -
- {% blocktrans %}Showing the first {{releases_or_records_table_length}} releases. To explore all your data in a tabular format, convert it to a spreadsheet using the "Convert" section, above.{% endblocktrans %} -
- {% endif %} -OCID | -{%blocktrans%}Release Date{%endblocktrans%} | -{%blocktrans%}Tags{%endblocktrans%} | -{%blocktrans%}Descriptions{%endblocktrans%} | -{%blocktrans%}Purchasers{%endblocktrans%} | -
---|---|---|---|---|
{{ release.ocid }} | -{{ release.date|to_datetime|date:"j M Y, H:i (e)" }} | -{% if release.tag %}{{ release.tag|join:", " }}{% endif %} | -
-
|
-
-
|
-
{%blocktrans%}Part of Contracting Process{%endblocktrans%} | -{%blocktrans%}Count of Docs{%endblocktrans%} | -{%blocktrans%}Document Types{%endblocktrans%} | -
---|---|---|
{% trans "Planning" %} | {{ra.planning_doc_count}} | -
-
|
-
{% trans "Tender" %} | {{ra.tender_doc_count}} | -
-
|
-
{% trans "Tender Milestones" %} | {{ra.tender_milestones_doc_count}} | -
-
|
-
{% trans "Awards" %} | {{ra.award_doc_count}} | -
-
|
-
{% trans "Contracts" %} | {{ra.contract_doc_count}} | -
-
|
-
{% trans "Implementation" %} | {{ra.implementation_doc_count}} | -
-
|
-
{% trans "Implementation Milestones" %} | {{ra.implementation_milestones_doc_count}} | -
-
|
-
https://raw.githubusercontent.com/open-contracting/sample-data/main/"
"fictional-example/1.1/ocds-213czf-000-00001-02-tender.json
"
-#: cove_ocds/templates/cove_ocds/base.html:153
+#: cove_ocds/templates/cove_ocds/base.html:149
msgid "Built by"
msgstr "Construido por "
-#: cove_ocds/templates/cove_ocds/base.html:153
+#: cove_ocds/templates/cove_ocds/base.html:149
msgid "Open Data Services"
msgstr "Open Data Services"
-#: cove_ocds/templates/cove_ocds/base.html:154
+#: cove_ocds/templates/cove_ocds/base.html:150
msgid "The code for this site is available on"
msgstr "El código de este sitio está disponible en "
-#: cove_ocds/templates/cove_ocds/base.html:154
+#: cove_ocds/templates/cove_ocds/base.html:150
msgid "GitHub"
msgstr "GitHub"
-#: cove_ocds/templates/cove_ocds/base.html:154
+#: cove_ocds/templates/cove_ocds/base.html:150
msgid "Licence"
msgstr "Licencia"
-#: cove_ocds/templates/cove_ocds/base.html:154
+#: cove_ocds/templates/cove_ocds/base.html:150
msgid "AGPLv3"
msgstr "AGPLv3"
-#: cove_ocds/templates/cove_ocds/base.html:154
+#: cove_ocds/templates/cove_ocds/base.html:150
msgid "Report/View issues"
msgstr "Reportar / Ver issues"
-#: cove_ocds/templates/cove_ocds/base.html:154
+#: cove_ocds/templates/cove_ocds/base.html:150
msgid "cove-ocds issues"
msgstr "cove-ocds issues"
@@ -871,188 +871,6 @@ msgstr "Subir"
msgid "Paste"
msgstr "Pegar"
-#: cove_ocds/templates/cove_ocds/more_info.html:4
-msgid "More Information "
-msgstr "Más información"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:4
-msgid "click to see."
-msgstr "Haga clic para ver."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:10
-msgid "What happens to the data I provide to this site?"
-msgstr "¿Qué sucede con los datos que proporciono a este sitio?"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:11
-#, python-format
-msgid ""
-"We retain the data you upload or paste to this site, on our server, for "
-"%(delete_files_after_days)s days."
-msgstr ""
-"Conservamos los datos que cargas o pegas a este sitio en nuestro servidor "
-"durante %(delete_files_after_days)s días."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:12
-#, python-format
-msgid ""
-"If you supply a link, we fetch the data from that link and store it on our "
-"server for %(delete_files_after_days)s days."
-msgstr ""
-"Si proporciona un enlace, buscamos los datos de ese enlace y los almacenamos "
-"en nuestro servidor durante %(delete_files_after_days)s días."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:13
-#, python-format
-msgid ""
-"We delete all data older than %(delete_files_after_days)s days from our "
-"servers daily, retaining none of the original data."
-msgstr ""
-"Borramos todos los datos de más de %(delete_files_after_days)s días desde "
-"nuestros servidores diariamente, no conservamos ninguno de los datos "
-"originales."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:14
-msgid ""
-"While the data is on our servers we may access that data to help us "
-"understand how people are using this application, what types of data are "
-"being supplied, what common errors exist and so on."
-msgstr ""
-"Mientras los datos están en nuestros servidores podemos acceder a ellos para "
-"ayudarnos a entender cómo las personas usan esta aplicación, los tipos de "
-"datos suministrados, los errores más comunes que existen, etc."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:15
-msgid ""
-"We may also retain data in backups of our servers, which means on occasion, "
-"some data may be retained longer. We have no intention of using this data "
-"for anything other than server recovery in an emergency."
-msgstr ""
-"También podemos conservar datos en las copias de seguridad de nuestros "
-"servidores, lo que significa que algunos datos pueden ser retenidos por más "
-"tiempo. No tenemos ninguna intención de utilizar estos datos para nada que "
-"no sea la recuperación del servidor en caso de emergencia."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:16
-msgid ""
-"We do retain some metadata about data supplied to this site. Details can be "
-"found in the code, but may include information about whether or not the file "
-"was uploaded, linked or pasted, the size of the file, the date/time it was "
-"supplied and so on. "
-msgstr ""
-"Guardamos algunos metadatos sobre los datos suministrados a este sitio. Los "
-"detalles se pueden encontrar en el código, pero pueden incluir información "
-"sobre si el archivo fue subido, vinculado o pegado, el tamaño del archivo, "
-"la fecha / hora en que se suministra y así sucesivamente."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:18
-#, python-format
-msgid "Why do you delete data after %(delete_files_after_days)s days?"
-msgstr ""
-"¿Por qué eliminan los datos después de %(delete_files_after_days)s días?"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:19
-#, python-format
-msgid ""
-"This is service to allow people to explore machine readable data. As such we "
-"see no need to store and gather everything people submit to the site "
-"forever. We have chosen %(delete_files_after_days)s days as a practical time "
-"frame that allows people to share results with colleagues, but also allows "
-"data to disappear over time to save people having to clean up after "
-"themselves."
-msgstr ""
-"Este es un servicio que permite a la gente a explorar datos legibles por "
-"computadora. Como tal no vemos la necesidad de almacenar y reunir todo lo "
-"que la gente subre al sitio por siempre. Hemos optado por "
-"%(delete_files_after_days)s días como un tiempo práctico que permite a la "
-"gente compartir los resultados con colegas, pero también permite que los "
-"datos desaparezcan a su debido tiempo para así ahorrar a las personas tener "
-"que hacer una limpieza ellos mismos."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:20
-#, python-format
-msgid ""
-"We believe that deleting supplied data after %(delete_files_after_days)s "
-"days provides a level of privacy for the users of this service. "
-msgstr ""
-"Creemos que la supresión de los datos suministrados después de "
-"%(delete_files_after_days)s días proporciona un nivel de privacidad para los "
-"usuarios de este servicio."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:24
-msgid "Why provide converted versions?"
-msgstr "¿Por qué ofrecer versiones convertidas?"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:25
-msgid "The W3C"
-msgstr "El W3C"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:25
-msgid "Data on the Web Best Practices"
-msgstr "Datos sobre Mejores Prácticas en la Web"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:25
-msgid ""
-"recommend making open data available in a range of formats to meet the needs "
-"of different users, for example, developers may want JSON, researchers might "
-"prefer a spreadsheet format."
-msgstr ""
-"recomienda ofrecer los datos abiertos en una variedad de formatos para "
-"satisfacer las necesidades de los distintos usuarios. Por ejemplo, los "
-"desarrolladores pueden requerir JSON, mientras los investigadores puede que "
-"prefieran un formato de hoja de cálculo."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:33
-msgid "User Tracking"
-msgstr "Rastreo de Usuarios"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:37
-msgid "What information does the tool collect about website visitors?"
-msgstr ""
-"¿Qué información obtiene la herramienta sobre los usuarios de la página web?"
-
-#: cove_ocds/templates/cove_ocds/more_info.html:39
-#, python-format
-msgid ""
-"In order to understand who is using the Data Review Tool and how they use "
-"it, we collect basic analytics data about users. For more information and to "
-"learn how to opt out of this, see the Privacy "
-"Notice."
-msgstr ""
-"Para poder entender quien usa la Herramienta de Revisión de Datos y como la "
-"usan, recolectamos analítica básica sobre los usuarios. Para más información "
-"y para entender como puede optar para que no recolectemos sus datos, vea "
-"elAviso de Privacidad."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:40
-#, python-format
-msgid ""
-"We also collect server logs, which we analyse from time to time to "
-"understand traffic to the site. Users cannot opt out of this data "
-"collection, and data is treated with respect. For more information, see the "
-"Privacy Notice."
-msgstr ""
-"También recolectamos registros del servidor, los cuáles analizamos para "
-"entender el tráfico en el sitio. Los usuarios no pueden optar porque esta "
-"información no sea recolectada, y los datos se tratan con respecto. Para más "
-"información, vea el Aviso de privacidad ."
-
-#: cove_ocds/templates/cove_ocds/more_info.html:42
-#, python-format
-msgid ""
-"In order to understand the behaviour of website visitors, to help us "
-"understand the most popular features and understand potential sources of "
-"frustration for website users, we are currently running a time-limited "
-"experiment using HotJar behaviour tracking. For more information and to "
-"learn how to opt out of this, see the Privacy "
-"Notice."
-msgstr ""
-"Para poder entender el comportamiento de los usuarios del sitio y para "
-"entender las funciones más populares, y fuentes potenciales de frustración "
-"para los usuarios del sitio, actualmente usamos un experimento de tiempo "
-"limitado utilizando el rastreador de comportamiento HotJar. Para más "
-"información y para entender como optar por no ser parte de este experimento, "
-"vea el Aviso de Privacidad."
-
#: cove_ocds/templates/cove_ocds/ocds_missing_ids_table.html:3
#, python-format
msgid ""
diff --git a/cove_ocds/templates/cove_ocds/base.html b/cove_ocds/templates/cove_ocds/base.html
index 7e6d9c2c..cbaa7827 100644
--- a/cove_ocds/templates/cove_ocds/base.html
+++ b/cove_ocds/templates/cove_ocds/base.html
@@ -145,10 +145,6 @@ {% blocktrans %}We retain the data you upload or paste to this site, on our server, for {{ delete_files_after_days }} days.{% endblocktrans %}
-{% blocktrans %}If you supply a link, we fetch the data from that link and store it on our server for {{ delete_files_after_days }} days.{% endblocktrans %}
-{% blocktrans %}We delete all data older than {{ delete_files_after_days }} days from our servers daily, retaining none of the original data.{% endblocktrans %}
-{% blocktrans %}While the data is on our servers we may access that data to help us understand how people are using this application, what types of data are being supplied, what common errors exist and so on.{% endblocktrans %}
-{% blocktrans %}We may also retain data in backups of our servers, which means on occasion, some data may be retained longer. We have no intention of using this data for anything other than server recovery in an emergency.{% endblocktrans %}
-{% blocktrans %}We do retain some metadata about data supplied to this site. Details can be found in the code, but may include information about whether or not the file was uploaded, linked or pasted, the size of the file, the date/time it was supplied and so on. {% endblocktrans %}
- -{% blocktrans %}This is service to allow people to explore machine readable data. As such we see no need to store and gather everything people submit to the site forever. We have chosen {{ delete_files_after_days }} days as a practical time frame that allows people to share results with colleagues, but also allows data to disappear over time to save people having to clean up after themselves.{% endblocktrans %}
-{% blocktrans %}We believe that deleting supplied data after {{ delete_files_after_days }} days provides a level of privacy for the users of this service. {% endblocktrans %}
- {% endblock %} - - {% block whyConvert %} -{% blocktrans %}The W3C{% endblocktrans %} {% blocktrans %}Data on the Web Best Practices{% endblocktrans %} {% blocktrans %}recommend making open data available in a range of formats to meet the needs of different users, for example, developers may want JSON, researchers might prefer a spreadsheet format.{% endblocktrans %}
- {% endblock %} -{% blocktrans with terms_privacy=terms_url|add:"#privacy_notice" %}In order to understand who is using the Data Review Tool and how they use it, we collect basic analytics data about users. For more information and to learn how to opt out of this, see the Privacy Notice.{% endblocktrans %}
-{% blocktrans with terms_privacy=terms_url|add:"#privacy_notice" %}We also collect server logs, which we analyse from time to time to understand traffic to the site. Users cannot opt out of this data collection, and data is treated with respect. For more information, see the Privacy Notice.{% endblocktrans %}
- {% if hotjar.id %} -{% blocktrans with terms_privacy=terms_url|add:"#privacy_notice" %}In order to understand the behaviour of website visitors, to help us understand the most popular features and understand potential sources of frustration for website users, we are currently running a time-limited experiment using HotJar behaviour tracking. For more information and to learn how to opt out of this, see the Privacy Notice.{% endblocktrans %}
- {% endif %} -tender
) can't be both a value (tender
), a path to "
@@ -960,11 +922,11 @@ msgid ""
"span> Error message: {}"
msgstr ""
-#: cove_ocds/views.py:146
+#: cove_ocds/views.py:133
msgid "JSON reference error"
msgstr ""
-#: cove_ocds/views.py:158
+#: cove_ocds/views.py:145
#, python-format
msgid "%(error)s"
msgstr ""
diff --git a/cove_ocds/locale/es/LC_MESSAGES/django.po b/cove_ocds/locale/es/LC_MESSAGES/django.po
index 155ff867..38beb141 100644
--- a/cove_ocds/locale/es/LC_MESSAGES/django.po
+++ b/cove_ocds/locale/es/LC_MESSAGES/django.po
@@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2024-10-19 18:32+0000\n"
+"POT-Creation-Date: 2024-10-19 18:45+0000\n"
"PO-Revision-Date: 2020-09-08 08:53+0000\n"
"Last-Translator: James McKinney, 2024\n"
"Language-Team: Spanish (https://app.transifex.com/open-contracting-"
@@ -52,7 +52,6 @@ msgstr "ver todos"
#. Translators: Label of a button that triggers search
#: cove_ocds/templates/cove_ocds/base.html:54
-#: cove_ocds/templates/cove_ocds/explore_base.html:46
msgid "Go"
msgstr "Ir"
@@ -301,35 +300,11 @@ msgstr ""
"Este dato ha sido verificado con la versión "
"%(version_used_display)sdel paquete del esquema %(release_or_record)s"
-#: cove_ocds/templates/cove_ocds/explore_base.html:26
-msgid ""
-"You can choose a different version of the schema to check and explore your "
-"data."
-msgstr ""
-"Puede elegir una versión diferente del esquema para verificar y explorar sus "
-"datos."
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:28
-msgid "Check and explore same data against a different version of the schema"
-msgstr ""
-"Verifique y explore los mismos datos en relación a una versión diferente del "
-"esquema"
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:31
-msgid ""
-"Switching the schema version will result in changes to CoVE output and "
-"conversions. If you revisit or share this URL, the latest version selected "
-"will be used to check your data"
-msgstr ""
-"Cambiar la versión del esquema dará como resultado cambios en las salidas y "
-"conversiones del CoVE. Si vuelve a visitar o compartir esta URL, la última "
-"versión seleccionada se utilizará para verificar sus datos."
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:58
+#: cove_ocds/templates/cove_ocds/explore_base.html:37
msgid "Convert"
msgstr "Convertir"
-#: cove_ocds/templates/cove_ocds/explore_base.html:65
+#: cove_ocds/templates/cove_ocds/explore_base.html:44
msgid ""
"There were conversion warnings when "
"processing your file. The converted data may not represent your data as you "
@@ -339,38 +314,23 @@ msgstr ""
"procesar su archivo. Los datos convertidos puede que no representen sus "
"datos como lo desea. "
-#: cove_ocds/templates/cove_ocds/explore_base.html:68
-msgid "We have tried to convert your JSON into a spreadsheet format."
-msgstr "Hemos intentado convertir su JSON a un formato de hoja de cálculo."
+#: cove_ocds/templates/cove_ocds/explore_base.html:46
+msgid "We have tried to convert your data into JSON format."
+msgstr "Hemos intentado convertir sus datos a formato JSON."
-#: cove_ocds/templates/cove_ocds/explore_base.html:68
-#: cove_ocds/templates/cove_ocds/explore_base.html:92
+#: cove_ocds/templates/cove_ocds/explore_base.html:46
msgid "The results can be seen below."
msgstr "Los resultados se pueden ver a continuación."
-#: cove_ocds/templates/cove_ocds/explore_base.html:75
-#: cove_ocds/templates/cove_ocds/explore_base.html:80
-#: cove_ocds/templates/cove_ocds/explore_base.html:106
+#: cove_ocds/templates/cove_ocds/explore_base.html:60
msgid "using schema version"
msgstr "usando versión del esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:86
-msgid "The JSON could not be converted to Spreadsheet due to the error:"
-msgstr "El JSON no se pudo convertir a hoja de cálculo debido al error:"
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:92
-msgid "We have tried to convert your data into JSON format."
-msgstr "Hemos intentado convertir sus datos a formato JSON."
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:118
-msgid "Convert to Spreadsheet"
-msgstr "Convertir a hoja de cálculo"
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:139
+#: cove_ocds/templates/cove_ocds/explore_base.html:77
msgid "Schema Extensions"
msgstr "Extensiones del Esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:145
+#: cove_ocds/templates/cove_ocds/explore_base.html:83
msgid ""
"Your data has been checked against schema version 1.0 and "
"includes extensions but extensions were not introduced in the schema until "
@@ -380,38 +340,38 @@ msgstr ""
"incluyen extensiones, pero no se introdujeron extensiones en el esquema "
"hasta la versión 1.1 ."
-#: cove_ocds/templates/cove_ocds/explore_base.html:148
+#: cove_ocds/templates/cove_ocds/explore_base.html:86
msgid "Your data contains the following schema extensions"
msgstr "Los datos contienen las siguientes extensiones de esquema"
-#: cove_ocds/templates/cove_ocds/explore_base.html:148
+#: cove_ocds/templates/cove_ocds/explore_base.html:86
msgid ", but it wasn't possible to fetch them"
msgstr ", pero no fue posible recuperarlos "
-#: cove_ocds/templates/cove_ocds/explore_base.html:154
+#: cove_ocds/templates/cove_ocds/explore_base.html:92
msgid "release schema"
msgstr "esquema de entrega"
-#: cove_ocds/templates/cove_ocds/explore_base.html:171
+#: cove_ocds/templates/cove_ocds/explore_base.html:109
msgid "The following extensions failed:"
msgstr "Las siguientes extensiones fallaron:"
-#: cove_ocds/templates/cove_ocds/explore_base.html:181
+#: cove_ocds/templates/cove_ocds/explore_base.html:119
msgid ""
"Only those extensions successfully fetched were applied to extend the schema."
msgstr ""
"Solo las extensiones obtenidas con éxito se aplicaron para ampliar el "
"esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:183
+#: cove_ocds/templates/cove_ocds/explore_base.html:121
msgid "All the extensions above were applied to extend the schema."
msgstr "Todas las extensiones anteriores se aplicaron para ampliar el esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:185
+#: cove_ocds/templates/cove_ocds/explore_base.html:123
msgid "Get a copy of the schema with extension patches applied"
msgstr "Obtenga una copia del esquema con los parches de extensión aplicados"
-#: cove_ocds/templates/cove_ocds/explore_base.html:187
+#: cove_ocds/templates/cove_ocds/explore_base.html:125
msgid ""
"None of the extensions above could be applied. Your data has been checked "
"against a schema with no extensions."
@@ -419,12 +379,11 @@ msgstr ""
"No se pudo aplicar ninguna de las extensiones anteriores. Sus datos han sido "
"comparados con un esquema sin extensiones."
-#: cove_ocds/templates/cove_ocds/explore_base.html:200
+#: cove_ocds/templates/cove_ocds/explore_base.html:138
msgid "Conversion Errors"
msgstr "Errores de Conversión"
-#: cove_ocds/templates/cove_ocds/explore_base.html:205
-#: cove_ocds/templates/cove_ocds/explore_base.html:227
+#: cove_ocds/templates/cove_ocds/explore_base.html:143
msgid ""
"In order to check your data we need to convert it. During that conversion we "
"found the following issues:"
@@ -432,65 +391,61 @@ msgstr ""
"Para verificar sus datos, necesitamos convertirlos. Durante esta conversión, "
"encontramos los siguientes problemas:"
-#: cove_ocds/templates/cove_ocds/explore_base.html:222
-msgid "Conversion Errors (titles)"
-msgstr "Errores de Conversión (títulos)"
-
-#: cove_ocds/templates/cove_ocds/explore_base.html:250
+#: cove_ocds/templates/cove_ocds/explore_base.html:167
msgid "Structural Errors - Required Fields"
msgstr "Errores Estructurales - Campos Requeridos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:254
+#: cove_ocds/templates/cove_ocds/explore_base.html:171
msgid ""
"Some or all of your data is missing fields which are required by the OCDS "
"schema."
msgstr ""
"En alguno o todos tus datos faltan campos requeridos por el esquema OCDS."
-#: cove_ocds/templates/cove_ocds/explore_base.html:274
+#: cove_ocds/templates/cove_ocds/explore_base.html:191
msgid "Structural Errors - Format"
msgstr "Errores Estructurales - Formato"
-#: cove_ocds/templates/cove_ocds/explore_base.html:278
+#: cove_ocds/templates/cove_ocds/explore_base.html:195
msgid ""
"Some or all of your data includes fields which are incorrectly formatted."
msgstr ""
"Alguno o todos tus datos incluyen campos que están formateados "
"incorrectamente."
-#: cove_ocds/templates/cove_ocds/explore_base.html:298
+#: cove_ocds/templates/cove_ocds/explore_base.html:215
msgid "Structural Errors - Other"
msgstr "Errores Estructurales - Otro"
-#: cove_ocds/templates/cove_ocds/explore_base.html:302
+#: cove_ocds/templates/cove_ocds/explore_base.html:219
msgid "Some or all of your data has validation errors."
msgstr "Alguno o todos tus datos tienen errores de validación."
-#: cove_ocds/templates/cove_ocds/explore_base.html:315
-#: cove_ocds/templates/cove_ocds/explore_base.html:487
-#: cove_ocds/templates/cove_ocds/explore_base.html:490
+#: cove_ocds/templates/cove_ocds/explore_base.html:232
+#: cove_ocds/templates/cove_ocds/explore_base.html:404
+#: cove_ocds/templates/cove_ocds/explore_base.html:407
msgid "Structure Warnings"
msgstr "Advertencias de Estructura"
-#: cove_ocds/templates/cove_ocds/explore_base.html:320
-#: cove_ocds/templates/cove_ocds/explore_base.html:342
+#: cove_ocds/templates/cove_ocds/explore_base.html:237
+#: cove_ocds/templates/cove_ocds/explore_base.html:259
msgid ""
"Fixing the following issues will improve the interoperability of your data."
msgstr ""
"La resolución de los siguientes problemas mejorará la interoperabilidad de "
"sus datos."
-#: cove_ocds/templates/cove_ocds/explore_base.html:337
-#: cove_ocds/templates/cove_ocds/explore_base.html:475
-#: cove_ocds/templates/cove_ocds/explore_base.html:478
+#: cove_ocds/templates/cove_ocds/explore_base.html:254
+#: cove_ocds/templates/cove_ocds/explore_base.html:392
+#: cove_ocds/templates/cove_ocds/explore_base.html:395
msgid "Conformance (Rules)"
msgstr "Conformidad (Reglas)"
-#: cove_ocds/templates/cove_ocds/explore_base.html:359
+#: cove_ocds/templates/cove_ocds/explore_base.html:276
msgid "Codelist Errors"
msgstr "Errores de la Lista de Códigos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:364
+#: cove_ocds/templates/cove_ocds/explore_base.html:281
msgid ""
"The fields below use closed codelists. When using these fields, you "
"must use one of the pre-defined codelist values. If you use a "
@@ -506,7 +461,7 @@ msgstr ""
"+ o - esto indica que la lista de códigos ha sido modificada con estas "
"adiciones (+) o sustracciones (-) por una o más extensiones."
-#: cove_ocds/templates/cove_ocds/explore_base.html:368
+#: cove_ocds/templates/cove_ocds/explore_base.html:285
msgid ""
"You may need to create a mapping between your local codes and the OCDS "
"closed codelists to address these errors. In most cases, there will be a "
@@ -520,11 +475,11 @@ msgstr ""
"códigos locales. Si ya ha completado un mapeo, favor revise la ortografía y "
"las mayúsculas utilizadas en estos campos cerrados de la lista de códigos."
-#: cove_ocds/templates/cove_ocds/explore_base.html:379
+#: cove_ocds/templates/cove_ocds/explore_base.html:296
msgid "Additional Fields"
msgstr "Campos adicionales"
-#: cove_ocds/templates/cove_ocds/explore_base.html:383
+#: cove_ocds/templates/cove_ocds/explore_base.html:300
msgid ""
"This data includes the following fields which are not part of the OCDS "
"schema. You should check whether the data in these fields could be provided "
@@ -538,11 +493,11 @@ msgstr ""
"standard.open-contracting.org/latest/en/extensions/\">extensión "
"existente del esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:397
+#: cove_ocds/templates/cove_ocds/explore_base.html:314
msgid "Additional Codelist Values"
msgstr "Valores Adicionales de Listas de Códigos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:401
+#: cove_ocds/templates/cove_ocds/explore_base.html:318
msgid ""
"Your data contains a number of fields that use an open codelist. You should "
"use values from the codelist whenever possible, but if the codelist does not "
@@ -561,7 +516,7 @@ msgstr ""
"de códigos ha sido modificada con estas adiciones (+) o sustracciones (-) "
"por una o más extensiones."
-#: cove_ocds/templates/cove_ocds/explore_base.html:407
+#: cove_ocds/templates/cove_ocds/explore_base.html:324
msgid ""
"Make sure you list the definition of any additional codelist values you "
"include within your gestor de "
"incidencias de OCDS ."
-#: cove_ocds/templates/cove_ocds/explore_base.html:417
+#: cove_ocds/templates/cove_ocds/explore_base.html:334
msgid "Additional Checks"
msgstr "Comprobaciones adicionales"
+#: cove_ocds/templates/cove_ocds/explore_base.html:348
+#: cove_ocds/templates/cove_ocds/explore_base.html:428
#: cove_ocds/templates/cove_ocds/explore_base.html:431
-#: cove_ocds/templates/cove_ocds/explore_base.html:511
-#: cove_ocds/templates/cove_ocds/explore_base.html:514
msgid "Deprecated Fields"
msgstr "Campos Obsoletos"
-#: cove_ocds/templates/cove_ocds/explore_base.html:431
+#: cove_ocds/templates/cove_ocds/explore_base.html:348
msgid ""
"Fields flagged as 'deprecated' will be either replaced or removed in future "
"versions of the schema."
@@ -596,16 +551,16 @@ msgstr ""
"Campos marcados como 'obsoletos' serán reemplazados o eliminados en futuras "
"versiones del esquema."
-#: cove_ocds/templates/cove_ocds/explore_base.html:447
+#: cove_ocds/templates/cove_ocds/explore_base.html:364
msgid "Save or Share these results"
msgstr "Guardar o Compartir estos resultados"
-#: cove_ocds/templates/cove_ocds/explore_base.html:448
+#: cove_ocds/templates/cove_ocds/explore_base.html:365
msgid "Use the following url to share these results:"
msgstr "Use la siguiente url para compartir estos resultados: "
#. Translators: Paragraph that describes the application
-#: cove_ocds/templates/cove_ocds/explore_base.html:453
+#: cove_ocds/templates/cove_ocds/explore_base.html:370
#, python-format
msgid ""
"These results will be available for %(delete_files_after_days)s days from "
@@ -616,7 +571,7 @@ msgstr ""
"días desde el día en que los datos fueron subidos. Puede revisar estos "
"resultados hasta entonces."
-#: cove_ocds/templates/cove_ocds/explore_base.html:454
+#: cove_ocds/templates/cove_ocds/explore_base.html:371
#, python-format
msgid ""
"After %(delete_files_after_days)s days all uploaded data is deleted from our "
@@ -629,33 +584,33 @@ msgstr ""
"Cualquiera que use el enlace a esta página después de ese periodo verá un "
"mensaje informando de que el archivo ha sido borrado."
-#: cove_ocds/templates/cove_ocds/explore_base.html:469
-#: cove_ocds/templates/cove_ocds/explore_base.html:472
+#: cove_ocds/templates/cove_ocds/explore_base.html:386
+#: cove_ocds/templates/cove_ocds/explore_base.html:389
msgid "Structural Errors"
msgstr "Errores Estructurales"
-#: cove_ocds/templates/cove_ocds/explore_base.html:481
+#: cove_ocds/templates/cove_ocds/explore_base.html:398
msgid "view all errors ▼"
msgstr "ver todos los errores ▼"
-#: cove_ocds/templates/cove_ocds/explore_base.html:484
-#: cove_ocds/templates/cove_ocds/explore_base.html:496
-#: cove_ocds/templates/cove_ocds/explore_base.html:502
+#: cove_ocds/templates/cove_ocds/explore_base.html:401
+#: cove_ocds/templates/cove_ocds/explore_base.html:413
+#: cove_ocds/templates/cove_ocds/explore_base.html:419
msgid "View all errors ▲"
msgstr "Vea todos los errores ▲"
-#: cove_ocds/templates/cove_ocds/explore_base.html:493
+#: cove_ocds/templates/cove_ocds/explore_base.html:410
#: cove_ocds/templates/cove_ocds/ocds_missing_ids_table.html:6
#: cove_ocds/templates/cove_ocds/ocid_prefixes_table.html:5
msgid "View all errors ▼"
msgstr "Vea todos los errores ▼"
-#: cove_ocds/templates/cove_ocds/explore_base.html:499
+#: cove_ocds/templates/cove_ocds/explore_base.html:416
msgid "Quality Warnings"
msgstr "Advertencias de Calidad"
-#: cove_ocds/templates/cove_ocds/explore_base.html:505
-#: cove_ocds/templates/cove_ocds/explore_base.html:508
+#: cove_ocds/templates/cove_ocds/explore_base.html:422
+#: cove_ocds/templates/cove_ocds/explore_base.html:425
msgid "Additional Fields (fields in data not in schema)"
msgstr "Campos adicionales (campos en los datos que no están en el esquema)"
@@ -1032,13 +987,13 @@ msgstr ""
"latest/es/schema/reference/#date\"> fechas en OCDS"
#: cove_ocds/util.py:19 cove_ocds/util.py:38 cove_ocds/util.py:56
-#: cove_ocds/views.py:111
+#: cove_ocds/views.py:98
msgid "Sorry, we can't process that data"
msgstr "Lo sentimos, no podemos procesar esos datos"
#: cove_ocds/util.py:22 cove_ocds/util.py:41 cove_ocds/util.py:58
#: cove_ocds/util.py:84 cove_ocds/util.py:107 cove_ocds/util.py:126
-#: cove_ocds/views.py:113 cove_ocds/views.py:148
+#: cove_ocds/views.py:100 cove_ocds/views.py:135
msgid "Try Again"
msgstr "Inténtelo de nuevo"
@@ -1154,7 +1109,7 @@ msgstr ""
msgid "%(version)s (not a string)"
msgstr ""
-#: cove_ocds/views.py:117
+#: cove_ocds/views.py:104
msgid ""
"The table isn't structured correctly. For example, a JSON Pointer "
"(tender
) can't be both a value (tender
), a path to "
@@ -1172,11 +1127,11 @@ msgstr ""
""
"span> Error message: {}"
-#: cove_ocds/views.py:146
+#: cove_ocds/views.py:133
msgid "JSON reference error"
msgstr "Error de referencia en JSON"
-#: cove_ocds/views.py:158
+#: cove_ocds/views.py:145
#, python-format
msgid "%(error)s"
msgstr "%(error)s"
diff --git a/cove_ocds/templates/cove_ocds/explore_base.html b/cove_ocds/templates/cove_ocds/explore_base.html
index aedce18c..ff10055c 100644
--- a/cove_ocds/templates/cove_ocds/explore_base.html
+++ b/cove_ocds/templates/cove_ocds/explore_base.html
@@ -52,43 +52,19 @@