internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: OCHA-DAP/hdx-ckan

Issue:
Finish deployment of "invite to org"
**Checklist**
1. Fix the server error that occurs when a non-sysadmin user tries to add a member to an org of which the user is an admin
   - build a nose test for this
2. The email suggests that a user can change their user name.  Either make that work (preferable) or change the email. 
   - investigate switching to email-based login to avoid this problem



Discussion:
Not able to reproduce the error described in part 1)

So, usernames can be changed by going to user > settings ... would it be better to make that cleared in the invite email?

Regarding part 1, I guess we deploy to stag and test it there.  Maybe it went away magically like so many of your issues.  ;)

You're right, a user can change their user name, but you get a message that makes it seem like you can't, so let's fix that erroneous message:

![image](https://cloud.githubusercontent.com/assets/1654485/3718292/985c8096-1634-11e4-9337-1c8483b7809b.png)

Also, it's not clear to a user if she's logged in or out at this point.  Trying to log in again as the same user (with the now changed username) gives: 

![image](https://cloud.githubusercontent.com/assets/1654485/3718310/d9ca1890-1634-11e4-8479-c60709551ab3.png)

But if I instead navigate to /dataset (for example) I appear to be logged out.  The desired behavior would either be to log the user out correctly and load the login page **OR** keep the user logged in and load their profile page (whichever is easier). 

There were some problems created by overrides Alex and I wrote a month ago that needed to be fixed first. Once this is redeployed I can go through and change the errors so this issue is not yet closed but will be this week!

@mbellotti, I wanted to finalize the auth function so I was testing the invite functionality. There seems to be a problem if you are an org admin BUT not a sysadmin and you invite a person. I think in this case the invite functionality shouldn't be shown, right ? Right now you get an error.

moving to sprint 27

@mbellotti @alexandru-m-g  what is the status of this issue?

We had some bugs with redeploying invite functionality that we did not anticipate, so those are now fixed. Will come back to this either today or this weekend to tie off the lose ends.


Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/member_controller.py b/ckanext-hdx_theme/ckanext/hdx_theme/member_controller.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/member_controller.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/member_controller.py
@@ -65,8 +65,9 @@ def member_new(self, id):
 				if email:
 					user_data_dict = {
 						'email': email,
-						'group_id': data_dict['id'],
-						'role': data_dict['role']
+						'group_id': id,
+						'role': data_dict['role'],
+						'id': id #This is something staging/prod need
 					}
 					del data_dict['email']
 					user_dict = self._action('user_invite')(context,


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
SSL transition - uploading data errors
![https issue upload](https://cloud.githubusercontent.com/assets/1542984/3931482/04a5d1a8-2459-11e4-8231-2692af87658c.png)

There are 2 separates problems:

[blocked] The page at 'https://data.ochadata.net/storage/upload_handle' was loaded over HTTPS, but ran insecure content from 'http://fonts.googleapis.com/css?family=Ubuntu:400,700': this content should also be loaded over HTTPS.
 upload_handle:16

The page at 'https://data.ochadata.net/dataset/new_resource/some-title' was loaded over HTTPS, but displayed insecure content from 'http://assets.okfn.org/images/logo/okf_logo_white_and_green_tiny.png': this content should also be loaded over HTTPS.
 some-title:1
The page at 'https://data.ochadata.net/dataset/new_resource/some-title' was loaded over HTTPS, but displayed insecure content from 'http://assets.okfn.org/images/ok_buttons/od_80x15_blue.png': this content should also be loaded over HTTPS.



Discussion:
pinging @alexandru-m-g 


Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
@@ -40,6 +40,7 @@ class HDXThemePlugin(plugins.SingletonPlugin):
     
     def update_config(self, config):
         toolkit.add_template_directory(config, 'templates')
+        toolkit.add_template_directory(config, 'templates_legacy')
         toolkit.add_public_directory(config, 'public')
         toolkit.add_resource('fanstatic', 'hdx_theme')
         


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Edit Organization: url is not displayed
When edit an organization which has an url, the url is not displayed in the field

Dataset Creation [BUG]: Can not save multiple countries 
1. Dataset creation: When adding multiple countries, it is saving only one
2. Dataset edit: When adding multiple countries, it is saving only one
3. Dataset creation, steps:
   a. add one country
   b. click on next:add data (no filling other fields)
   c. it will reset the country selection (not ok!)



Discussion:

I also noticed that at update and when receiving errors there is displayed at bottom of the page a dropdown called "add countries" and some checkboxes...which should be hidden I assume!
pinging @aalecs 


Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
@@ -47,13 +47,13 @@ def update_config(self, config):
 
     def before_map(self, map):
         map.connect('home', '/', controller='ckanext.hdx_theme.splash_page:SplashPageController', action='index')
-        map.connect('/count/dataset', controller='ckanext.hdx_theme.count:CountController', action='dataset')
-        map.connect('/count/country', controller='ckanext.hdx_theme.count:CountController', action='country')
-        map.connect('/count/source', controller='ckanext.hdx_theme.count:CountController', action='source')
+        map.connect('/count/dataset', controller='ckanext.hdx_theme.helpers.count:CountController', action='dataset')
+        map.connect('/count/country', controller='ckanext.hdx_theme.helpers.count:CountController', action='country')
+        map.connect('/count/source', controller='ckanext.hdx_theme.helpers.count:CountController', action='source')
         #map.connect('/user/logged_in', controller='ckanext.hdx_theme.login:LoginController', action='logged_in')
         #map.connect('/contribute', controller='ckanext.hdx_theme.login:LoginController', action='contribute')
         
-        map.connect('/count/test', controller='ckanext.hdx_theme.count:CountController', action='test')
+        map.connect('/count/test', controller='ckanext.hdx_theme.helpers.count:CountController', action='test')
         map.connect('/about/{page}', controller='ckanext.hdx_theme.splash_page:SplashPageController', action='about')
 
         #map.connect('resource_edit', '/dataset/{id}/resource_edit/{resource_id}', controller='ckanext.hdx_theme.package_controller:HDXPackageController', action='resource_edit', ckan_icon='edit')


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Indicator Detail: truncate activity stream at 7 items
This will bring the CB closer to the rest of the page. 



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py b/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py
--- a/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py
+++ b/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py
@@ -568,7 +568,7 @@ def read(self, id, format='html'):
 
        #changes done for indicator
        # c.package_activity_stream = get_action('package_activity_list_html')(context, {'id': c.pkg_dict['id']})
-        act_data_dict = {'id': c.pkg_dict['id'], 'limit': 10 }
+        act_data_dict = {'id': c.pkg_dict['id'], 'limit': 7 }
         c.hdx_activities = get_action('hdx_get_activity_list')(context, act_data_dict)
         c.related_count = c.pkg.related_count
         


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Search Page (Amok): new Layout
This is related to #1251 too.
Based on this mockup, this issue addresses:
- build the layout for /search url
- adjust the existing code done for facets
- build the tabs (All, Indicators, Feature Pages, Datasets)
- create the sections for tabs (empty, no content for the moment)
  Tab "All" will display the all 3 sections, tab "Indicators" will display only the section with indicators, etc

Search Page (Amok): new Module
Search will display a mix of information related to indicators, datasets, topics, etc
1. Create a new module for search
1. Move the existing code done about template/filter
1. Create a new controller that will manage/populate with information the page (search controller)
1. Map the search to /search



Discussion:
So, hooked up the new template to the new controller, wrote queries for the indicator and dataset tabs, calculated the counts of those queries and connected those to the template. Template has access to a parameter "c.tab" that indicates whether datasets, indicators or ALL should be active, but I'm not sure how we are passing classes into build_nav_icons

Commented out the Featured section for now :)

@danmihaila @aalecs 



Resolving patch:
diff --git a/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py b/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
--- a/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
+++ b/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
@@ -61,16 +61,16 @@ def _encode_params(params):
 			for k, v in params]
 
 def url_with_params(url, params):
-    params = _encode_params(params)
-    return url + u'?' + urlencode(params)
+	params = _encode_params(params)
+	return url + u'?' + urlencode(params)
 
 
 def search_url(params, package_type=None):
-    if not package_type or package_type == 'dataset':
-        url = h.url_for(controller='package', action='search')
-    else:
-        url = h.url_for('{0}_search'.format(package_type))
-    return url_with_params(url, params)
+	if not package_type or package_type == 'dataset':
+		url = h.url_for(controller='package', action='search')
+	else:
+		url = h.url_for('{0}_search'.format(package_type))
+	return url_with_params(url, params)
 
 def count_types(context, data_dict):
 	search = copy.copy(data_dict)
@@ -231,13 +231,13 @@ def pager_url(q=None, page=None):
 				'sort': sort_by,
 				'extras': search_extras
 			}
+
+			c.tab = "all"
 			if 'ext_indicator' in data_dict['extras']:
 				if int(data_dict['extras']['ext_indicator']) == 1:
 					c.tab = "indicators"
 				elif int(data_dict['extras']['ext_indicator']) == 0:
 					c.tab = "datasets"
-				else:
-					c.tab = "all"
 
 			query = get_action('package_search')(context, data_dict)
 			c.dataset_counts, c.indicator_counts = count_types(context, data_dict)


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Re-style facets on the search page



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py b/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py
@@ -269,3 +269,9 @@ def hdx_follow_link(obj_type, obj_id):
                        obj_id=obj_id,
                        obj_type=obj_type)
     return ''
