Skip to content

Commit

Permalink
Merge branch 'main' of github.com:zalf-rdm/geonode into attach-upstream
Browse files Browse the repository at this point in the history
  • Loading branch information
mwallschlaeger committed Oct 20, 2023
2 parents 108814d + e94caea commit 8f449c8
Show file tree
Hide file tree
Showing 82 changed files with 4,079 additions and 1,053 deletions.
5 changes: 3 additions & 2 deletions .devcontainer/.env
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ GEONODE_INSTANCE_NAME=geonode
GEONODE_LB_HOST_IP=
GEONODE_LB_PORT=

PROXY_URL="/?url="

# #################
# backend
# #################
Expand All @@ -43,7 +45,6 @@ ASYNC_SIGNALS=True
SITEURL=http://localhost:8000/

ALLOWED_HOSTS="['django', '*']"
PORXY_URL=""

# Data Uploader
DEFAULT_BACKEND_UPLOADER=geonode.importer
Expand Down Expand Up @@ -165,7 +166,7 @@ SECRET_KEY='myv-y4#7j-d*p-__@j#*3z@!y24fz8%^z2v6atuy4bo9vqr1_a'
# GEOIP_PATH=/mnt/volumes/statics/geoip.db

CACHE_BUSTING_STATIC_ENABLED=False
PROXY_URL=""

MEMCACHED_ENABLED=False
MEMCACHED_BACKEND=django.core.cache.backends.memcached.MemcachedCache
MEMCACHED_LOCATION=127.0.0.1:11211
Expand Down
5 changes: 0 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,9 @@ RUN yes w | pip install --src /usr/src -r requirements.txt &&\
yes w | pip install -e .

# Cleanup apt update lists
<<<<<<< HEAD
RUN rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/geonode
=======
RUN apt-get autoremove --purge &&\
apt-get clean &&\
rm -rf /var/lib/apt/lists/*
>>>>>>> c437a0a69054217976fa519b245e82966543dbe5

# Export ports
EXPOSE 8000
Expand Down
Binary file added bonares_metadata_mapping.xlsx
Binary file not shown.
1 change: 0 additions & 1 deletion entrypoint.sh
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ else

invoke statics
echo "Executing UWSGI server $cmd for Production"
#invoke initzalf
fi

echo "-----------------------------------------------------"
Expand Down
19 changes: 19 additions & 0 deletions examples/create_funder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# create funder example

import sys, os, django
sys.path.append("/") #here store is root folder(means parent).
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "store.settings")
django.setup()

from geonode.base.models import FundingReference, Funder, ResourceBase

fr = FundingReference.objects.all()[0]
f = Funder( funding_reference=fr,
award_number="25132",
award_uri="http://cordis.europa.eu/project/rcn/100180_en.html",
award_title="The human readable title of the award (grant). (e.g. MOTivational strength of ecosystem service)")

r = ResourceBase.objects.all()[0]
r.funders.add(f)
r.save()

16 changes: 16 additions & 0 deletions examples/create_related_identifier.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@

import sys, os, django
sys.path.append("/") #here store is root folder(means parent).
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "store.settings")
django.setup()

from geonode.base.models import RelationType, RelatedIdentifier, ResourceBase, RelatedIdentifierType

rt = RelationType.objects.all()[0]
rit = RelatedIdentifierType.objects.all()[0]
ri = RelatedIdentifier.objects.create(related_identifier="test",
related_identifier_type=rit,
relation_type=rt
)
rb = ResourceBase.objects.all()[0]
rb.related_identifier.add(ri)
18 changes: 18 additions & 0 deletions examples/test_rest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import sys, os, django
sys.path.append("/") #here store is root folder(means parent).
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "store.settings")
django.setup()

import io
from rest_framework.renderers import JSONRenderer
from geonode.base.models import ResourceBase
from geonode.base.api.serializers import ResourceBaseSerializer
from rest_framework.parsers import JSONParser

r = ResourceBase.objects.all()[0]
s = ResourceBaseSerializer(r)
json = JSONRenderer().render(s.data)
stream = io.BytesIO(json)
data = JSONParser().parse(stream)
se = ResourceBaseSerializer(data=data)
se.is_valid()
45 changes: 41 additions & 4 deletions geonode/base/api/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,53 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#########################################################################

import json

from django.core.exceptions import ValidationError

from rest_framework.exceptions import ParseError
from dynamic_rest.fields.fields import DynamicRelationField

from geonode.base.models import RelatedIdentifierType, RelationType, RelatedIdentifier, FundingReference, Funder


class RelatedIdentifierDynamicRelationField(DynamicRelationField):
def to_internal_value_single(self, data, serializer):
try:
rit = RelatedIdentifierType.objects.get(**data["related_identifier_type"])
rt = RelationType.objects.get(**data["relation_type"])
RelatedIdentifier.objects.get_or_create(
related_identifier=data["related_identifier"], related_identifier_type=rit, relation_type=rt
)[0].save()
r = RelatedIdentifier.objects.get(
related_identifier=data["related_identifier"], related_identifier_type=rit, relation_type=rt
)
except TypeError:
raise ParseError(detail="Could not convert related_identifier to internal object ...", code=400)
return r


class FundersDynamicRelationField(DynamicRelationField):
def to_internal_value_single(self, data, serializer):
try:
funding_reference = FundingReference.objects.get(**data["funding_reference"])
data["funding_reference"] = funding_reference
except TypeError:
raise ParseError(detail="Missing funding_reference object in funders ...", code=400)
try:
funder = Funder.objects.get_or_create(**data)
except TypeError:
raise ParseError(detail="Could not convert related_identifier to internal object ...", code=400)
return funder


class ComplexDynamicRelationField(DynamicRelationField):
def to_internal_value_single(self, data, serializer):
"""Overwrite of DynamicRelationField implementation to handle complex data structure initialization
Args:
data (Optional[str, Dict]}): serialized or deserialized data from http calls (POST, GET ...)
data (Union[str, Dict]}): serialized or deserialized data from http calls (POST, GET ...),
if content-type application/json is used, data shows up as dict
serializer (DynamicModelSerializer): Serializer for the given data
Raises:
Expand All @@ -37,8 +71,11 @@ def to_internal_value_single(self, data, serializer):
django.db.models.QuerySet: return QuerySet object of the request or set data
"""
related_model = serializer.Meta.model
if isinstance(data, str):
data = json.loads(data)
try:
if isinstance(data, str):
data = json.loads(data)
except ValueError:
return super().to_internal_value_single(data, serializer)

if isinstance(data, dict):
try:
Expand Down
Loading

0 comments on commit 8f449c8

Please sign in to comment.