forked from enviPath/enviPy
[Feature] Legacy Package Import (#106)
Fixes #105 Co-authored-by: Tim Lorsbach <tim@lorsba.ch> Reviewed-on: enviPath/enviPy#106
This commit is contained in:
@ -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()
|
||||
|
||||
|
||||
@ -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(
|
||||
|
||||
@ -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}'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user