_record_equals: function(self, other, key_fields)
{
+ if ((typeof self === "string") && (typeof other === "string")) {
+ return self == other;
+ }
for (var i=0; i < key_fields.length; i++) {
var this_value = self[key_fields[i]];
var other_value = other[key_fields[i]];
bAutoWidth: true,
});
- //this.elmt('update').click(this, this.do_ok);
- //this.elmt('refresh').click(this, this.do_cancel);
+ this.elmt('close').click(this, this.do_close);
+ //this.elmt('apply_cancel').click(this, this.do_cancel);
- this.elmt('apply').on('shown.bs.modal', function() {
+ this.elmt('apply__window').on('shown.bs.modal', function() {
self.do_update();
})
clear: function()
{
-
},
find_row: function(value)
},
- do_ok: function(e)
+ do_close: function(e)
{
- throw 'queryupdater.do_reset Not implemented';
+ var self = e.data;
+ self.table.fnClearTable();
},
+ // Not used today
do_cancel: function(e)
{
throw 'queryupdater.do_clear_annotations Not implemented';
<div id={{ domid }}>
<!-- Modal - columns selector -->
- <div class="modal fade" id="{{domid}}__apply" tabindex="-1" role="dialog" aria-labelledby="{{domid}}__apply__label" aria-hidden="true">
+ <div class="modal fade" id="{{domid}}__apply__window" tabindex="-1" role="dialog" aria-labelledby="{{domid}}__apply__label" aria-hidden="true">
<div class="modal-dialog modal-dialog-large">
<div class="modal-content">
<div class="modal-header">
-->
</div>
<div class="modal-footer">
- <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
+ <button id="{{domid}}__close" type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
<!-- Button toolbar -->
- <button class="btn btn-onelab btn-sm" data-toggle="modal" data-target="#{{domid}}__apply">Apply</button>
- <button class="btn btn-default btn-sm" data-toggle="modal" data-target="#{{domid}}__cancel">Cancel</button>
+ <button class="btn btn-onelab btn-sm" id="{{domid}}__apply" data-toggle="modal" data-target="#{{domid}}__apply__window">Apply</button>
+ <!-- <button class="btn btn-default btn-sm" id="{{domid}}__cancel">Cancel</button> -->
</div>
data = {
state: STATE_SET,
key : null,
- op : this.checked ? SET_ADD : SET_REMOVED,
+ op : this.checked ? STATE_SET_ADD : STATE_SET_REMOVE,
value: id
}
manifold.raise_event(self.options.query_uuid, FIELD_STATE_CHANGED, data);
}\r
\r
#scheduler-reservation-table tbody tr td.free:hover ,#scheduler-reservation-table tbody tr td.selected, #scheduler-reservation-table tbody tr td.selected_tmp {\r
- background: #25BA25;\r
+ background: #26c9e2;\r
}\r
\r
td.no-image {\r
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a6c9e2', endColorstr='#e0e0e0',GradientType=1 ); /* IE6-9 */\r
\r
padding: 3px 0 3px 30px;\r
- width: 150px;\r
+ width: 250px;\r
}\r
\r
.legend ol li.free{\r
+ background: #FFFFFF;\r
\r
}\r
.legend ol li.pendingin{\r
background: #25BA25;\r
}\r
\r
+.legend ol li.disabled {\r
+ background: url("../img/forbidden.png") no-repeat scroll 2px 50% #FFFFFF;\r
+}\r
+\r
/* latest stuff */\r
.sliderContainer {\r
margin-left: -15px;\r
<div class="legend">\r
<ol>\r
<li class="free">Free</li>\r
- <li class="pendingin">Pending selected</li>\r
- <li class="pendingout">Pending deselected</li>\r
- <li class="selected">Selected</li>\r
- <li class="closed">Reserved</li>\r
+ <li class="selected">Reserved</li>\r
+ <li class="pendingin">Reservation pending</li>\r
+ <li class="pendingout">Reservation cancellation pending</li>\r
+ <li class="closed">Unavailable</li>\r
+ <li class="disabled">Forbidden</li>\r
<li class="maintenance">Maintenance</li>\r
</ol>\r
</div>\r
return HttpResponseRedirect("/portal/account/")
# XXX TODO: Factorize with portal/registrationview.py
+# XXX TODO: Factorize with portal/registrationview.py
+# XXX TODO: Factorize with portal/joinview.py
elif 'generate' in request.POST:
for account_detail in account_details:
# XXX tmp sfa dependency
from sfa.util.xrn import Xrn
urn = Xrn(hrn, request['type']).get_urn()
-
+
+ # Only hrn is required for Manifold Query
sfa_authority_params = {
- 'hrn' : hrn,
- 'urn' : urn,
- 'type' : request['type'],
+ 'authority_hrn' : hrn,
+ #'authority_urn' : urn,
+ #'type' : request['type'],
#'pi' : None,
- 'enabled' : True
+ #'enabled' : True
}
print "ADD Authority"
sfa_add_authority(wsgi_request, sfa_authority_params)
#prepare user_hrn
split_email = reg_email.split("@")[0]
split_email = split_email.replace(".", "_")
+ # Replace + by _ => more convenient for testing and validate with a real email
+ split_email = split_email.replace("+", "_")
user_hrn = reg_auth + '.' + split_email
UserModel = get_user_model()
errors.append('Email already registered in Manifold. Please provide a new email address.')
# XXX TODO: Factorize with portal/accountview.py
+# XXX TODO: Factorize with portal/registrationview.py
+# XXX TODO: Factorize with portal/joinview.py
# if 'generate' in request.POST['question']:
from Crypto.PublicKey import RSA
private = RSA.generate(1024)
- private_key = json.dumps(private.exportKey())
- public = private.publickey()
- public_key = json.dumps(public.exportKey(format='OpenSSH'))
-
+ private_key = private.exportKey()
+ public_key = private.publickey().exportKey(format='OpenSSH')
# Saving to DB
- account_config = '{"user_public_key":'+ public_key + ', "user_private_key":'+ private_key + ', "user_hrn":"'+ user_hrn + '"}'
auth_type = 'managed'
- public_key = public_key.replace('"', '');
- private_key = private_key.replace('"', '');
if not errors:
reg_password = request.POST['pi_password']
# Construct user_hrn from email (XXX Should use common code)
split_email = user_request['email'].split("@")[0]
split_email = split_email.replace(".", "_")
+ # Replace + by _ => more convenient for testing and validate with a real email
+ split_email = split_email.replace("+", "_")
user_request['user_hrn'] = user_request['authority_hrn'] \
+ '.' + split_email
+ '.' + split_email + str(randint(1,1000000))
# XXX TODO: Factorize with portal/accountview.py
+ # XXX TODO: Factorize with portal/registrationview.py
+ # XXX TODO: Factorize with portal/joinview.py
if 'generate' in wsgi_request.POST['question']:
user_request['auth_type'] = 'managed'
purpose=''
exp_url=''
authority_hrn = None
+ authority_name = None
# Retrieve the list of authorities
authorities_query = Query.get('authority').select('name', 'authority_hrn')
authorities = execute_admin_query(wsgi_request, authorities_query)
if authority['authority_hrn'] == user_authority:
authority_name = authority['name']
+ # Handle the case when we use only hrn and not name
+ if authority_name is None:
+ authority_name = user_authority
#
account_query = Query().get('local:account').select('user_id','platform_id','auth_type','config')
account_details = execute_query(wsgi_request, account_query)
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
+ # Handle the case when we use only hrn and not name
if authority_hrn is None:
authority_hrn = wsgi_request.POST.get('org_name', '')