diff --git a/epdb/logic.py b/epdb/logic.py
index 99b6f8a5..ec7db334 100644
--- a/epdb/logic.py
+++ b/epdb/logic.py
@@ -491,7 +491,7 @@ class PackageManager(object):
@staticmethod
@transaction.atomic
- def import_package(data: dict, owner: User, keep_ids=False, add_import_timestamp=True):
+ def import_package(data: dict, owner: User, keep_ids=False, add_import_timestamp=True, trust_reviewed=False):
from uuid import UUID, uuid4
from datetime import datetime
from collections import defaultdict
@@ -507,7 +507,11 @@ class PackageManager(object):
else:
pack.name = data['name']
- pack.reviewed = True if data['reviewStatus'] == 'reviewed' else False
+ if trust_reviewed:
+ pack.reviewed = True if data['reviewStatus'] == 'reviewed' else False
+ else:
+ pack.reviewed = False
+
pack.description = data['description']
pack.save()
diff --git a/epdb/management/commands/bootstrap.py b/epdb/management/commands/bootstrap.py
index 4beb3222..0bd250b2 100644
--- a/epdb/management/commands/bootstrap.py
+++ b/epdb/management/commands/bootstrap.py
@@ -58,7 +58,7 @@ class Command(BaseCommand):
return anon, admin, g, jebus
def import_package(self, data, owner):
- return PackageManager.import_package(data, owner, keep_ids=True, add_import_timestamp=False)
+ return PackageManager.import_package(data, owner, keep_ids=True, add_import_timestamp=False, trust_reviewed=True)
def create_default_setting(self, owner, packages):
s = SettingManager.create_setting(
diff --git a/epdb/views.py b/epdb/views.py
index 5358e34f..76c0a9a6 100644
--- a/epdb/views.py
+++ b/epdb/views.py
@@ -280,10 +280,24 @@ def packages(request):
return render(request, 'collections/objects_list.html', context)
elif request.method == 'POST':
- hidden = request.POST.get('hidden', None)
- if hidden is not None:
- pass
+
+ if hidden := request.POST.get('hidden', None):
+
+ if hidden == 'import-legacy-package-json':
+ f = request.FILES['file']
+
+ try:
+ file_data = f.read().decode("utf-8")
+ data = json.loads(file_data)
+
+ pack = PackageManager.import_package(data, current_user)
+ return redirect(pack.url)
+ except UnicodeDecodeError:
+ return error(request, 'Invalid encoding.', f'Invalid encoding, must be UTF-8')
+
+ else:
+ return HttpResponseBadRequest()
else:
package_name = request.POST.get('package-name')
package_description = request.POST.get('package-description', s.DEFAULT_VALUES['description'])
@@ -784,6 +798,7 @@ def package(request, package_uuid):
current_package = PackageManager.get_package_by_id(current_user, package_uuid)
if request.method == 'GET':
+
context = get_base_context(request)
context['title'] = f'enviPath - {current_package.name}'
diff --git a/templates/actions/collections/package.html b/templates/actions/collections/package.html
index b4192e98..0573467e 100644
--- a/templates/actions/collections/package.html
+++ b/templates/actions/collections/package.html
@@ -1,4 +1,8 @@
- New Package
+ New Package
+
+
+
+ Import Package (Legacy)
\ No newline at end of file
diff --git a/templates/collections/objects_list.html b/templates/collections/objects_list.html
index 1423112e..6a745294 100644
--- a/templates/collections/objects_list.html
+++ b/templates/collections/objects_list.html
@@ -18,33 +18,34 @@
{% endif %}
-{% block action_modals %}
-{% if object_type == 'package' %}
-{% include "modals/collections/new_package_modal.html" %}
-{% elif object_type == 'compound' %}
-{% include "modals/collections/new_compound_modal.html" %}
-{% elif object_type == 'rule' %}
-{% include "modals/collections/new_rule_modal.html" %}
-{% elif object_type == 'reaction' %}
-{% include "modals/collections/new_reaction_modal.html" %}
-{% elif object_type == 'pathway' %}
-{# {% include "modals/collections/new_pathway_modal.html" %} #}
-{% elif object_type == 'node' %}
-{% include "modals/collections/new_node_modal.html" %}
-{% elif object_type == 'edge' %}
-{% include "modals/collections/new_edge_modal.html" %}
-{% elif object_type == 'scenario' %}
-{% include "modals/collections/new_scenario_modal.html" %}
-{% elif object_type == 'model' %}
-{% include "modals/collections/new_model_modal.html" %}
-{% elif object_type == 'setting' %}
-{#{% include "modals/collections/new_setting_modal.html" %}#}
-{% elif object_type == 'user' %}
-
-{% elif object_type == 'group' %}
-{% include "modals/collections/new_group_modal.html" %}
-{% endif %}
-{% endblock action_modals %}
+ {% block action_modals %}
+ {% if object_type == 'package' %}
+ {% include "modals/collections/new_package_modal.html" %}
+ {% include "modals/collections/import_legacy_package_modal.html" %}
+ {% elif object_type == 'compound' %}
+ {% include "modals/collections/new_compound_modal.html" %}
+ {% elif object_type == 'rule' %}
+ {% include "modals/collections/new_rule_modal.html" %}
+ {% elif object_type == 'reaction' %}
+ {% include "modals/collections/new_reaction_modal.html" %}
+ {% elif object_type == 'pathway' %}
+ {# {% include "modals/collections/new_pathway_modal.html" %} #}
+ {% elif object_type == 'node' %}
+ {% include "modals/collections/new_node_modal.html" %}
+ {% elif object_type == 'edge' %}
+ {% include "modals/collections/new_edge_modal.html" %}
+ {% elif object_type == 'scenario' %}
+ {% include "modals/collections/new_scenario_modal.html" %}
+ {% elif object_type == 'model' %}
+ {% include "modals/collections/new_model_modal.html" %}
+ {% elif object_type == 'setting' %}
+ {#{% include "modals/collections/new_setting_modal.html" %}#}
+ {% elif object_type == 'user' %}
+
+ {% elif object_type == 'group' %}
+ {% include "modals/collections/new_group_modal.html" %}
+ {% endif %}
+ {% endblock action_modals %}
diff --git a/templates/modals/collections/import_legacy_package_modal.html b/templates/modals/collections/import_legacy_package_modal.html
new file mode 100644
index 00000000..d4101d7d
--- /dev/null
+++ b/templates/modals/collections/import_legacy_package_modal.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
Create a Package based on the JSON Export of the legacy system.
+
+
+
+
+
+
+