Expand Up
@@ -21,6 +21,7 @@
import math
import logging
import urlparse
import traceback
from itertools import chain
from guardian .shortcuts import get_perms
Expand Down
Expand Up
@@ -63,8 +64,10 @@
check_ogc_backend )
from geonode .maps .forms import MapForm
from geonode .security .views import _perms_info_json
from geonode .base .forms import CategoryForm
from geonode .base .models import TopicCategory
from geonode .base .forms import CategoryForm , TKeywordForm
from geonode .base .models import (
Thesaurus ,
TopicCategory )
from geonode import geoserver , qgis_server
from geonode .groups .models import GroupProfile
from geonode .documents .models import get_related_documents
Expand Down
Expand Up
@@ -206,12 +209,42 @@ def map_metadata(
category_form = CategoryForm (request .POST , prefix = "category_choice_field" , initial = int (
request .POST ["category_choice_field" ]) if "category_choice_field" in request .POST and
request .POST ["category_choice_field" ] else None )
tkeywords_form = TKeywordForm (
prefix = "tkeywords" ,
initial = {'tkeywords' : request .POST .getlist ('tkeywords-tkeywords' )})
else :
map_form = MapForm (instance = map_obj , prefix = "resource" )
category_form = CategoryForm (
prefix = "category_choice_field" ,
initial = topic_category .id if topic_category else None )
# Keywords from THESAURUS management
map_tkeywords = map_obj .tkeywords .all ()
tkeywords_list = ''
lang = 'en' # TODO: use user's language
if map_tkeywords and len (map_tkeywords ) > 0 :
tkeywords_ids = map_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 BaseException :
tb = traceback .format_exc ()
logger .error (tb )
tkeywords_form = TKeywordForm (
prefix = "tkeywords" ,
initial = {'tkeywords' : tkeywords_list })
if request .method == "POST" and map_form .is_valid (
) and category_form .is_valid ():
new_poc = map_form .cleaned_data ['poc' ]
Expand Down
Expand Up
@@ -252,12 +285,10 @@ def map_metadata(
map_obj .metadata_author = new_author
map_obj .title = new_title
map_obj .abstract = new_abstract
if new_keywords :
map_obj .keywords .clear ()
map_obj .keywords .add (* new_keywords )
if new_regions :
map_obj .regions .clear ()
map_obj .regions .add (* new_regions )
map_obj .keywords .clear ()
map_obj .keywords .add (* new_keywords )
map_obj .regions .clear ()
map_obj .regions .add (* new_regions )
map_obj .category = new_category
map_obj .save ()
Expand All
@@ -272,6 +303,39 @@ def map_metadata(
message = map_obj .id
try :
# Keywords from THESAURUS management
tkeywords_to_add = []
tkeywords_cleaned = tkeywords_form .clean ()
if tkeywords_cleaned and len (tkeywords_cleaned ) > 0 :
tkeywords_ids = []
for i , val in enumerate (tkeywords_cleaned ):
try :
cleaned_data = [value for key , value in tkeywords_cleaned [i ].items (
) if 'tkeywords' in key .lower () and 'autocomplete' not in key .lower ()]
tkeywords_ids .extend (map (int , cleaned_data [0 ]))
except BaseException :
pass
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 .all ():
tkl = tk .keyword .filter (pk__in = tkeywords_ids )
if len (tkl ) > 0 :
tkeywords_to_add .append (tkl [0 ].keyword_id )
map_obj .tkeywords .clear ()
map_obj .tkeywords .add (* tkeywords_to_add )
except BaseException :
tb = traceback .format_exc ()
logger .error (tb )
except BaseException :
tb = traceback .format_exc ()
logger .error (tb )
return HttpResponse (json .dumps ({'message' : message }))
# - POST Request Ends here -
Expand Down
Expand Up
@@ -342,6 +406,7 @@ def map_metadata(
"poc_form" : poc_form ,
"author_form" : author_form ,
"category_form" : category_form ,
"tkeywords_form" : tkeywords_form ,
"layers" : layers ,
"preview" : getattr (settings , 'GEONODE_CLIENT_LAYER_PREVIEW_LIBRARY' , 'geoext' ),
"crs" : getattr (settings , 'DEFAULT_MAP_CRS' , 'EPSG:3857' ),
Expand Down