def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False) title_entry = find_entry(output_objects, 'title') title_entry['text'] = 'Resource details' output_objects.append({'object_type': 'header', 'text' : 'Show resource details'}) defaults = signature()[1] (validate_status, accepted) = validate_input_and_cert( user_arguments_dict, defaults, output_objects, client_id, configuration, allow_rejects=False, ) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) resource_list = accepted['unique_resource_name'] status = returnvalues.OK visible_res = user_visible_res_confs(configuration, client_id) allowed_vgrids = user_allowed_vgrids(configuration, client_id) for visible_res_name in resource_list: if not visible_res_name in visible_res.keys(): logger.warning('User %s not allowed to view %s (%s)' % \ (client_id, visible_res_name, visible_res.keys())) output_objects.append({'object_type': 'error_text', 'text': 'invalid resource %s' % \ visible_res_name}) continue res_dict = visible_res[visible_res_name] res_item = build_resitem_object_from_res_dict(configuration, visible_res_name, res_dict, allowed_vgrids) output_objects.append(res_item) return (output_objects, status)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = \ initialize_main_variables(client_id, op_header=False) defaults = signature()[1] (validate_status, accepted) = validate_input_and_cert( user_arguments_dict, defaults, output_objects, client_id, configuration, allow_rejects=False, ) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) title_entry = find_entry(output_objects, 'title') title_entry['text'] = 'People' # jquery support for tablesorter and confirmation on "leave": title_entry['style'] = themed_styles(configuration) title_entry['javascript'] = ''' <script type="text/javascript" src="/images/js/jquery.js"></script> <script type="text/javascript" src="/images/js/jquery.tablesorter.js"></script> <script type="text/javascript" src="/images/js/jquery.tablesorter.pager.js"></script> <script type="text/javascript" src="/images/js/jquery.tablesorter.widgets.js"></script> <script type="text/javascript" src="/images/js/jquery-ui.js"></script> <script type="text/javascript" src="/images/js/jquery.confirm.js"></script> <script type="text/javascript" > $(document).ready(function() { // init confirmation dialog $( "#confirm_dialog" ).dialog( // see http://jqueryui.com/docs/dialog/ for options { autoOpen: false, modal: true, closeOnEscape: true, width: 640, buttons: { "Cancel": function() { $( "#" + name ).dialog("close"); } } }); // table initially sorted by 0 (name) var sortOrder = [[0,0]]; // use image path for sorting if there is any inside var imgTitle = function(contents) { var key = $(contents).find("a").attr("class"); if (key == null) { key = $(contents).html(); } return key; } $("#usertable").tablesorter({widgets: ["zebra", "saveSort"], sortList:sortOrder, textExtraction: imgTitle }) .tablesorterPager({ container: $("#pager"), size: %s }); } ); </script> ''' % default_pager_entries output_objects.append({'object_type': 'html_form', 'text':''' <div id="confirm_dialog" title="Confirm" style="background:#fff;"> <div id="confirm_text"><!-- filled by js --></div> <textarea cols="72" rows="10" id="confirm_input" style="display:none;"></textarea> </div> ''' }) output_objects.append({'object_type': 'header', 'text' : 'People'}) output_objects.append( {'object_type': 'text', 'text' : 'View and communicate with other users.' }) output_objects.append({'object_type': 'sectionheader', 'text' : 'All users'}) visible_user = user_visible_user_confs(configuration, client_id) allow_vgrids = user_allowed_vgrids(configuration, client_id) anon_map = anon_to_real_user_map(configuration.user_home) if not visible_user: output_objects.append({'object_type': 'error_text', 'text' : 'no users found!'}) return (output_objects, returnvalues.SYSTEM_ERROR) users = [] for (visible_user_id, user_dict) in visible_user.items(): user_id = visible_user_id if visible_user_id in anon_map.keys(): user_id = anon_map[visible_user_id] user_obj = {'object_type': 'user', 'name': visible_user_id} user_obj.update(user_dict) user_obj['userdetailslink'] = \ {'object_type': 'link', 'destination': 'viewuser.py?cert_id=%s'\ % quote(visible_user_id), 'class': 'infolink', 'title': 'View details for %s' % \ visible_user_id, 'text': ''} vgrids_allow_email = user_dict[CONF].get('VGRIDS_ALLOW_EMAIL', []) vgrids_allow_im = user_dict[CONF].get('VGRIDS_ALLOW_IM', []) if any_vgrid in vgrids_allow_email: email_vgrids = allow_vgrids else: email_vgrids = set(vgrids_allow_email).intersection(allow_vgrids) if any_vgrid in vgrids_allow_im: im_vgrids = allow_vgrids else: im_vgrids = set(vgrids_allow_im).intersection(allow_vgrids) for proto in configuration.notify_protocols: if not email_vgrids and proto == 'email': continue if not im_vgrids and proto != 'email': continue if user_obj[CONF].get(proto.upper(), None): js_name = 'send%s%s' % (proto, hexlify(visible_user_id)) helper = html_post_helper(js_name, 'sendrequestaction.py', {'cert_id': visible_user_id, 'request_type': 'plain', 'protocol': proto, 'request_text': ''}) output_objects.append({'object_type': 'html_form', 'text': helper}) link = 'send%slink' % proto user_obj[link] = {'object_type': 'link', 'destination': "javascript: confirmDialog(%s, '%s', '%s');"\ % (js_name, 'Really send %s message to %s?'\ % (proto, visible_user_id), 'request_text'), 'class': link, 'title': 'Send %s message to %s' % \ (proto, visible_user_id), 'text': ''} users.append(user_obj) output_objects.append({'object_type': 'table_pager', 'entry_name': 'people', 'default_entries': default_pager_entries}) output_objects.append({'object_type': 'user_list', 'users': users}) return (output_objects, returnvalues.OK)
def main(client_id, user_arguments_dict): """Main function used by front end""" (configuration, logger, output_objects, op_name) = initialize_main_variables(client_id, op_header=False) client_dir = client_id_dir(client_id) defaults = signature()[1] (validate_status, accepted) = validate_input_and_cert( user_arguments_dict, defaults, output_objects, client_id, configuration, allow_rejects=False ) if not validate_status: return (accepted, returnvalues.CLIENT_ERROR) title_entry = find_entry(output_objects, "title") title_entry["text"] = "People" # jquery support for confirmation-style popup: title_entry["style"] = themed_styles(configuration) title_entry[ "javascript" ] = """ <script type="text/javascript" src="/images/js/jquery.js"></script> <script type="text/javascript" src="/images/js/jquery-ui.js"></script> <script type="text/javascript" src="/images/js/jquery.confirm.js"></script> <script type="text/javascript" > $(document).ready(function() { // init confirmation dialog $( "#confirm_dialog" ).dialog( // see http://jqueryui.com/docs/dialog/ for options { autoOpen: false, modal: true, closeOnEscape: true, width: 640, buttons: { "Cancel": function() { $( "#" + name ).dialog("close"); } } }); } ); </script> """ output_objects.append( { "object_type": "html_form", "text": """ <div id="confirm_dialog" title="Confirm" style="background:#fff;"> <div id="confirm_text"><!-- filled by js --></div> <textarea cols="72" rows="10" id="confirm_input" style="display:none;"></textarea> </div> """, } ) user_list = accepted["cert_id"] # Please note that base_dir must end in slash to avoid access to other # user dirs when own name is a prefix of another user name base_dir = os.path.abspath(os.path.join(configuration.user_home, client_dir)) + os.sep status = returnvalues.OK title_entry = find_entry(output_objects, "title") title_entry["text"] = "User details" output_objects.append({"object_type": "header", "text": "Show user details"}) visible_user = user_visible_user_confs(configuration, client_id) allowed_vgrids = user_allowed_vgrids(configuration, client_id) for visible_user_name in user_list: if not visible_user_name in visible_user.keys(): output_objects.append( {"object_type": "error_text", "text": "invalid user %s (%s)" % (visible_user_name, visible_user)} ) continue user_dict = visible_user[visible_user_name] user_item = build_useritem_object_from_user_dict( configuration, visible_user_name, base_dir, user_dict, allowed_vgrids ) output_objects.append(user_item) return (output_objects, status)