From 9ad2afcb3515d0df126152eda8d6b61a8e339863 Mon Sep 17 00:00:00 2001 From: blagoja Date: Tue, 9 Apr 2024 15:34:26 +0200 Subject: [PATCH 01/11] Add bulk upload form --- ckanext/bulkupload/actions.py | 31 +++++++++++++++++++ ckanext/bulkupload/plugin.py | 13 +++++++- .../package/new_resource_not_draft_bulk.html | 14 +++++++++ .../templates/package/snippets/test.html | 7 ----- .../bulkupload/templates/package/test.html | 1 - .../templates/package/upload_bulk_sucess.html | 16 +--------- ckanext/bulkupload/views.py | 10 ++++-- 7 files changed, 65 insertions(+), 27 deletions(-) create mode 100644 ckanext/bulkupload/actions.py delete mode 100644 ckanext/bulkupload/templates/package/snippets/test.html delete mode 100644 ckanext/bulkupload/templates/package/test.html diff --git a/ckanext/bulkupload/actions.py b/ckanext/bulkupload/actions.py new file mode 100644 index 0000000..acd79a2 --- /dev/null +++ b/ckanext/bulkupload/actions.py @@ -0,0 +1,31 @@ +import ckan.plugins.toolkit as tk +import requests +import ssl + +ssl.match_hostname = lambda cert, hostname: True + + +def call_add_resouce_api(): + + print("============================1==========================") + pkg_name = 'cloudstorage-03' + ssl.match_hostname = lambda cert, hostname: True + url = "http://localhost:5000/api/3/action/resource_create" + headers = { + 'Authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhN1lVZWNldGxTQjlRLXNBbEg4NTRRbjhlVEUxQXhGQzEtNFZnZzZ4M18xa0NscnZZX0hheGk0bkNiVFJRZ24wdk1oQnBWUGpRVjd5TnktMyIsImlhdCI6MTcxMjIzMzAwMX0.NBvgZIicgkHIbd_2lTmck5GLv_oWSNOA0lb4UdnWC0Q', + } + print("====================2==================================") + files = { + 'package_id': (None, 'cloudstorage-03'), + 'name': (None, '5MB'), + 'url': (None, 'upload'), + 'description': (None, ''), + 'upload': open('/home/blagoja/Downloads/sample_data/5MB', 'rb'), + } + print("===========================3===========================") + response = requests.post(url, headers=headers, files=files, verify=False) + print(pkg_name) + print("=============================4=========================") + print(response) + print("===============================5=======================") + return response \ No newline at end of file diff --git a/ckanext/bulkupload/plugin.py b/ckanext/bulkupload/plugin.py index d437fe8..b65aef3 100644 --- a/ckanext/bulkupload/plugin.py +++ b/ckanext/bulkupload/plugin.py @@ -1,11 +1,13 @@ import ckan.plugins as plugins import ckan.plugins.toolkit as toolkit from ckanext.bulkupload.views import bulkupload +import ckanext.bulkupload.actions as actions class BulkuploadPlugin(plugins.SingletonPlugin): plugins.implements(plugins.IConfigurer) plugins.implements(plugins.IBlueprint) + plugins.implements(plugins.IActions) # IConfigurer @@ -13,7 +15,16 @@ def update_config(self, config_): toolkit.add_template_directory(config_, 'templates') toolkit.add_public_directory(config_, 'public') toolkit.add_resource('fanstatic', 'bulkupload') - + + # IActions + + def get_actions(self): + + return { + "call_add_resouce_api": actions.call_add_resouce_api, + + } + # IBlueprint def get_blueprint(self): diff --git a/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html b/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html index bd5a741..bdbe713 100644 --- a/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html +++ b/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html @@ -1,10 +1,12 @@ {% extends "package/resource_edit_base.html" %} +{% import 'macros/form.html' as form %} {% block subtitle %}{{ _('Add resource') }} {{ g.template_title_delimiter }} {{ h.dataset_display_name(pkg) }}{% endblock %} {% block form_title %}{{ _('Add resource') }}{% endblock %} + {% block content_primary_nav %}
  • {{ _('New resource') }}
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • @@ -13,3 +15,15 @@ {% block secondary_content %} {% snippet 'package/snippets/resource_help.html' %} {% endblock %} + +{% block form %} +
    + + + {{ form.textarea('desc', id='field-description', label=_('Description'), value='') }} + +
    + +
    +
    +{% endblock %} \ No newline at end of file diff --git a/ckanext/bulkupload/templates/package/snippets/test.html b/ckanext/bulkupload/templates/package/snippets/test.html deleted file mode 100644 index 5634956..0000000 --- a/ckanext/bulkupload/templates/package/snippets/test.html +++ /dev/null @@ -1,7 +0,0 @@ -{% import 'macros/form.html' as form %} - -{% set data = data or {} %} -{% set errors = errors or {} %} - - -

    Bulk Upload

    diff --git a/ckanext/bulkupload/templates/package/test.html b/ckanext/bulkupload/templates/package/test.html deleted file mode 100644 index 7719e4b..0000000 --- a/ckanext/bulkupload/templates/package/test.html +++ /dev/null @@ -1 +0,0 @@ -

    Bulk Upload

    diff --git a/ckanext/bulkupload/templates/package/upload_bulk_sucess.html b/ckanext/bulkupload/templates/package/upload_bulk_sucess.html index bd5a741..272aaff 100644 --- a/ckanext/bulkupload/templates/package/upload_bulk_sucess.html +++ b/ckanext/bulkupload/templates/package/upload_bulk_sucess.html @@ -1,15 +1 @@ -{% extends "package/resource_edit_base.html" %} - -{% block subtitle %}{{ _('Add resource') }} {{ g.template_title_delimiter }} {{ h.dataset_display_name(pkg) }}{% endblock %} -{% block form_title %}{{ _('Add resource') }}{% endblock %} - - - -{% block content_primary_nav %} -
  • {{ _('New resource') }}
  • -
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • -{% endblock %} - -{% block secondary_content %} - {% snippet 'package/snippets/resource_help.html' %} -{% endblock %} +

    Upload sucess

    diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 456e1b4..8afa77c 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -1,13 +1,14 @@ from flask import Blueprint from flask.views import MethodView - +from flask import request +import ssl import ckan.model as model import ckan.logic as logic import ckan.plugins.toolkit as tk import ckan.lib.base as base -from ckan.common import g, request +from ckan.common import g from ckan.logic.action import get, update bulkupload = Blueprint("bulkupload", __name__) @@ -33,7 +34,10 @@ def get(self, pkg_name): } ) - def post(self, pkg_name): + def post(pkg_name): + + tk.get_action("call_add_resouce_api")(pkg_name) + return tk.render("package/upload_bulk_sucess.html") From 81cd70888ea7f426ac8def1a93728fc9941c422d Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 09:09:29 +0200 Subject: [PATCH 02/11] Function view --- ckanext/bulkupload/actions.py | 12 ++++++---- .../package/new_resource_not_draft.html | 2 +- .../package/new_resource_not_draft_bulk.html | 4 ++-- ckanext/bulkupload/views.py | 24 +++++++++++-------- setup.py | 2 +- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/ckanext/bulkupload/actions.py b/ckanext/bulkupload/actions.py index acd79a2..8e1f77d 100644 --- a/ckanext/bulkupload/actions.py +++ b/ckanext/bulkupload/actions.py @@ -8,7 +8,11 @@ def call_add_resouce_api(): print("============================1==========================") - pkg_name = 'cloudstorage-03' + + +def call_add_resouce_api1(): + + print("============================1==========================") ssl.match_hostname = lambda cert, hostname: True url = "http://localhost:5000/api/3/action/resource_create" headers = { @@ -24,8 +28,6 @@ def call_add_resouce_api(): } print("===========================3===========================") response = requests.post(url, headers=headers, files=files, verify=False) - print(pkg_name) - print("=============================4=========================") print(response) - print("===============================5=======================") - return response \ No newline at end of file + print('====================4==================================') + return response diff --git a/ckanext/bulkupload/templates/package/new_resource_not_draft.html b/ckanext/bulkupload/templates/package/new_resource_not_draft.html index 1caf0c4..4f30d8a 100644 --- a/ckanext/bulkupload/templates/package/new_resource_not_draft.html +++ b/ckanext/bulkupload/templates/package/new_resource_not_draft.html @@ -14,7 +14,7 @@ {% block content_primary_nav %}
  • {{ _('New resource') }}
  • -
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • +
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_resource_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • {% endblock %} {% block secondary_content %} diff --git a/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html b/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html index bdbe713..34ced83 100644 --- a/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html +++ b/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html @@ -8,8 +8,8 @@ {% block content_primary_nav %} -
  • {{ _('New resource') }}
  • -
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • +
  • {% link_for _('New resource'), named_route=pkg_dict.type ~ '_resource.new', id=pkg_dict.name, icon='fa fa-pencil-square-o' %}
  • +
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_resource_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • {% endblock %} {% block secondary_content %} diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 8afa77c..6030efb 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -1,7 +1,8 @@ from flask import Blueprint from flask.views import MethodView -from flask import request +import requests +import json import ssl import ckan.model as model import ckan.logic as logic @@ -9,14 +10,16 @@ import ckan.lib.base as base from ckan.common import g -from ckan.logic.action import get, update +from ckan.logic.action import get, create +import flask +get_action = logic.get_action bulkupload = Blueprint("bulkupload", __name__) -class BulkResourceUpload(MethodView): +def bulk_resource_upload(pkg_name): - def get(self, pkg_name): + if flask.request.method == 'GET': context = { "model": model, "session": model.Session, @@ -33,14 +36,15 @@ def get(self, pkg_name): 'pkg_dict': pkg_dict, } ) - - def post(pkg_name): - - tk.get_action("call_add_resouce_api")(pkg_name) + elif flask.request.method == 'POST': - return tk.render("package/upload_bulk_sucess.html") + tk.get_action("call_add_resouce_api") + return base.render( + 'package/upload_bulk_sucess.html' + + ) bulkupload.add_url_rule("/dataset//resource/new/bulkupload", - view_func=BulkResourceUpload.as_view(str("bulk_upload")), + view_func=bulk_resource_upload, methods=("GET", "POST")) diff --git a/setup.py b/setup.py index a5f0edf..38443f1 100644 --- a/setup.py +++ b/setup.py @@ -45,7 +45,7 @@ # Specify the Python versions you support here. In particular, ensure # that you indicate whether you support Python 2, Python 3 or both. - 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.8', ], From 6392fad0b2a0bc0140fd4f5fe3a05fdcd1d94d0c Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 09:26:06 +0200 Subject: [PATCH 03/11] Add prints --- ckanext/bulkupload/actions.py | 8 ++++++-- ckanext/bulkupload/views.py | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ckanext/bulkupload/actions.py b/ckanext/bulkupload/actions.py index 8e1f77d..e559067 100644 --- a/ckanext/bulkupload/actions.py +++ b/ckanext/bulkupload/actions.py @@ -5,12 +5,16 @@ ssl.match_hostname = lambda cert, hostname: True -def call_add_resouce_api(): +def call_add_resouce_api1(*args, **kwargs): print("============================1==========================") + print("============================1==========================") + print("============================1==========================") + print("============================1==========================") + print("============================1==========================") -def call_add_resouce_api1(): +def call_add_resouce_api(*args, **kwargs): print("============================1==========================") ssl.match_hostname = lambda cert, hostname: True diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 6030efb..2c65f04 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -37,8 +37,15 @@ def bulk_resource_upload(pkg_name): } ) elif flask.request.method == 'POST': + context = { + "model": model, + "session": model.Session, + "user": g.user, + } + + x = tk.get_action("call_add_resouce_api")(context, {}) - tk.get_action("call_add_resouce_api") + extra_vars = {"x": x} return base.render( 'package/upload_bulk_sucess.html' From 62a10c8aa237f790be376e97f10897d72837c795 Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 10:30:56 +0200 Subject: [PATCH 04/11] Add resource_create action --- ckanext/bulkupload/views.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 2c65f04..c1a2445 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -1,9 +1,5 @@ from flask import Blueprint -from flask.views import MethodView - -import requests -import json -import ssl +from ckan.common import config import ckan.model as model import ckan.logic as logic import ckan.plugins.toolkit as tk @@ -42,10 +38,16 @@ def bulk_resource_upload(pkg_name): "session": model.Session, "user": g.user, } + data_dict = { + 'package_id': 'cloudstorage-03', + 'name': 'Test Name3', + 'url': 'Test Name3', + 'url_type': 'upload', + 'upload': open('/home/blagoja/Downloads/sample_data/5MB', 'rb'), + } - x = tk.get_action("call_add_resouce_api")(context, {}) + x = tk.get_action("resource_create")(context, data_dict) - extra_vars = {"x": x} return base.render( 'package/upload_bulk_sucess.html' From 7e8beeb3774864f5fd5e8977615e666ecafe226f Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 11:28:00 +0200 Subject: [PATCH 05/11] Add multiple resource_create action --- .../package/new_resource_not_draft_bulk.html | 4 ++-- ckanext/bulkupload/views.py | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html b/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html index 34ced83..e7a462e 100644 --- a/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html +++ b/ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html @@ -17,9 +17,9 @@ {% endblock %} {% block form %} -
    + - + {{ form.textarea('desc', id='field-description', label=_('Description'), value='') }}
    diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index c1a2445..7113a56 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -1,10 +1,12 @@ from flask import Blueprint +from flask import request from ckan.common import config import ckan.model as model import ckan.logic as logic import ckan.plugins.toolkit as tk import ckan.lib.base as base + from ckan.common import g from ckan.logic.action import get, create import flask @@ -38,15 +40,18 @@ def bulk_resource_upload(pkg_name): "session": model.Session, "user": g.user, } - data_dict = { - 'package_id': 'cloudstorage-03', - 'name': 'Test Name3', - 'url': 'Test Name3', - 'url_type': 'upload', - 'upload': open('/home/blagoja/Downloads/sample_data/5MB', 'rb'), - } + uploaded_files = flask.request.files.getlist("file[]") + for f in uploaded_files: + + data_dict = { + 'package_id': 'cloudstorage-03', + 'name': f.filename, + 'url': f.filename, + 'url_type': 'upload', + 'upload': open('/home/blagoja/Downloads/sample_data/5MB', 'rb'), + } - x = tk.get_action("resource_create")(context, data_dict) + x = tk.get_action("resource_create")(context, data_dict) return base.render( 'package/upload_bulk_sucess.html' From c9e3e13220e8ac612a2b96a227c10b8a63f7a122 Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 12:43:35 +0200 Subject: [PATCH 06/11] Add upload path --- ckanext/bulkupload/actions.py | 33 +-------------------------------- ckanext/bulkupload/views.py | 13 ++++++++++++- 2 files changed, 13 insertions(+), 33 deletions(-) diff --git a/ckanext/bulkupload/actions.py b/ckanext/bulkupload/actions.py index e559067..f01cf0f 100644 --- a/ckanext/bulkupload/actions.py +++ b/ckanext/bulkupload/actions.py @@ -1,37 +1,6 @@ import ckan.plugins.toolkit as tk -import requests -import ssl - -ssl.match_hostname = lambda cert, hostname: True - - -def call_add_resouce_api1(*args, **kwargs): - - print("============================1==========================") - print("============================1==========================") - print("============================1==========================") - print("============================1==========================") - print("============================1==========================") - def call_add_resouce_api(*args, **kwargs): print("============================1==========================") - ssl.match_hostname = lambda cert, hostname: True - url = "http://localhost:5000/api/3/action/resource_create" - headers = { - 'Authorization': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhN1lVZWNldGxTQjlRLXNBbEg4NTRRbjhlVEUxQXhGQzEtNFZnZzZ4M18xa0NscnZZX0hheGk0bkNiVFJRZ24wdk1oQnBWUGpRVjd5TnktMyIsImlhdCI6MTcxMjIzMzAwMX0.NBvgZIicgkHIbd_2lTmck5GLv_oWSNOA0lb4UdnWC0Q', - } - print("====================2==================================") - files = { - 'package_id': (None, 'cloudstorage-03'), - 'name': (None, '5MB'), - 'url': (None, 'upload'), - 'description': (None, ''), - 'upload': open('/home/blagoja/Downloads/sample_data/5MB', 'rb'), - } - print("===========================3===========================") - response = requests.post(url, headers=headers, files=files, verify=False) - print(response) - print('====================4==================================') - return response + diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 7113a56..f0628bb 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -5,14 +5,23 @@ import ckan.logic as logic import ckan.plugins.toolkit as tk import ckan.lib.base as base +import logging from ckan.common import g from ckan.logic.action import get, create import flask + +log = logging.getLogger(__name__) + get_action = logic.get_action bulkupload = Blueprint("bulkupload", __name__) +try: + storage_path = config.get('ckan.storage_path') +except: + log.critical('''Please specify a ckan.storage_path in your config + for your uploads''') def bulk_resource_upload(pkg_name): @@ -44,7 +53,7 @@ def bulk_resource_upload(pkg_name): for f in uploaded_files: data_dict = { - 'package_id': 'cloudstorage-03', + 'package_id': pkg_name, 'name': f.filename, 'url': f.filename, 'url_type': 'upload', @@ -52,6 +61,8 @@ def bulk_resource_upload(pkg_name): } x = tk.get_action("resource_create")(context, data_dict) + upload_path= storage_path + '/resource/'+ x['id'][0:3] + "/" + x['id'][3:6] + upload_filename= x['id'][6:] return base.render( 'package/upload_bulk_sucess.html' From c2dd70f1cf2fce0c52faf77b17b95315b7191ced Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 15:03:43 +0200 Subject: [PATCH 07/11] Upload the files --- ckanext/bulkupload/views.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index f0628bb..29a704f 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -6,10 +6,11 @@ import ckan.plugins.toolkit as tk import ckan.lib.base as base import logging - +import os +from pathlib import Path from ckan.common import g -from ckan.logic.action import get, create +from ckan.logic.action import get import flask @@ -57,12 +58,14 @@ def bulk_resource_upload(pkg_name): 'name': f.filename, 'url': f.filename, 'url_type': 'upload', - 'upload': open('/home/blagoja/Downloads/sample_data/5MB', 'rb'), } x = tk.get_action("resource_create")(context, data_dict) - upload_path= storage_path + '/resource/'+ x['id'][0:3] + "/" + x['id'][3:6] - upload_filename= x['id'][6:] + upload_path = storage_path + '/resources/' + x['id'][0:3] + "/" + x['id'][3:6] + upload_filename = x['id'][6:] + filepath = Path(os.path.join(upload_path, upload_filename)) + filepath.parent.mkdir(parents=True, exist_ok=True) + f.save(os.path.join(upload_path, upload_filename)) return base.render( 'package/upload_bulk_sucess.html' From de2d70c7f33d598dbf52520e595ef697f706ed49 Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 15:36:23 +0200 Subject: [PATCH 08/11] Change template after upload --- ckanext/bulkupload/views.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 29a704f..9c7e59b 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -50,6 +50,10 @@ def bulk_resource_upload(pkg_name): "session": model.Session, "user": g.user, } + pkg_name_dict = { + 'id': pkg_name, + } + pkg_dict = get.package_show(context, pkg_name_dict) uploaded_files = flask.request.files.getlist("file[]") for f in uploaded_files: @@ -67,9 +71,11 @@ def bulk_resource_upload(pkg_name): filepath.parent.mkdir(parents=True, exist_ok=True) f.save(os.path.join(upload_path, upload_filename)) + extra_vars= { + 'pkg_dict': pkg_dict + } return base.render( - 'package/upload_bulk_sucess.html' - + 'package/read.html', extra_vars ) From 092c0786c3750df216fcf66d830467a1c2cb86f3 Mon Sep 17 00:00:00 2001 From: blagoja Date: Thu, 11 Apr 2024 16:14:36 +0200 Subject: [PATCH 09/11] Change upload sucess template --- .../bulkupload/templates/package/activity_bulk.html | 12 ++++++++++++ .../templates/package/new_resource_not_draft.html | 2 +- .../templates/package/snippets/bulk_sucess.html | 1 + .../templates/package/upload_bulk_sucess.html | 1 - ckanext/bulkupload/views.py | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 ckanext/bulkupload/templates/package/activity_bulk.html create mode 100644 ckanext/bulkupload/templates/package/snippets/bulk_sucess.html delete mode 100644 ckanext/bulkupload/templates/package/upload_bulk_sucess.html diff --git a/ckanext/bulkupload/templates/package/activity_bulk.html b/ckanext/bulkupload/templates/package/activity_bulk.html new file mode 100644 index 0000000..8d11fad --- /dev/null +++ b/ckanext/bulkupload/templates/package/activity_bulk.html @@ -0,0 +1,12 @@ +{% extends "package/read_base.html" %} + +{% block subtitle %}{{ _('Activity Stream') }} {{ g.template_title_delimiter }} {{ super() }}{% endblock %} + +{% block primary_content_inner %} +

    + {% block page_heading %} + {{ _('Activity Stream') }} + {% endblock %} +

    + {% snippet 'package/snippets/bulk_sucess.html', activity_stream=activity_stream, id=id, object_type='package' %} +{% endblock %} diff --git a/ckanext/bulkupload/templates/package/new_resource_not_draft.html b/ckanext/bulkupload/templates/package/new_resource_not_draft.html index 4f30d8a..bc3658e 100644 --- a/ckanext/bulkupload/templates/package/new_resource_not_draft.html +++ b/ckanext/bulkupload/templates/package/new_resource_not_draft.html @@ -14,7 +14,7 @@ {% block content_primary_nav %}
  • {{ _('New resource') }}
  • -
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_resource_upload', pkg_dict=pkg_dict, pkg_name=pkg_name, icon='plus-square' %}
  • +
  • {% link_for _('Bulk Upload'), named_route='bulkupload.bulk_resource_upload', pkg_name=pkg_name, icon='plus-square' %}
  • {% endblock %} {% block secondary_content %} diff --git a/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html b/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html new file mode 100644 index 0000000..a43a64e --- /dev/null +++ b/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html @@ -0,0 +1 @@ +

    Bulk upload finished

    \ No newline at end of file diff --git a/ckanext/bulkupload/templates/package/upload_bulk_sucess.html b/ckanext/bulkupload/templates/package/upload_bulk_sucess.html deleted file mode 100644 index 272aaff..0000000 --- a/ckanext/bulkupload/templates/package/upload_bulk_sucess.html +++ /dev/null @@ -1 +0,0 @@ -

    Upload sucess

    diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 9c7e59b..0604db6 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -75,7 +75,7 @@ def bulk_resource_upload(pkg_name): 'pkg_dict': pkg_dict } return base.render( - 'package/read.html', extra_vars + 'package/activity_bulk.html', extra_vars ) From 4376772103168d0f0579f2f9d63f23c93438cc5a Mon Sep 17 00:00:00 2001 From: blagoja Date: Fri, 12 Apr 2024 09:07:37 +0200 Subject: [PATCH 10/11] Add auth functions --- ckanext/bulkupload/auth.py | 2 ++ ckanext/bulkupload/plugin.py | 9 +++++++++ .../templates/package/snippets/bulk_sucess.html | 4 +++- ckanext/bulkupload/views.py | 12 ++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 ckanext/bulkupload/auth.py diff --git a/ckanext/bulkupload/auth.py b/ckanext/bulkupload/auth.py new file mode 100644 index 0000000..da33712 --- /dev/null +++ b/ckanext/bulkupload/auth.py @@ -0,0 +1,2 @@ +def bulk_resource_upload(context, data_dict): + return {'success': False} diff --git a/ckanext/bulkupload/plugin.py b/ckanext/bulkupload/plugin.py index b65aef3..17c8753 100644 --- a/ckanext/bulkupload/plugin.py +++ b/ckanext/bulkupload/plugin.py @@ -2,12 +2,14 @@ import ckan.plugins.toolkit as toolkit from ckanext.bulkupload.views import bulkupload import ckanext.bulkupload.actions as actions +import ckanext.bulkupload.auth as auth class BulkuploadPlugin(plugins.SingletonPlugin): plugins.implements(plugins.IConfigurer) plugins.implements(plugins.IBlueprint) plugins.implements(plugins.IActions) + plugins.implements(plugins.IAuthFunctions) # IConfigurer @@ -24,6 +26,13 @@ def get_actions(self): "call_add_resouce_api": actions.call_add_resouce_api, } + + # IAuthFunctions + + def get_auth_functions(self): + return { + "bulk_resource_upload": auth.bulk_resource_upload, + } # IBlueprint diff --git a/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html b/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html index a43a64e..aad3e48 100644 --- a/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html +++ b/ckanext/bulkupload/templates/package/snippets/bulk_sucess.html @@ -1 +1,3 @@ -

    Bulk upload finished

    \ No newline at end of file +

    {{ _("Bulk upload finished") }}

    +
    +

    {{ _("Notice: Reloading this page will send the same request again and repeat the bulk upload") }}

    \ No newline at end of file diff --git a/ckanext/bulkupload/views.py b/ckanext/bulkupload/views.py index 0604db6..bb566e8 100644 --- a/ckanext/bulkupload/views.py +++ b/ckanext/bulkupload/views.py @@ -32,7 +32,13 @@ def bulk_resource_upload(pkg_name): "model": model, "session": model.Session, "user": g.user, + "auth_user_obj": g.userobj, } + try: + tk.check_access("bulk_resource_upload", context) + except: + return tk.abort(403) + pkg_name_dict = { 'id': pkg_name, } @@ -49,7 +55,13 @@ def bulk_resource_upload(pkg_name): "model": model, "session": model.Session, "user": g.user, + "auth_user_obj": g.userobj, } + try: + tk.check_access("bulk_resource_upload", context) + except: + return tk.abort(403) + pkg_name_dict = { 'id': pkg_name, } From a0e5d0e84fe47e52c167e037f40a2e06acbd45a5 Mon Sep 17 00:00:00 2001 From: blagoja Date: Fri, 12 Apr 2024 09:38:28 +0200 Subject: [PATCH 11/11] Add translation --- .../bulkupload/i18n/ckanext-bulkupload.pot | 64 +++++++++++++++++ .../i18n/es/LC_MESSAGES/ckanext-bulkupload.mo | Bin 0 -> 763 bytes .../i18n/es/LC_MESSAGES/ckanext-bulkupload.po | 67 ++++++++++++++++++ ckanext/bulkupload/plugin.py | 6 +- 4 files changed, 135 insertions(+), 2 deletions(-) create mode 100644 ckanext/bulkupload/i18n/ckanext-bulkupload.pot create mode 100644 ckanext/bulkupload/i18n/es/LC_MESSAGES/ckanext-bulkupload.mo create mode 100644 ckanext/bulkupload/i18n/es/LC_MESSAGES/ckanext-bulkupload.po diff --git a/ckanext/bulkupload/i18n/ckanext-bulkupload.pot b/ckanext/bulkupload/i18n/ckanext-bulkupload.pot new file mode 100644 index 0000000..53719ec --- /dev/null +++ b/ckanext/bulkupload/i18n/ckanext-bulkupload.pot @@ -0,0 +1,64 @@ +# Translations template for ckanext-bulkupload. +# Copyright (C) 2024 ORGANIZATION +# This file is distributed under the same license as the ckanext-bulkupload +# project. +# FIRST AUTHOR , 2024. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: ckanext-bulkupload 0.0.1\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-04-12 09:28+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" + +#: ckanext/bulkupload/templates/package/activity_bulk.html:3 +#: ckanext/bulkupload/templates/package/activity_bulk.html:8 +msgid "Activity Stream" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:3 +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:4 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:4 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:5 +msgid "Add resource" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:8 +msgid "Add New Resource" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:16 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:11 +msgid "New resource" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:17 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:12 +msgid "Bulk Upload" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:23 +msgid "Description" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:26 +msgid "Upload" +msgstr "" + +#: ckanext/bulkupload/templates/package/snippets/bulk_sucess.html:1 +msgid "Bulk upload finished" +msgstr "" + +#: ckanext/bulkupload/templates/package/snippets/bulk_sucess.html:3 +msgid "" +"Notice: Reloading this page will send the same request again and repeat the " +"bulk upload" +msgstr "" + diff --git a/ckanext/bulkupload/i18n/es/LC_MESSAGES/ckanext-bulkupload.mo b/ckanext/bulkupload/i18n/es/LC_MESSAGES/ckanext-bulkupload.mo new file mode 100644 index 0000000000000000000000000000000000000000..5a6c6f55ab8c0d3605b2dd8cc93ffa8b047b13b7 GIT binary patch literal 763 zcmaJfgc5H+YL!wDgA;V|4lXoF)_BDhJ_d=*8qOO&Q?fy2a}I7`=Sv%3zY2Yv(+ z-1}SlA2{+`7$*^h3oAX%%=&rX?A!VE;NZK*>wxi?(QS&q)_czHF+MOJG9=?2<16FG z9nbs8@jj!t>v@kjUU6J;{KnB6)anv0Dpg{(%j<0pOR1$@QRbbMPNo#Wj2e#AIk=Uy zP+?B+St=1joiC};WQV_OYvVu26lOrT(, 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: ckanext-bulkupload 0.0.1\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2024-04-12 09:28+0200\n" +"PO-Revision-Date: 2024-04-12 09:28+0200\n" +"Last-Translator: FULL NAME \n" +"Language: es\n" +"Language-Team: es \n" +"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.7.0\n" + +#: ckanext/bulkupload/templates/package/activity_bulk.html:3 +#: ckanext/bulkupload/templates/package/activity_bulk.html:8 +msgid "Activity Stream" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:3 +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:4 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:4 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:5 +msgid "Add resource" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:8 +msgid "Add New Resource" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:16 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:11 +msgid "New resource" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft.html:17 +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:12 +msgid "Bulk Upload" +msgstr "Carga Masiva" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:23 +msgid "Description" +msgstr "" + +#: ckanext/bulkupload/templates/package/new_resource_not_draft_bulk.html:26 +msgid "Upload" +msgstr "" + +#: ckanext/bulkupload/templates/package/snippets/bulk_sucess.html:1 +msgid "Bulk upload finished" +msgstr "Carga masiva finalizada" + +#: ckanext/bulkupload/templates/package/snippets/bulk_sucess.html:3 +msgid "" +"Notice: Reloading this page will send the same request again and repeat " +"the bulk upload" +msgstr "" +"Aviso: al recargar esta página se enviará la misma solicitud nuevamente y se repetirá " +"la carga masiva" + diff --git a/ckanext/bulkupload/plugin.py b/ckanext/bulkupload/plugin.py index 17c8753..370325a 100644 --- a/ckanext/bulkupload/plugin.py +++ b/ckanext/bulkupload/plugin.py @@ -1,15 +1,17 @@ import ckan.plugins as plugins import ckan.plugins.toolkit as toolkit -from ckanext.bulkupload.views import bulkupload import ckanext.bulkupload.actions as actions import ckanext.bulkupload.auth as auth +from ckanext.bulkupload.views import bulkupload +from ckan.lib.plugins import DefaultTranslation -class BulkuploadPlugin(plugins.SingletonPlugin): +class BulkuploadPlugin(plugins.SingletonPlugin, DefaultTranslation): plugins.implements(plugins.IConfigurer) plugins.implements(plugins.IBlueprint) plugins.implements(plugins.IActions) plugins.implements(plugins.IAuthFunctions) + plugins.implements(plugins.ITranslation) # IConfigurer