+
+def one_active_item(items):
+    for i in items:
+        if i['active']:
+            return True
+    return False
\ No newline at end of file
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/plugin.py
@@ -93,7 +93,8 @@ def get_helpers(self):
             'hdx_follow_link': hdx_helpers.hdx_follow_link,
             'hdx_remove_schema_and_domain_from_url': hdx_helpers.hdx_remove_schema_and_domain_from_url,
             'hdx_get_ckan_config': hdx_helpers.hdx_get_ckan_config,
-            'get_group_name_from_list': hdx_helpers.get_group_name_from_list
+            'get_group_name_from_list': hdx_helpers.get_group_name_from_list,
+            'one_active_item': hdx_helpers.one_active_item
         }
         
     def get_actions(self):


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Search Page (Amok): search controller - datasets displayed
1. After merging the last changes, there are displayed a lower number of datasets (<10). This is basically due to the fact that search module searches in extras after "indicator" value 0. The database contains right now indicator value 1 for indicators and only for some datasets value 0.
   What will be the resolution for this bug?
2. I noticed in search controller that we are basically performed 3 searches (in search_controller.py) line 280 and in count_types (line 283). Is it possible to optimize this?
   Assigning it to @mbellotti 



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_search/ckanext/hdx_search/plugin.py b/ckanext-hdx_search/ckanext/hdx_search/plugin.py
--- a/ckanext-hdx_search/ckanext/hdx_search/plugin.py
+++ b/ckanext-hdx_search/ckanext/hdx_search/plugin.py
@@ -26,7 +26,7 @@ def before_search(self, search_params):
             if int(search_params['extras']['ext_indicator']) == 1:
                 search_params['q'] = search_params['q']+'+extras_indicator:1'
             elif int(search_params['extras']['ext_indicator']) == 0:
