From: Ciro Scognamiglio Date: Thu, 24 Jul 2014 13:06:09 +0000 (+0200) Subject: Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab X-Git-Tag: myslice-1.0~49 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=91f1a0ed2c2b3be7377cce7182731a2339962304;hp=2f20164b6a748feeef9a7dd88d901702168f380f;p=unfold.git Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab --- diff --git a/manifoldapi/static/js/manifold.js b/manifoldapi/static/js/manifold.js index 7dfcb4db..d96deed5 100644 --- a/manifoldapi/static/js/manifold.js +++ b/manifoldapi/static/js/manifold.js @@ -462,7 +462,7 @@ function QueryStore() { { var query_ext = this.find_analyzed_query_ext(query_uuid); query_ext.filters = $.grep(query_ext.filters, function(x) { - return x == filter; + return x != filter; }); this.apply_filters(query_uuid); @@ -1832,6 +1832,7 @@ case TYPE_LIST_OF_VALUES: // FILTERS case FILTER_ADDED: + console.log("FILTER ADDED", data); /* Update internal record state */ manifold.query_store.add_filter(query_uuid, data); @@ -1841,6 +1842,7 @@ case TYPE_LIST_OF_VALUES: break; case FILTER_REMOVED: + console.log("FILTER REMOVED", data); /* Update internal record state */ manifold.query_store.remove_filter(query_uuid, data); diff --git a/plugins/columns_editor/templates/columns_editor.html b/plugins/columns_editor/templates/columns_editor.html index 1d66e982..57a78317 100644 --- a/plugins/columns_editor/templates/columns_editor.html +++ b/plugins/columns_editor/templates/columns_editor.html @@ -10,7 +10,7 @@ EOF; --> - + {% for field in fields %} - + + diff --git a/portal/accountview.py b/portal/accountview.py index 734485b8..c179a0e5 100644 --- a/portal/accountview.py +++ b/portal/accountview.py @@ -31,10 +31,12 @@ class AccountView(LoginRequiredAutoLogoutView, ThemeView): def get_context_data(self, **kwargs): self.template_name = self.template page = Page(self.request) + metadata = page.get_metadata() + page.expose_js_metadata() + page.add_js_files ( [ "js/jquery.validate.js", "js/my_account.register.js", "js/my_account.edit_profile.js","js/jquery-ui.js" ] ) page.add_css_files ( [ "css/onelab.css", "css/account_view.css","css/plugin.css" ] ) - user_query = Query().get('local:user').select('config','email','status') user_details = execute_query(self.request, user_query) diff --git a/portal/registrationview.py b/portal/registrationview.py index afaa67c2..b996e95a 100644 --- a/portal/registrationview.py +++ b/portal/registrationview.py @@ -37,7 +37,7 @@ class RegistrationView (FreeAccessView, ThemeView): """ """ errors = [] - + authority_hrn = None authorities_query = Query.get('authority').select('name', 'authority_hrn') authorities = execute_admin_query(wsgi_request, authorities_query) if authorities is not None: @@ -57,13 +57,14 @@ class RegistrationView (FreeAccessView, ThemeView): current_site = Site.objects.get_current() current_site = current_site.domain - authorities_query = Query.get('authority').select('name', 'authority_hrn') - authorities = execute_admin_query(wsgi_request, authorities_query) - for authority in authorities: if authority['name'] == wsgi_request.POST.get('org_name', ''): authority_hrn = authority['authority_hrn'] + # Handle the case when the template uses only hrn and not name + if authority_hrn is None: + authority_hrn = wsgi_request.POST.get('org_name', '') + post_email = wsgi_request.POST.get('email','').lower() salt = randint(1,100000) email_hash = md5(str(salt)+post_email).hexdigest() diff --git a/portal/slicerequestview.py b/portal/slicerequestview.py index 449147ca..598aca39 100644 --- a/portal/slicerequestview.py +++ b/portal/slicerequestview.py @@ -34,6 +34,7 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView): slice_name ='' purpose='' exp_url='' + authority_hrn = None # Retrieve the list of authorities authorities_query = Query.get('authority').select('name', 'authority_hrn') authorities = execute_admin_query(wsgi_request, authorities_query) @@ -83,6 +84,7 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView): page = Page(wsgi_request) page.add_js_files ( [ "js/jquery.validate.js", "js/jquery-ui.js" ] ) page.add_css_files ( [ "https://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" ] ) + page.expose_js_metadata() if method == 'POST': # The form has been submitted @@ -92,12 +94,13 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView): current_site = current_site.domain # getting the authority_hrn from the selected organization - authority_hrn = '' for authority in authorities: if authority['name'] == wsgi_request.POST.get('org_name', ''): authority_hrn = authority['authority_hrn'] - + # Handle the case when the template uses only hrn and not name + if authority_hrn is None: + authority_hrn = wsgi_request.POST.get('org_name', '') slice_request = { 'type' : 'slice', @@ -168,6 +171,7 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView): 'exp_url': exp_url, 'pi': pi, 'authority_name': authority_name, + 'authority_hrn': user_authority, 'cc_myself': True, 'authorities': authorities, 'theme': self.theme, diff --git a/portal/sliceresourceview.py b/portal/sliceresourceview.py index db7413d1..2d603b43 100644 --- a/portal/sliceresourceview.py +++ b/portal/sliceresourceview.py @@ -76,11 +76,11 @@ class SliceResourceView (LoginRequiredView, ThemeView): #page.enqueue_query(query_resource_all) # leases query - lease_md = metadata.details_by_object('lease') - lease_fields = [column['name'] for column in lease_md['column']] + #lease_md = metadata.details_by_object('lease') + #lease_fields = [column['name'] for column in lease_md['column']] - query_lease_all = Query.get('lease').select(lease_fields) - page.enqueue_query(query_lease_all) + #query_lease_all = Query.get('lease').select(lease_fields) + #page.enqueue_query(query_lease_all) # -------------------------------------------------------------------------- # ALL RESOURCES LIST diff --git a/portal/static/css/onelab.css b/portal/static/css/onelab.css index 8d6e73e5..5be1bf37 100644 --- a/portal/static/css/onelab.css +++ b/portal/static/css/onelab.css @@ -380,6 +380,8 @@ a.sl-resources, a.sl-resources:hover { padding:2px 4px; -moz-border-radius: 4px; border-radius: 4px; + width:125px; + text-align: center; } a.sl-resources.active, a.sl-resources.active:hover, a.sl-resources.active:focus { border:0; @@ -703,4 +705,4 @@ div.slogan { color:white; padding-top:60px; text-shadow: 1px 1px #013540; -} \ No newline at end of file +} diff --git a/portal/templates/onelab/onelab_management-tab-about.html b/portal/templates/onelab/onelab_management-tab-about.html index 0c0a94fc..687b7de3 100644 --- a/portal/templates/onelab/onelab_management-tab-about.html +++ b/portal/templates/onelab/onelab_management-tab-about.html @@ -38,4 +38,12 @@ {% endfor %}

- \ No newline at end of file + diff --git a/portal/templates/slice-resource-view.html b/portal/templates/slice-resource-view.html index a8a9ac9f..3355e0c7 100644 --- a/portal/templates/slice-resource-view.html +++ b/portal/templates/slice-resource-view.html @@ -47,7 +47,7 @@ $(document).ready(function() {
-
+
{{ filter_status }}
diff --git a/portal/templates/slice-tab-users-view.html b/portal/templates/slice-tab-users-view.html index 103a1ff8..1aaea710 100644 --- a/portal/templates/slice-tab-users-view.html +++ b/portal/templates/slice-tab-users-view.html @@ -50,8 +50,24 @@ console.log(slice_users); } }); - }); // post rest/user - } + }); // post rest/use + + $('button#addusers').click(function() { + $.post("/update/slice/",{'filters':{'slice_hrn':'{{slice}}'},'params':{'users':slice_users}}, function(data) { + if(data.success){ + // TODO: highlight row after success + //$('tr[id="'+record_id+'"]').highlight(); + mysliceAlert('Success: slice updated','success', true); + }else{ + mysliceAlert('Rest Error for: '+data.error,'warning', true); + } + }); // post update slice + + // TODO: refresh table + //window.location="/portal/institution#slices"; + }); // button#addusers click + + } // get_users_in_slice $(document).ready(function() { // TODO: Add a filter based on the list of authorities @@ -80,21 +96,6 @@ get_users_in_slice("{{user_details.parent_authority}}"); - $('button#addusers').click(function() { - $.post("/update/slice/",{'filters':{'slice_hrn':'{{slice}}'},'params':{'users':slice_users}}, function(data) { - if(data.success){ - // TODO: highlight row after success - //$('tr[id="'+record_id+'"]').highlight(); - mysliceAlert('Success: slice updated','success', true); - }else{ - mysliceAlert('Rest Error for: '+data.error,'warning', true); - } - }); // post update slice - - // TODO: refresh table - //window.location="/portal/institution#slices"; - - }); // button#addusers click $('[title!=""]').qtip(); }); // document ready diff --git a/ui/topmenu.py b/ui/topmenu.py index b0ff707f..988af27a 100644 --- a/ui/topmenu.py +++ b/ui/topmenu.py @@ -70,7 +70,9 @@ from plugins.topmenuvalidation import TopmenuValidation # for asynchronous management of topmenu def topmenu_items_live (current, page): request=page.request - query_pi_auths = Query.get('user').filter_by('user_hrn', '==', '$user_hrn' ).select('pi_authorities') + # XXX TODO This should be triggered only when user is logged in + # We might use local storage instead + query_pi_auths = Query.get('user').filter_by('user_hrn', '==', '$user_hrn' ).select('user_hrn','pi_authorities') page.enqueue_query(query_pi_auths) # # even though this plugin does not have any html materialization, the corresponding domid # # must exist because it is searched at init-time to create the JS plugin
Info Field
{{ field.name }}