From 6f9151d28008d4b6fc49e2d9c0cfe2d848a90f9f Mon Sep 17 00:00:00 2001 From: Loic Baron Date: Mon, 27 Jan 2014 18:33:15 +0100 Subject: [PATCH] Added Join the OneLab federation page, allows to add an authority, validation of authorities still ongoing --- README | 6 ++++++ portal/actions.py | 10 +++++++++- portal/models.py | 17 +++++++++++++++++ portal/slicerequestview.py | 1 + portal/static/css/onelab_marko.css | 4 ++++ portal/static/css/registration.css | 2 +- portal/urls.py | 2 ++ ui/topmenu.py | 1 + 8 files changed, 41 insertions(+), 2 deletions(-) diff --git a/README b/README index 58078467..900d8b4c 100644 --- a/README +++ b/README @@ -228,6 +228,12 @@ $python manage.py loaddata temp_data.json If your changes break your old schema this won't work - in which case tools like south or django evolution are great. + +Add a new model to the DB + +$python manage.py schemamigration --auto +$python manage.py migrate + ======== update django database to reflect changes in existing models with migration system (e.g., south) ========= As south is already installed , you just have to do: diff --git a/portal/actions.py b/portal/actions.py index c373a30c..962fe425 100644 --- a/portal/actions.py +++ b/portal/actions.py @@ -48,7 +48,6 @@ def sfa_update_user(request, user_hrn, user_params): results = execute_query(request,query) return results - def sfa_add_slice(request, slice_params): query = Query.create('slice').set(slice_params).select('slice_hrn') results = execute_query(request, query) @@ -56,6 +55,13 @@ def sfa_add_slice(request, slice_params): raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn'] return results +def sfa_add_user_to_slice(request, user_hrn, slice_params): + query = Query.update('slice').filter_by('user_hrn', '==', user_hrn).set(slice_params).select('slice_hrn') + results = execute_query(request, query) + if not results: + raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn'] + return results + # Propose hrn def manifold_add_user(request, user_params): @@ -131,6 +137,7 @@ def make_request_slice(slice): request = {} request['type'] = 'slice' request['id'] = slice.id + request['user_email'] = slice.user_email request['timestamp'] = slice.created request['authority_hrn'] = slice.authority_hrn request['slice_name'] = slice.slice_name @@ -260,6 +267,7 @@ def portal_validate_request(wsgi_request, request_ids): # ignored in request: id, timestamp, number_of_nodes, type_of_nodes, purpose sfa_add_slice(wsgi_request, sfa_slice_params) + #sfa_add_slice(wsgi_request, user_hrn, sfa_slice_params) # XXX Remove from database diff --git a/portal/models.py b/portal/models.py index 1569146a..0de4ce09 100644 --- a/portal/models.py +++ b/portal/models.py @@ -66,8 +66,25 @@ class PendingUser(models.Model): created = models.DateTimeField(auto_now_add = True) # models.ForeignKey(Institution) +class PendingAuthority(models.Model): + site_name = models.TextField() + site_authority = models.TextField() + site_abbreviated_name = models.TextField() + site_url = models.TextField() + site_latitude = models.TextField() + site_longitude = models.TextField() + address_line1 = models.TextField() + address_line2 = models.TextField() + address_line3 = models.TextField() + address_city = models.TextField() + address_postalcode = models.TextField() + address_state = models.TextField() + address_country = models.TextField() + created = models.DateTimeField(auto_now_add = True) + class PendingSlice(models.Model): slice_name = models.TextField() + user_email = models.TextField() authority_hrn = models.TextField(null=True) number_of_nodes = models.TextField(default=0) type_of_nodes = models.TextField(default='NA') diff --git a/portal/slicerequestview.py b/portal/slicerequestview.py index 5b496079..cd40a96e 100644 --- a/portal/slicerequestview.py +++ b/portal/slicerequestview.py @@ -70,6 +70,7 @@ class SliceRequestView (LoginRequiredAutoLogoutView): } s = PendingSlice( slice_name = slice_name, + user_email = email authority_hrn = authority_hrn, number_of_nodes = number_of_nodes, purpose = purpose diff --git a/portal/static/css/onelab_marko.css b/portal/static/css/onelab_marko.css index f08e8bff..be647a36 100644 --- a/portal/static/css/onelab_marko.css +++ b/portal/static/css/onelab_marko.css @@ -15,6 +15,10 @@ height: 100%; } +table { + color:white; +} + .container h1, .container h2 { color: #fff !important; } diff --git a/portal/static/css/registration.css b/portal/static/css/registration.css index 5fe83215..3f83359c 100644 --- a/portal/static/css/registration.css +++ b/portal/static/css/registration.css @@ -5,7 +5,7 @@ I've started to move over such stuff in onelab.css feel free to add to this collection */ -label.error { +.error { float: none; color: red; padding-left: .5em; diff --git a/portal/urls.py b/portal/urls.py index d1e088c3..569bdcb0 100644 --- a/portal/urls.py +++ b/portal/urls.py @@ -31,6 +31,7 @@ from portal.accountview import AccountView, account_process from portal.contactview import ContactView from portal.slicerequestview import SliceRequestView from portal.registrationview import RegistrationView +from portal.joinview import JoinView from portal.sliceview import SliceView # hopefully these should move in dedicated source files too @@ -64,6 +65,7 @@ urlpatterns = patterns('', url(r'^slice/(?P[\w\.]+)/?$', SliceView.as_view(),name='slice'), url(r'^account/account_process/?$', account_process), url(r'^register/?$', RegistrationView.as_view(), name='registration'), + url(r'^join/?$', JoinView.as_view(), name='join'), url(r'^contact/?$', ContactView.as_view(), name='contact'), #url(r'^pass_reset/?$', PassResetView.as_view(), name='pass_rest'), # Slice request diff --git a/ui/topmenu.py b/ui/topmenu.py index 69a8dd3d..b0ff707f 100644 --- a/ui/topmenu.py +++ b/ui/topmenu.py @@ -39,6 +39,7 @@ def topmenu_items_static (current, request): # looks like this is accessible to non-logged users result.append({'label':'Platforms', 'href': '/portal/platforms/'}) result.append({'label':'Register', 'href': '/portal/register/'}) + result.append({'label':'Join us', 'href': '/portal/join/'}) result.append({'label':'Contact Support', 'href': '/portal/contact/'}) # mark active if the provided 'current', even if shorter, matches the beginning of d['label'] -- 2.43.0