-                search_params['q'] = search_params['q']+'+extras_indicator:0'
+                search_params['q'] = search_params['q']+'+!extras_indicator:1'
         return search_params
 
     def after_search(self, search_results, search_params):


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Search Page (Amok): Feature Pages - errors
1. Feature Pages tab is missing
2. On "ALL" tab if I click on "Show all feature pages" it goes to this url: /search?q=&feature=1
   with an error on server.
   I tracked the error until search_controller:106
   File '/store/ckan/lib/default/src/ckan/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py', line 106 in isolate_tags
   selected = random.sample(tags, 3)
   File '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py', line 321 in sample
   raise ValueError("sample larger than population")
   ValueError: sample larger than population
   pinging @aalecs and @mbellotti because I think this issue is related to UI and controller.



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py b/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
--- a/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
+++ b/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
@@ -90,11 +90,11 @@ def isolate_tags(q, packages, tab):
     features = list()
     for i in packages:
         for p in i['tags']:
-            if p['name'] not in tags:
+            if p['name'] not in tags and p['vocabulary_id']:
                 tags.append(p['name'])
     
     count = len(tags)
-    if tab == 'all':
+    if tab == 'all' and count > 3:
         if q: 
            selected = difflib.get_close_matches(q,tags,n=3)
         else:
