Skip to content

Commit

Permalink
Merge pull request #22 from oarepo/alzbetapokorna/be-304-implement-re…
Browse files Browse the repository at this point in the history
…striction-on-file-extensions

allowed types
  • Loading branch information
mirekys authored Jun 25, 2024
2 parents 58a46da + 091b927 commit d9d28f4
Show file tree
Hide file tree
Showing 10 changed files with 35 additions and 6 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
oarepo:
description: OARepo version (11, 12, ...)
required: true
default: 11
default: 12
type: string

env:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/manual.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
oarepo:
description: OARepo version (11, 12, ...)
required: true
default: 11
default: 12

jobs:
build:
Expand Down
1 change: 1 addition & 0 deletions oarepo_model_builder_files/builders/invenio/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
"files-record": "templates/invenio_files_record.py.jinja2",
"files-record-metadata": "templates/invenio_files_record_metadata.py.jinja2",
"files-permissions": "templates/invenio_files_record_permissions.py.jinja2",
"files_service_config_types": "templates/invenio_files_service_config_types.py.jinja2",
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from oarepo_model_builder.invenio.invenio_base import InvenioBaseClassPythonBuilder

class InvenioFilesServiceConfigTypes(InvenioBaseClassPythonBuilder):
TYPE = "files_service_config_types"
section = "service-config"
template = "files_service_config_types"
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
class {{ vars.service_config|class_header }}:
allowed_mimetypes = {{ vars.service_config.mimetypes }}
allowed_extensions = {{ vars.service_config.extensions }}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class Meta:
attribute="file-class",
data_key="file-class",
)

field_args = ma.fields.List(
ma.fields.String(),
attribute="field-args",
Expand All @@ -41,6 +42,16 @@ class ModelSchema(ma.Schema):
data_key="files-field",
metadata={"doc": "Files field settings"},
)
allowed_mimetypes = ma.fields.List(
ma.fields.String(),
attribute="allowed-mimetypes",
data_key="allowed-mimetypes",
)
allowed_extensions = ma.fields.List(
ma.fields.String(),
attribute="allowed-extensions",
data_key="allowed-extensions",
)

def before_model_prepare(self, datatype, *, context, **kwargs):
file_record = datatype.definition["record"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class FilesServiceModelComponent(ServiceModelComponent):
dependency_remap = ServiceModelComponent

def before_model_prepare(self, datatype, *, context, **kwargs):

service_config = set_default(datatype, "service-config", {})
service_config.setdefault(
"base-classes",
Expand All @@ -18,7 +19,10 @@ def before_model_prepare(self, datatype, *, context, **kwargs):
],
)
service_config.setdefault("imports", [])

allowed_mimetypes = datatype.definition.get('allowed-mimetypes', [])
allowed_extensions = datatype.definition.get('allowed-extensions', [])
service_config.setdefault("mimetypes", allowed_mimetypes)
service_config.setdefault("extensions", allowed_extensions)
service = set_default(datatype, "service", {})
service.setdefault(
"base-classes", ["invenio_records_resources.services.FileService"]
Expand Down
2 changes: 1 addition & 1 deletion run-tests.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/bash
set -e

OAREPO_VERSION=${OAREPO_VERSION:-11}
OAREPO_VERSION=${OAREPO_VERSION:-12}
BUILDER_VENV=".venv-builder"
VENV_TESTS=".venv-tests"

Expand Down
6 changes: 4 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[metadata]
name = oarepo-model-builder-files
version = 4.0.15
version = 4.0.16
description =
authors = Ronald Krist <[email protected]>
readme = README.md
Expand All @@ -9,7 +9,7 @@ long_description_content_type = text/markdown


[options]
python = >=3.9
python = >=3.10
install_requires =
oarepo-model-builder-tests>=4.0.0
oarepo-model-builder>=4.0.0
Expand Down Expand Up @@ -48,6 +48,8 @@ oarepo_model_builder.builders.files =
2040-invenio_files_conftest_files = oarepo_model_builder_files.builders.tests.invenio_files_conftest_files:InvenioFilesConftestFilesBuilder
2040-invenio_files_test_files_resources = oarepo_model_builder_files.builders.tests.invenio_files_test_file_resources:InvenioFilesTestFileResourcesBuilder

2050-files-service-config-types = oarepo_model_builder_files.builders.invenio.invenio_files_service_config_types:InvenioFilesServiceConfigTypes

oarepo_model_builder.templates =
99-files_templates = oarepo_model_builder_files.builders.invenio
99-files_test_templates = oarepo_model_builder_files.builders.tests
Expand Down
2 changes: 2 additions & 0 deletions tests/example.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ record:
- invenio

files:
allowed-mimetypes:
- application/pdf
properties:
metadata:
properties:
Expand Down

0 comments on commit d9d28f4

Please sign in to comment.