Skip to content
Snippets Groups Projects
Commit efbf4502 authored by Calum Mackervoy's avatar Calum Mackervoy Committed by Jean-Baptiste
Browse files

minor: upgrade to Django 2.2

parent fa861a74
No related branches found
No related tags found
1 merge request!161Performance
...@@ -3,12 +3,13 @@ from collections import OrderedDict, Mapping, Iterable ...@@ -3,12 +3,13 @@ from collections import OrderedDict, Mapping, Iterable
from typing import Any from typing import Any
from urllib import parse from urllib import parse
from django.db import transaction
from django.conf import settings from django.conf import settings
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
from django.core.exceptions import ValidationError as DjangoValidationError from django.core.exceptions import ValidationError as DjangoValidationError
from django.urls import resolve, Resolver404, get_script_prefix from django.urls import resolve, Resolver404, get_script_prefix
from django.urls import get_resolver from django.urls.resolvers import get_resolver
from django.db.models import QuerySet from django.db.models import QuerySet
from django.utils.datastructures import MultiValueDictKeyError from django.utils.datastructures import MultiValueDictKeyError
from django.utils.encoding import uri_to_iri from django.utils.encoding import uri_to_iri
...@@ -629,7 +630,13 @@ class LDPSerializer(HyperlinkedModelSerializer): ...@@ -629,7 +630,13 @@ class LDPSerializer(HyperlinkedModelSerializer):
nested_fk_fields_name = list(filter(lambda key: isinstance(validated_data[key], dict), validated_data)) nested_fk_fields_name = list(filter(lambda key: isinstance(validated_data[key], dict), validated_data))
for field_name in nested_fk_fields_name: for field_name in nested_fk_fields_name:
field_dict = validated_data[field_name] field_dict = validated_data[field_name]
field_model = model._meta.get_field(field_name).related_model try:
field_model = model._meta.get_field(field_name).related_model
print('field_model is ' + str(field_model))
except:
# not fk
print('except! not FK!')
continue
slug_field = Model.slug_field(field_model) slug_field = Model.slug_field(field_model)
sub_inst = None sub_inst = None
...@@ -650,11 +657,12 @@ class LDPSerializer(HyperlinkedModelSerializer): ...@@ -650,11 +657,12 @@ class LDPSerializer(HyperlinkedModelSerializer):
kwargs = {slug_field: field_dict[slug_field]} kwargs = {slug_field: field_dict[slug_field]}
sub_inst = field_model.objects.get(**kwargs) sub_inst = field_model.objects.get(**kwargs)
if sub_inst is None: if sub_inst is None:
if create: with transaction.atomic():
sub_inst = self.internal_create(field_dict, field_model) try:
else: sub_inst = self.internal_create(field_dict, field_model)
continue except:
print('whoops')
validated_data[field_name] = field_dict
validated_data[field_name] = sub_inst validated_data[field_name] = sub_inst
return validated_data return validated_data
......
import json import json
from django.apps import apps from django.apps import apps
from django.conf import settings from django.conf import settings
from django.conf.urls import re_path, include
from django.conf.urls import include, re_path
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist
from django.urls import get_resolver from django.urls.resolvers import get_resolver
from django.db import IntegrityError, transaction from django.db import IntegrityError, transaction
from django.http import JsonResponse, Http404 from django.http import JsonResponse, Http404
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
...@@ -333,18 +334,7 @@ class LDPViewSetGenerator(ModelViewSet): ...@@ -333,18 +334,7 @@ class LDPViewSetGenerator(ModelViewSet):
# append nested fields to the urls list # append nested fields to the urls list
for field in kwargs.get('nested_fields') or cls.nested_fields: for field in kwargs.get('nested_fields') or cls.nested_fields:
# the nested property may have a custom viewset defined urls.append(re_path('^' + detail_expr + field + '/', cls.nested_urls(field, **kwargs)))
try:
nested_model = kwargs['model']._meta.get_field(field).related_model
except FieldDoesNotExist:
nested_model = getattr(kwargs['model'], field).field.model
if hasattr(nested_model, 'get_view_set'):
kwargs['view_set'] = nested_model.get_view_set()
urls_fct = kwargs['view_set'].nested_urls # our custom view_set may override nested_urls
else:
urls_fct = cls.nested_urls
urls.append(re_path('^' + detail_expr + field + '/', urls_fct(field, **kwargs)))
return include(urls) return include(urls)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment