-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
14 changed files
with
256 additions
and
46 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,65 @@ | ||
from rest_framework import serializers | ||
from strategy_field.utils import fqn | ||
|
||
from hope_flex_fields.models import FieldDefinition | ||
from hope_flex_fields.models import DataChecker, FieldDefinition, Fieldset, FlexField | ||
|
||
|
||
class FieldDefinitionSerializer(serializers.HyperlinkedModelSerializer): | ||
class BaseSerializer(serializers.ModelSerializer): | ||
pass | ||
|
||
|
||
class FieldDefinitionSerializer(BaseSerializer): | ||
field_type = serializers.SerializerMethodField() | ||
|
||
class Meta: | ||
model = FieldDefinition | ||
fields = ["name", "description", "field_type", "attrs", "regex", "validation"] | ||
fields = [ | ||
"last_modified", | ||
"name", | ||
"description", | ||
"field_type", | ||
"attrs", | ||
"regex", | ||
"validation", | ||
] | ||
|
||
def get_field_type(self, obj: FieldDefinition): | ||
return fqn(obj.field_type) | ||
|
||
|
||
class FlexFieldSerializer(BaseSerializer): | ||
field = serializers.SlugRelatedField(read_only=True, slug_field="name") | ||
|
||
class Meta: | ||
model = FlexField | ||
fields = [ | ||
"last_modified", | ||
"name", | ||
"description", | ||
"field", | ||
"fieldset", | ||
"attrs", | ||
"regex", | ||
"validation", | ||
] | ||
|
||
def get_field_type(self, obj): | ||
return fqn(obj) | ||
|
||
class FieldsetSerializer(BaseSerializer): | ||
# fields = serializers.SlugRelatedField( | ||
# many=True, read_only=True, slug_field="name" | ||
# ) | ||
fields = FlexFieldSerializer(many=True) | ||
|
||
class Meta: | ||
model = Fieldset | ||
fields = ["last_modified", "name", "description", "extends", "fields"] | ||
|
||
|
||
class DataCheckerSerializer(BaseSerializer): | ||
fieldsets = serializers.SlugRelatedField( | ||
many=True, read_only=True, slug_field="name" | ||
) | ||
|
||
class Meta: | ||
model = DataChecker | ||
fields = ["last_modified", "name", "description", "fieldsets"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,44 @@ | ||
from rest_framework import permissions, viewsets | ||
from django.http import HttpResponse | ||
|
||
from ..models import FieldDefinition | ||
from .serializers import FieldDefinitionSerializer | ||
from rest_framework import viewsets | ||
|
||
from ..config import CONFIG | ||
from ..models import DataChecker, FieldDefinition, Fieldset, FlexField | ||
from ..utils import dumpdata_to_buffer | ||
from .serializers import ( | ||
DataCheckerSerializer, | ||
FieldDefinitionSerializer, | ||
FieldsetSerializer, | ||
FlexFieldSerializer, | ||
) | ||
|
||
class FieldDefinitionViewSet(viewsets.ModelViewSet): | ||
|
||
class Base: | ||
permission_classes = CONFIG["API_PERMISSION_CLASSES"] | ||
authentication_classes = CONFIG["API_AUTHENTICATION_CLASSES"] | ||
|
||
|
||
class FieldDefinitionViewSet(Base, viewsets.ModelViewSet): | ||
queryset = FieldDefinition.objects.all().order_by("pk") | ||
serializer_class = FieldDefinitionSerializer | ||
permission_classes = [permissions.IsAuthenticated] | ||
|
||
|
||
class FieldsetViewSet(Base, viewsets.ModelViewSet): | ||
queryset = Fieldset.objects.all().order_by("pk") | ||
serializer_class = FieldsetSerializer | ||
|
||
|
||
class FlexFieldViewSet(Base, viewsets.ModelViewSet): | ||
queryset = FlexField.objects.all().order_by("pk") | ||
serializer_class = FlexFieldSerializer | ||
|
||
|
||
class DataCheckerViewSet(Base, viewsets.ModelViewSet): | ||
queryset = DataChecker.objects.all().order_by("pk") | ||
serializer_class = DataCheckerSerializer | ||
|
||
|
||
class SyncViewSet(Base, viewsets.ModelViewSet): | ||
|
||
def list(self, request, *args, **kwargs): | ||
return HttpResponse(dumpdata_to_buffer(), content_type="application/json") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
from django.conf import settings | ||
from django.utils.module_loading import import_string | ||
|
||
CONFIG = { | ||
"API_PERMISSION_CLASSES": ["rest_framework.permissions.IsAuthenticated"], | ||
"API_AUTHENTICATION_CLASSES": ["rest_framework.authentication.BasicAuthentication"], | ||
"API_TOKEN": "", | ||
"MASTER_URL": None, | ||
} | ||
|
||
CONFIG.update(**getattr(settings, "FLEX_FIELDS_CONFIG", {})) | ||
for entry in ["API_AUTHENTICATION_CLASSES", "API_PERMISSION_CLASSES"]: | ||
CONFIG[entry] = [import_string(m) for m in CONFIG[entry]] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.