Skip to content

Commit

Permalink
Merge pull request #142 from c3g/bento-lib
Browse files Browse the repository at this point in the history
Switch from chord_lib to bento_lib
  • Loading branch information
davidlougheed committed Jul 6, 2020
2 parents 0492a26 + 0b51d07 commit ba85db6
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 20 deletions.
14 changes: 9 additions & 5 deletions chord_metadata_service/chord/serializers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from chord_lib.schemas.chord import CHORD_DATA_USE_SCHEMA
from bento_lib.schemas.bento import BENTO_DATA_USE_SCHEMA
from chord_metadata_service.restapi.serializers import GenericSerializer
from jsonschema import Draft7Validator, Draft4Validator
from rest_framework import serializers
Expand All @@ -12,6 +12,10 @@
__all__ = ["ProjectSerializer", "DatasetSerializer", "TableOwnershipSerializer", "TableSerializer"]


BENTO_DATA_USE_SCHEMA_VALIDATOR = Draft7Validator(BENTO_DATA_USE_SCHEMA)
LINKED_FIELD_SETS_SCHEMA_VALIDATOR = Draft7Validator(LINKED_FIELD_SETS_SCHEMA)


#############################################################
# #
# Project Management Serializers #
Expand Down Expand Up @@ -51,17 +55,17 @@ def validate_creators(self, value):

# noinspection PyMethodMayBeStatic
def validate_data_use(self, value):
validation = Draft7Validator(CHORD_DATA_USE_SCHEMA).is_valid(value)
validation = BENTO_DATA_USE_SCHEMA_VALIDATOR.is_valid(value)
if not validation:
raise serializers.ValidationError("Data use is not valid")
return value

# noinspection PyMethodMayBeStatic
def validate_linked_field_sets(self, value):
v = Draft7Validator(LINKED_FIELD_SETS_SCHEMA)
validation = v.is_valid(value)
validation = LINKED_FIELD_SETS_SCHEMA_VALIDATOR.is_valid(value)
if not validation:
raise serializers.ValidationError([str(error.message) for error in v.iter_errors(value)])
raise serializers.ValidationError([
str(error.message) for error in LINKED_FIELD_SETS_SCHEMA_VALIDATOR.iter_errors(value)])
return value

def validate(self, data):
Expand Down
16 changes: 8 additions & 8 deletions chord_metadata_service/chord/views_ingest.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,26 @@
import json
import jsonschema
import jsonschema.exceptions
import os
import uuid

from django.core.exceptions import ValidationError
from django.db import transaction
from jsonschema import Draft7Validator
from rest_framework.decorators import api_view, permission_classes, renderer_classes
from rest_framework.permissions import AllowAny
from rest_framework.renderers import BaseRenderer
from rest_framework.response import Response

from chord_lib.schemas.chord import CHORD_INGEST_SCHEMA
from chord_lib.responses import errors
from chord_lib.workflows import get_workflow, get_workflow_resource, workflow_exists
from bento_lib.schemas.bento import BENTO_INGEST_SCHEMA
from bento_lib.responses import errors
from bento_lib.workflows import get_workflow, get_workflow_resource, workflow_exists

from .ingest import METADATA_WORKFLOWS, WORKFLOWS_PATH, WORKFLOW_INGEST_FUNCTION_MAP
from .models import Table


BENTO_INGEST_SCHEMA_VALIDATOR = Draft7Validator(BENTO_INGEST_SCHEMA)


class WDLRenderer(BaseRenderer):
media_type = "text/plain"
format = "text"
Expand Down Expand Up @@ -65,9 +67,7 @@ def ingest(request):
# TODO: Use serializers with basic objects and maybe some more complex ones too (but for performance, this might
# not be optimal...)

try:
jsonschema.validate(request.data, CHORD_INGEST_SCHEMA)
except jsonschema.exceptions.ValidationError:
if not BENTO_INGEST_SCHEMA_VALIDATOR.is_valid(request.data):
return Response(errors.bad_request_error("Invalid ingest request body"), status=400) # TODO: Validation errors

table_id = request.data["table_id"]
Expand Down
4 changes: 2 additions & 2 deletions chord_metadata_service/chord/views_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import json
import uuid

from bento_lib.responses import errors
from bento_lib.search import build_search_response, postgres
from collections import Counter
from datetime import datetime
from django.db import connection
Expand All @@ -12,8 +14,6 @@
from rest_framework.response import Response
from typing import Any, Callable, Dict

from chord_lib.responses import errors
from chord_lib.search import build_search_response, postgres
from chord_metadata_service.experiments.models import Experiment
from chord_metadata_service.experiments.serializers import ExperimentSerializer
from chord_metadata_service.mcode.models import MCodePacket
Expand Down
6 changes: 3 additions & 3 deletions chord_metadata_service/metadata/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'chord_lib.auth.django_remote_user.CHORDRemoteUserMiddleware',
'bento_lib.auth.django_remote_user.BentoRemoteUserMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Expand Down Expand Up @@ -168,7 +168,7 @@

REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [
'chord_lib.auth.django_remote_user.CHORDRemoteUserAuthentication'
'bento_lib.auth.django_remote_user.BentoRemoteUserAuthentication'
],
'DEFAULT_PARSER_CLASSES': (
# allows serializers to use snake_case field names, but parse incoming data as camelCase
Expand Down Expand Up @@ -199,7 +199,7 @@
]


AUTHENTICATION_BACKENDS = ["chord_lib.auth.django_remote_user.CHORDRemoteUserBackend"] + (
AUTHENTICATION_BACKENDS = ["bento_lib.auth.django_remote_user.BentoRemoteUserBackend"] + (
["django.contrib.auth.backends.ModelBackend"] if DEBUG else [])


Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ alabaster==0.7.12
appdirs==1.4.4
attrs==19.3.0
Babel==2.8.0
bento-lib==0.11.0
certifi==2020.6.20
chardet==3.0.4
chord-lib==0.9.0
codecov==2.1.7
colorama==0.4.3
coreapi==2.3.3
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

python_requires=">=3.6",
install_requires=[
"chord_lib[django]==0.9.0",
"bento_lib[django]==0.11.0",
"Django>=2.2.14,<3.0",
"django-filter>=2.3,<3.0",
"django-nose>=1.4,<2.0",
Expand Down

0 comments on commit ba85db6

Please sign in to comment.