Skip to content

Commit

Permalink
[Fixes #7060] Refactoring of thumbnail creation (#7061): Reverting Th…
Browse files Browse the repository at this point in the history
…esaurusAvailableForm form not present on 3.1.x model
  • Loading branch information
mattiagiupponi authored and afabiani committed Mar 18, 2021
1 parent f951c6e commit 4c6c25e
Showing 1 changed file with 27 additions and 43 deletions.
70 changes: 27 additions & 43 deletions geonode/layers/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import shutil
import traceback
from types import TracebackType
import warnings
import decimal
import pickle
from django.db.models import Q
Expand Down Expand Up @@ -62,7 +61,7 @@
from django.forms.utils import ErrorList

from geonode.base.auth import get_or_create_token
from geonode.base.forms import CategoryForm, TKeywordForm, BatchPermissionsForm, ThesaurusAvailableForm
from geonode.base.forms import CategoryForm, TKeywordForm, BatchPermissionsForm
from geonode.base.views import batch_modify
from geonode.base.models import (
Thesaurus,
Expand Down Expand Up @@ -896,7 +895,6 @@ def layer_metadata(
current_keywords = [keyword.name for keyword in layer.keywords.all()]
topic_category = layer.category

topic_thesaurus = layer.tkeywords.all()
# Add metadata_author or poc if missing
layer.add_missing_metadata_author_or_poc()

Expand Down Expand Up @@ -1011,11 +1009,8 @@ def layer_metadata(
json.dumps(out),
content_type='application/json',
status=400)
if hasattr(settings, 'THESAURUS'):
tkeywords_form = TKeywordForm(request.POST)
else:
tkeywords_form = ThesaurusAvailableForm(request.POST, prefix='tkeywords')
# set initial values for thesaurus form
tkeywords_form = TKeywordForm(request.POST)
# set initial values for thesaurus form
if not tkeywords_form.is_valid():
logger.error(f"Layer Thesauri Keywords form is not valid: {tkeywords_form.errors}")
out = {
Expand All @@ -1038,42 +1033,31 @@ def layer_metadata(
prefix="category_choice_field",
initial=topic_category.id if topic_category else None)

# Create THESAURUS widgets
lang = settings.THESAURUS_DEFAULT_LANG if hasattr(settings, 'THESAURUS_DEFAULT_LANG') else 'en'
if hasattr(settings, 'THESAURUS') and settings.THESAURUS:
warnings.warn('The settings for Thesaurus has been moved to Model, \
this feature will be removed in next releases', DeprecationWarning)
layer_tkeywords = layer.tkeywords.all()
tkeywords_list = ''
if layer_tkeywords and len(layer_tkeywords) > 0:
tkeywords_ids = layer_tkeywords.values_list('id', flat=True)
if hasattr(settings, 'THESAURUS') and settings.THESAURUS:
el = settings.THESAURUS
thesaurus_name = el['name']
try:
t = Thesaurus.objects.get(identifier=thesaurus_name)
for tk in t.thesaurus.filter(pk__in=tkeywords_ids):
tkl = tk.keyword.filter(lang=lang)
if len(tkl) > 0:
tkl_ids = ",".join(
map(str, tkl.values_list('id', flat=True)))
tkeywords_list += "," + \
tkl_ids if len(
tkeywords_list) > 0 else tkl_ids
except Exception:
tb = traceback.format_exc()
logger.error(tb)
tkeywords_form = TKeywordForm(instance=layer)
else:
tkeywords_form = ThesaurusAvailableForm(prefix='tkeywords')
# set initial values for thesaurus form
for tid in tkeywords_form.fields:
values = []
values = [keyword.id for keyword in topic_thesaurus if int(tid) == keyword.thesaurus.id]
tkeywords_form.fields[tid].initial = values

# Keywords from THESAURUS management
layer_tkeywords = layer.tkeywords.all()
tkeywords_list = ''
lang = 'en' # TODO: use user's language
if layer_tkeywords and len(layer_tkeywords) > 0:
tkeywords_ids = layer_tkeywords.values_list('id', flat=True)
if hasattr(settings, 'THESAURUS') and settings.THESAURUS:
el = settings.THESAURUS
thesaurus_name = el['name']
try:
t = Thesaurus.objects.get(identifier=thesaurus_name)
for tk in t.thesaurus.filter(pk__in=tkeywords_ids):
tkl = tk.keyword.filter(lang=lang)
if len(tkl) > 0:
tkl_ids = ",".join(
map(str, tkl.values_list('id', flat=True)))
tkeywords_list += "," + \
tkl_ids if len(
tkeywords_list) > 0 else tkl_ids
except Exception:
tb = traceback.format_exc()
logger.error(tb)
tkeywords_form = TKeywordForm(instance=layer)
if request.method == "POST" and layer_form.is_valid() and attribute_form.is_valid(
) and category_form.is_valid() and tkeywords_form.is_valid():
) and category_form.is_valid():
new_poc = layer_form.cleaned_data['poc']
new_author = layer_form.cleaned_data['metadata_author']

Expand Down

0 comments on commit 4c6c25e

Please sign in to comment.