@@ -107,7 +107,7 @@ def isolate_tags(q, packages, tab):
                                         action='search')
         url = url_with_params(uri, params)
             
-        features.append({'name':s, 'display_name':s, 'url':url, 'description':'','', 'last_update':'19 Sept 2014'})
+        features.append({'name':s, 'display_name':s, 'url':url, 'description':'', 'last_update':'19 Sept 2014'})
     return (features, count)
 
 class HDXSearchController(PackageController):
@@ -271,7 +271,7 @@ def pager_url(q=None, page=None):
                     c.tab = "indicators"
                 elif int(data_dict['extras']['ext_indicator']) == 0:
                     c.tab = "datasets"
-            elif 'features' in data_dict['extras']:
+            elif 'ext_feature' in data_dict['extras']:
                 c.tab = "features"
             else:
                 c.tab = "all"


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Search Page (Amok): Feature Pages - errors
1. Feature Pages tab is missing
2. On "ALL" tab if I click on "Show all feature pages" it goes to this url: /search?q=&feature=1
   with an error on server.
   I tracked the error until search_controller:106
   File '/store/ckan/lib/default/src/ckan/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py', line 106 in isolate_tags
   selected = random.sample(tags, 3)
   File '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py', line 321 in sample
   raise ValueError("sample larger than population")
   ValueError: sample larger than population
   pinging @aalecs and @mbellotti because I think this issue is related to UI and controller.



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py b/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
--- a/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
+++ b/ckanext-hdx_search/ckanext/hdx_search/controllers/search_controller.py
@@ -280,7 +280,7 @@ def pager_url(q=None, page=None):
                     c.tab = "indicators"
                 elif int(data_dict['extras']['ext_indicator']) == 0:
                     c.tab = "datasets"
-            elif 'features' in data_dict['extras']:
+            elif 'ext_feature' in data_dict['extras']:
                 c.tab = "features"
             else:
                 c.tab = "all"


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
Dataset Edit: Edits to license not being saved
Create a dataset where license = `other` with some text.
Save the dataset
Edit the dataset and change the license to something != `other`
Update the dataset
System reloads edit page instead of dataset page.
View the data page and the license will not be changed.

Same problem with public/private and description.   Seems that no updates are being saved.



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py b/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/helpers/helpers.py
@@ -150,7 +150,7 @@ def hdx_build_nav_icon_with_message(menu_item, title, **kw):
     
 def hdx_linked_user(user, maxlength=0):
     response = h.linked_user(user, maxlength)
-    changed_response = re.sub(r"<img[^>]+/>","",str(response))
+    changed_response = re.sub(r"<img[^>]+/>","", response)
     return h.literal(changed_response)
 
 def hdx_show_singular_plural(num, singular_word, plural_word, show_number=True):


Test patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/tests/test_helper/test_user_name.py b/ckanext-hdx_theme/ckanext/hdx_theme/tests/test_helper/test_user_name.py
new file mode 100644
--- /dev/null
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/tests/test_helper/test_user_name.py
@@ -0,0 +1,41 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Oct 1, 2014
+
+@author: alexandru-m-g
+'''
+
+import ckan.tests as tests
+import ckan.plugins.toolkit as tk
+import ckan.model as model
+
+import ckanext.hdx_theme.tests.hdx_test_base as hdx_test_base
+import ckanext.hdx_theme.helpers.helpers as hdx_helpers
+
+
+class TestUserNames(hdx_test_base.HdxBaseTest):
+
+    def test_hdx_linked_user(self):
+        admin = model.User.by_name('testsysadmin')
+        users = self._users_create(admin.apikey)
+        for u in users:
+            response = hdx_helpers.hdx_linked_user(u['name'])
+            assert u['fullname'] in response,  \
+                u['fullname'] + ' should be in the response'
+
+    def _users_create(self, apikey):
+        u1 = tests.call_action_api(self.app, 'user_create', name='johnfoo', fullname='Simple user',
+                                   email='johnfoo@t.t', password='abcd',
+                                   apikey=apikey, status=200)
+        u2 = tests.call_action_api(self.app, 'user_create', name='adambar', fullname='Test user â',
+                                   email='johnfoo@t.t', password='abcd',
+                                   apikey=apikey, status=200)
+        u3 = tests.call_action_api(self.app, 'user_create', name='frenchuser', fullname='Test ùûüÿ€àâæçéèêëïîôœ',
+                                   email='johnfoo@t.t', password='abcd',
+                                   apikey=apikey, status=200)
+
+        u4 = tests.call_action_api(self.app, 'user_create', name='romanianuser', fullname='Test user ăâîşșţț„”«»“”',
+                                   email='johnfoo@t.t', password='abcd',
+                                   apikey=apikey, status=200)
+
+        return [u1, u2, u3, u4]
Repository: OCHA-DAP/hdx-ckan

Issue:
Indicator Detail: change right-most CB box
Replace the Contributors box with:

RELATED WEBSITES  (Don’t show a count)
ReliefWeb (links to reliefweb.int)
UNOCHA (links to unocha.org)
HumanitarianResponse (links to www.humanitarianresponse.info)
OCHA Financial Tracking Service (links to http://fts.unocha.org/)

This change will also apply to the Browse Page and is noted on the annotated designs for both Browse and Indicator Detail



Discussion:

Resolving patch:
diff --git a/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py b/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py
--- a/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py
+++ b/ckanext-hdx_package/ckanext/hdx_package/controllers/dataset_controller.py
@@ -584,13 +584,16 @@ def read(self, id, format='html'):
             c.followers = [{'url': h.url_for(controller='user',
                                              action='read', id=f['name']), 'name':f['fullname'] or f['name']}
                            for f in followers]
-
+        # topics
         topics_obj = helpers.pkg_topics_list({'id': c.pkg_dict['id']})
         topics = model_dictize.tag_list_dictize(topics_obj, context)
 
         if topics and len(topics) > 0:
             c.topics = [{'url': h.url_for(controller='package', action='search', vocab_Topics=t['name']), 'name':t['name']}
                         for t in topics]
+        # related websites
+        c.related_urls = [{'url': 'http://reliefweb.int', 'name': 'ReliefWeb'}, {
+            'url': 'http://www.unocha.org', 'name': 'UNOCHA'}, {'url': 'http://www.humanitarianresponse.info', 'name': 'HumanitarianResponse'}, {'url': 'http://fts.unocha.org', 'name': 'OCHA Financial Tracking Service'}]
         try:
             if int(c.pkg_dict['indicator']):
                 return render('indicator/read.html', loader_class=loader)
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/version.py b/ckanext-hdx_theme/ckanext/hdx_theme/version.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/version.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/version.py
@@ -1 +1 @@
-hdx_version='v0.3.9'
\ No newline at end of file
+hdx_version = 'v0.3.10'


Test patch:
Repository: OCHA-DAP/hdx-ckan

Issue:
The MailChimp subscribe field could use a little bit more padding-left
Right now the input text is too close to the left border. It would be nice to add some padding there. 

![screen shot 2014-10-01 at 10 23 58 am](https://cloud.githubusercontent.com/assets/953118/4476520/c03a50be-4976-11e4-9ea2-05e0d2a872f9.png)



Discussion:
I would add also: is this feature working?

@danmihaila good catch. It seems that it isn't working. It works on the blog: http://docs.hdx.rwlabs.org/blog/

We should hotfix this since we have one hotfix ready to go out anyway. @amcguire62 so he is aware.


Resolving patch:
diff --git a/ckanext-hdx_theme/ckanext/hdx_theme/version.py b/ckanext-hdx_theme/ckanext/hdx_theme/version.py
--- a/ckanext-hdx_theme/ckanext/hdx_theme/version.py
+++ b/ckanext-hdx_theme/ckanext/hdx_theme/version.py
@@ -1 +1 @@
-hdx_version = 'v0.3.9'
+hdx_version = 'v0.3.10'


Test patch: