def create_role(self, trans, **kwd): params = util.Params(kwd) message = util.restore_text(params.get('message', '')) status = params.get('status', 'done') name = util.restore_text(params.get('name', '')) description = util.restore_text(params.get('description', '')) in_users = util.listify(params.get('in_users', [])) out_users = util.listify(params.get('out_users', [])) in_groups = util.listify(params.get('in_groups', [])) out_groups = util.listify(params.get('out_groups', [])) create_group_for_role = params.get('create_group_for_role', '') create_group_for_role_checked = CheckboxField.is_checked(create_group_for_role) ok = True if params.get('create_role_button', False): if not name or not description: message = "Enter a valid name and a description." status = 'error' ok = False elif trans.sa_session.query(trans.app.model.Role).filter(trans.app.model.Role.table.c.name == name).first(): message = "Role names must be unique and a role with that name already exists, so choose another name." status = 'error' ok = False else: # Create the role role, num_in_groups = trans.app.security_agent.create_role( name, description, in_users, in_groups, create_group_for_role=create_group_for_role_checked) message = "Role '%s' has been created with %d associated users and %d associated groups. " \ % (role.name, len(in_users), num_in_groups) if create_group_for_role_checked: message += 'One of the groups associated with this role is the newly created group with the same name.' trans.response.send_redirect(web.url_for(controller='admin', action='roles', message=util.sanitize_text(message), status='done')) if ok: for user in trans.sa_session.query(trans.app.model.User) \ .filter(trans.app.model.User.table.c.deleted == false()) \ .order_by(trans.app.model.User.table.c.email): out_users.append((user.id, user.email)) for group in trans.sa_session.query(trans.app.model.Group) \ .filter(trans.app.model.Group.table.c.deleted == false()) \ .order_by(trans.app.model.Group.table.c.name): out_groups.append((group.id, group.name)) return trans.fill_template('/webapps/tool_shed/admin/dataset_security/role/role_create.mako', name=name, description=description, in_users=in_users, out_users=out_users, in_groups=in_groups, out_groups=out_groups, create_group_for_role_checked=create_group_for_role_checked, message=message, status=status)
def edit_review( self, trans, **kwd ): # The value of the received id is the encoded review id. message = escape( kwd.get( 'message', '' ) ) status = kwd.get( 'status', 'done' ) review_id = kwd.get( 'id', None ) review = review_util.get_review( trans.app, review_id ) components_dict = odict() for component in review_util.get_components( trans.app ): components_dict[ component.name ] = dict( component=component, component_review=None ) repository = review.repository repo = hg_util.get_repo_for_repository( trans.app, repository=repository, repo_path=None, create=False ) for component_review in review.component_reviews: if component_review and component_review.component: component_name = component_review.component.name if component_name in components_dict: component_review_dict = components_dict[ component_name ] component_review_dict[ 'component_review' ] = component_review components_dict[ component_name ] = component_review_dict # Handle a Save button click. save_button_clicked = False save_buttons = [ '%s%sreview_button' % ( comp_name, STRSEP ) for comp_name in components_dict.keys() ] save_buttons.append( 'revision_approved_button' ) for save_button in save_buttons: if save_button in kwd: save_button_clicked = True break if save_button_clicked: # Handle the revision_approved_select_field value. revision_approved = kwd.get( 'revision_approved', None ) revision_approved_setting_changed = False if revision_approved: revision_approved = str( revision_approved ) if review.approved != revision_approved: revision_approved_setting_changed = True review.approved = revision_approved trans.sa_session.add( review ) trans.sa_session.flush() saved_component_names = [] for component_name in components_dict.keys(): flushed = False # Retrieve the review information from the form. # The star rating form field is a radio button list, so it will not be received if it was not clicked in the form. # Due to this behavior, default the value to 0. rating = 0 for k, v in kwd.items(): if k.startswith( '%s%s' % ( component_name, STRSEP ) ): component_review_attr = k.replace( '%s%s' % ( component_name, STRSEP ), '' ) if component_review_attr == 'component_id': component_id = str( v ) elif component_review_attr == 'comment': comment = str( v ) elif component_review_attr == 'private': private = CheckboxField.is_checked( v ) elif component_review_attr == 'approved': approved = str( v ) elif component_review_attr == 'rating': rating = int( str( v ) ) component = review_util.get_component( trans.app, component_id ) component_review = \ review_util.get_component_review_by_repository_review_id_component_id( trans.app, review_id, component_id ) if component_review: # See if the existing component review should be updated. if component_review.comment != comment or \ component_review.private != private or \ component_review.approved != approved or \ component_review.rating != rating: component_review.comment = comment component_review.private = private component_review.approved = approved component_review.rating = rating trans.sa_session.add( component_review ) trans.sa_session.flush() flushed = True saved_component_names.append( component_name ) else: # See if a new component_review should be created. if comment or private or approved != trans.model.ComponentReview.approved_states.NO or rating: component_review = trans.model.ComponentReview( repository_review_id=review.id, component_id=component.id, comment=comment, approved=approved, rating=rating ) trans.sa_session.add( component_review ) trans.sa_session.flush() flushed = True saved_component_names.append( component_name ) if flushed: # Update the repository rating value to be the average of all component review ratings. average_rating = trans.sa_session.query( func.avg( trans.model.ComponentReview.table.c.rating ) ) \ .filter( and_( trans.model.ComponentReview.table.c.repository_review_id == review.id, trans.model.ComponentReview.table.c.deleted == false(), trans.model.ComponentReview.table.c.approved != trans.model.ComponentReview.approved_states.NA ) ) \ .scalar() if average_rating is not None: review.rating = int( average_rating ) trans.sa_session.add( review ) trans.sa_session.flush() # Update the information in components_dict. if component_name in components_dict: component_review_dict = components_dict[ component_name ] component_review_dict[ 'component_review' ] = component_review components_dict[ component_name ] = component_review_dict if revision_approved_setting_changed: message += 'Approved value <b>%s</b> saved for this revision.<br/>' % review.approved if saved_component_names: message += 'Reviews were saved for components: %s' % ', '.join( saved_component_names ) if not revision_approved_setting_changed and not saved_component_names: message += 'No changes were made to this review, so nothing was saved.' if review and review.approved: selected_value = review.approved else: selected_value = trans.model.ComponentReview.approved_states.NO revision_approved_select_field = grids_util.build_approved_select_field( trans, name='revision_approved', selected_value=selected_value, for_component=False ) rev, changeset_revision_label = hg_util.get_rev_label_from_changeset_revision( repo, review.changeset_revision ) return trans.fill_template( '/webapps/tool_shed/repository_review/edit_review.mako', repository=repository, review=review, changeset_revision_label=changeset_revision_label, revision_approved_select_field=revision_approved_select_field, components_dict=components_dict, message=message, status=status )
def render_render_registration_form(context, form_action=None): context.caller_stack._push_frame() try: _import_ns = {} _mako_get_namespace(context, '__anon_0x5b10f90')._populate( _import_ns, [u'render_msg']) redirect = _import_ns.get('redirect', context.get('redirect', UNDEFINED)) username = _import_ns.get('username', context.get('username', UNDEFINED)) trans = _import_ns.get('trans', context.get('trans', UNDEFINED)) user_type_form_definition = _import_ns.get( 'user_type_form_definition', context.get('user_type_form_definition', UNDEFINED)) confirm = _import_ns.get('confirm', context.get('confirm', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) len = _import_ns.get('len', context.get('len', UNDEFINED)) user_type_fd_id_select_field = _import_ns.get( 'user_type_fd_id_select_field', context.get('user_type_fd_id_select_field', UNDEFINED)) widgets = _import_ns.get('widgets', context.get('widgets', UNDEFINED)) subscribe_checked = _import_ns.get( 'subscribe_checked', context.get('subscribe_checked', UNDEFINED)) cntrller = _import_ns.get('cntrller', context.get('cntrller', UNDEFINED)) webapp = _import_ns.get('webapp', context.get('webapp', UNDEFINED)) password = _import_ns.get('password', context.get('password', UNDEFINED)) email = _import_ns.get('email', context.get('email', UNDEFINED)) __M_writer = context.writer() # SOURCE LINE 24 __M_writer(u'\n\n ') # SOURCE LINE 26 if form_action is None: form_action = h.url_for(controller='user', action='create', cntrller=cntrller) from galaxy.web.form_builder import CheckboxField subscribe_check_box = CheckboxField('subscribe') # SOURCE LINE 31 __M_writer( u'\n\n <div class="toolForm">\n <form name="registration" id="registration" action="' ) # SOURCE LINE 34 __M_writer(unicode(form_action)) __M_writer( u'" method="post" >\n <div class="toolFormTitle">Create account</div>\n <div class="form-row">\n <label>Email address:</label>\n <input type="text" name="email" value="' ) # SOURCE LINE 38 __M_writer(unicode(email)) __M_writer( u'" size="40"/>\n <input type="hidden" name="webapp" value="' ) # SOURCE LINE 39 __M_writer(unicode(webapp)) __M_writer( u'" size="40"/>\n <input type="hidden" name="redirect" value="' ) # SOURCE LINE 40 __M_writer(unicode(redirect)) __M_writer( u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Password:</label>\n <input type="password" name="password" value="' ) # SOURCE LINE 44 __M_writer(unicode(password)) __M_writer( u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Confirm password:</label>\n <input type="password" name="confirm" value="' ) # SOURCE LINE 48 __M_writer(unicode(confirm)) __M_writer( u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Public name:</label>\n <input type="text" name="username" size="40" value="' ) # SOURCE LINE 52 __M_writer(unicode(username)) __M_writer(u'"/>\n') # SOURCE LINE 53 if webapp == 'galaxy': # SOURCE LINE 54 __M_writer( u' <div class="toolParamHelp" style="clear: both;">\n Your public name is an identifier that will be used to generate addresses for information\n you share publicly. Public names must be at least four characters in length and contain only lower-case\n letters, numbers, and the \'-\' character.\n </div>\n' ) # SOURCE LINE 59 else: # SOURCE LINE 60 __M_writer( u' <div class="toolParamHelp" style="clear: both;">\n Your public name provides a means of identifying you publicly within this tool shed. Public\n names must be at least four characters in length and contain only lower-case letters, numbers,\n and the \'-\' character. You cannot change your public name after you have created a repository\n in this tool shed.\n </div>\n' ) pass # SOURCE LINE 67 __M_writer(u' </div>\n') # SOURCE LINE 68 if trans.app.config.smtp_server: # SOURCE LINE 69 __M_writer( u' <div class="form-row">\n <label>Subscribe to mailing list:</label>\n' ) # SOURCE LINE 71 if subscribe_checked: # SOURCE LINE 72 __M_writer(u' ') subscribe_check_box.checked = True __M_writer(u'\n') pass # SOURCE LINE 74 __M_writer(u' ') __M_writer(unicode(subscribe_check_box.get_html())) __M_writer( u'\n <p>See <a href="http://galaxyproject.org/wiki/Mailing%20Lists" target="_blank">\n all Galaxy project mailing lists</a>.</p>\n </div>\n' ) pass # SOURCE LINE 79 if user_type_fd_id_select_field and len( user_type_fd_id_select_field.options) > 1: # SOURCE LINE 80 __M_writer( u' <div class="form-row">\n <label>User type</label>\n ' ) # SOURCE LINE 82 __M_writer(unicode(user_type_fd_id_select_field.get_html())) __M_writer(u'\n </div>\n') pass # SOURCE LINE 85 if user_type_form_definition: # SOURCE LINE 86 for field in widgets: # SOURCE LINE 87 __M_writer( u' <div class="form-row">\n <label>' ) # SOURCE LINE 88 __M_writer(unicode(field['label'])) __M_writer(u'</label>\n ') # SOURCE LINE 89 __M_writer(unicode(field['widget'].get_html())) __M_writer( u'\n <div class="toolParamHelp" style="clear: both;">\n ' ) # SOURCE LINE 91 __M_writer(unicode(field['helptext'])) __M_writer( u'\n </div>\n <div style="clear: both"></div>\n </div>\n' ) pass # SOURCE LINE 96 if not user_type_fd_id_select_field: # SOURCE LINE 97 __M_writer( u' <input type="hidden" name="user_type_fd_id" value="' ) __M_writer( unicode( trans.security.encode_id( user_type_form_definition.id))) __M_writer(u'"/>\n') pass pass # SOURCE LINE 100 __M_writer( u' <div class="form-row">\n <input type="submit" name="create_user_button" value="Submit"/>\n </div>\n </form>\n </div>\n\n' ) return '' finally: context.caller_stack._pop_frame()
def render_render_registration_form(context,form_action=None): context.caller_stack._push_frame() try: _import_ns = {} _mako_get_namespace(context, '__anon_0x7f71681b4710')._populate(_import_ns, [u'render_msg']) username = _import_ns.get('username', context.get('username', UNDEFINED)) redirect = _import_ns.get('redirect', context.get('redirect', UNDEFINED)) user_type_form_definition = _import_ns.get('user_type_form_definition', context.get('user_type_form_definition', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) len = _import_ns.get('len', context.get('len', UNDEFINED)) user_type_fd_id_select_field = _import_ns.get('user_type_fd_id_select_field', context.get('user_type_fd_id_select_field', UNDEFINED)) widgets = _import_ns.get('widgets', context.get('widgets', UNDEFINED)) subscribe_checked = _import_ns.get('subscribe_checked', context.get('subscribe_checked', UNDEFINED)) t = _import_ns.get('t', context.get('t', UNDEFINED)) cntrller = _import_ns.get('cntrller', context.get('cntrller', UNDEFINED)) trans = _import_ns.get('trans', context.get('trans', UNDEFINED)) email = _import_ns.get('email', context.get('email', UNDEFINED)) __M_writer = context.writer() # SOURCE LINE 31 __M_writer(u'\n\n ') # SOURCE LINE 33 if form_action is None: form_action = h.url_for( controller='user', action='create', cntrller=cntrller ) from galaxy.web.form_builder import CheckboxField subscribe_check_box = CheckboxField( 'subscribe' ) # SOURCE LINE 38 __M_writer(u'\n\n <div class="toolForm">\n <form name="registration" id="registration" action="') # SOURCE LINE 41 __M_writer(unicode(form_action)) __M_writer(u'" method="post" >\n <div class="toolFormTitle">Create account</div>\n <div class="form-row">\n <label>Email address:</label>\n <input type="text" name="email" value="') # SOURCE LINE 45 __M_writer(filters.html_escape(unicode(email ))) __M_writer(u'" size="40"/>\n <input type="hidden" name="redirect" value="') # SOURCE LINE 46 __M_writer(filters.html_escape(unicode(redirect ))) __M_writer(u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Password:</label>\n <input type="password" name="password" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Confirm password:</label>\n <input type="password" name="confirm" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Public name:</label>\n <input type="text" name="username" size="40" value="') # SOURCE LINE 58 __M_writer(filters.html_escape(unicode(username ))) __M_writer(u'"/>\n') # SOURCE LINE 59 if t.webapp.name == 'galaxy': # SOURCE LINE 60 __M_writer(u' <div class="toolParamHelp" style="clear: both;">\n Your public name is an identifier that will be used to generate addresses for information\n you share publicly. Public names must be at least four characters in length and contain only lower-case\n letters, numbers, and the \'-\' character.\n </div>\n') # SOURCE LINE 65 else: # SOURCE LINE 66 __M_writer(u' <div class="toolParamHelp" style="clear: both;">\n Your public name provides a means of identifying you publicly within this tool shed. Public\n names must be at least four characters in length and contain only lower-case letters, numbers,\n and the \'-\' character. You cannot change your public name after you have created a repository\n in this tool shed.\n </div>\n') pass # SOURCE LINE 73 __M_writer(u' </div>\n') # SOURCE LINE 74 if trans.app.config.smtp_server: # SOURCE LINE 75 __M_writer(u' <div class="form-row">\n <label>Subscribe to mailing list:</label>\n') # SOURCE LINE 77 if subscribe_checked: # SOURCE LINE 78 __M_writer(u' ') subscribe_check_box.checked = True __M_writer(u'\n') pass # SOURCE LINE 80 __M_writer(u' ') __M_writer(unicode(subscribe_check_box.get_html())) __M_writer(u'\n <p>See <a href="http://galaxyproject.org/wiki/Mailing%20Lists" target="_blank">\n all Galaxy project mailing lists</a>.</p>\n </div>\n') pass # SOURCE LINE 85 if user_type_fd_id_select_field and len( user_type_fd_id_select_field.options ) > 1: # SOURCE LINE 86 __M_writer(u' <div class="form-row">\n <label>User type</label>\n ') # SOURCE LINE 88 __M_writer(unicode(user_type_fd_id_select_field.get_html())) __M_writer(u'\n </div>\n') pass # SOURCE LINE 91 if user_type_form_definition: # SOURCE LINE 92 for field in widgets: # SOURCE LINE 93 __M_writer(u' <div class="form-row">\n <label>') # SOURCE LINE 94 __M_writer(unicode(field['label'])) __M_writer(u'</label>\n ') # SOURCE LINE 95 __M_writer(unicode(field['widget'].get_html())) __M_writer(u'\n <div class="toolParamHelp" style="clear: both;">\n ') # SOURCE LINE 97 __M_writer(unicode(field['helptext'])) __M_writer(u'\n </div>\n <div style="clear: both"></div>\n </div>\n') pass # SOURCE LINE 102 if not user_type_fd_id_select_field: # SOURCE LINE 103 __M_writer(u' <input type="hidden" name="user_type_fd_id" value="') __M_writer(unicode(trans.security.encode_id( user_type_form_definition.id ))) __M_writer(u'"/>\n') pass pass # SOURCE LINE 106 __M_writer(u' <div class="form-row">\n <input type="submit" name="create_user_button" value="Submit"/>\n </div>\n </form>\n </div>\n\n') return '' finally: context.caller_stack._pop_frame()
def create(self, trans, cntrller='user', redirect_url='', refresh_frames=None, **kwd): refresh_frames = refresh_frames or [] params = util.Params(kwd) # If the honeypot field is not empty we are dealing with a bot. honeypot_field = params.get('bear_field', '') if honeypot_field != '': return trans.show_error_message("You've been flagged as a possible bot. If you are not, please try registering again and fill the form out carefully. <a target=\"_top\" href=\"%s\">Go to the home page</a>.") % url_for('/') message = util.restore_text(params.get('message', '')) status = params.get('status', 'done') use_panels = util.string_as_bool(kwd.get('use_panels', True)) email = util.restore_text(params.get('email', '')) # Do not sanitize passwords, so take from kwd # instead of params ( which were sanitized ) password = kwd.get('password', '') confirm = kwd.get('confirm', '') username = util.restore_text(params.get('username', '')) subscribe = params.get('subscribe', '') subscribe_checked = CheckboxField.is_checked(subscribe) referer = trans.request.referer or '' redirect = kwd.get('redirect', referer).strip() is_admin = trans.user_is_admin success = False show_user_prepopulate_form = False if not trans.app.config.allow_user_creation and not trans.user_is_admin: message = 'User registration is disabled. Please contact your local Galaxy administrator for an account.' if trans.app.config.error_email_to is not None: message += f' Contact: {trans.app.config.error_email_to}' status = 'error' else: # check user is allowed to register message, status = trans.app.auth_manager.check_registration_allowed(email, username, password) if not message: # Create the user, save all the user info and login to Galaxy if params.get('create_user_button', False): # Check email and password validity message = self.__validate(trans, email, password, confirm, username) if not message: # All the values are valid message, status, user, success = self.__register(trans, subscribe_checked=subscribe_checked, **kwd) if success and not is_admin: # The handle_user_login() method has a call to the history_set_default_permissions() method # (needed when logging in with a history), user needs to have default permissions set before logging in trans.handle_user_login(user) trans.log_event("User created a new account") trans.log_event("User logged in") else: status = 'error' registration_warning_message = trans.app.config.registration_warning_message if success: if is_admin: redirect_url = web.url_for('/admin/users?status=success&message=Created new user account.') else: redirect_url = web.url_for('/') return trans.fill_template('/webapps/tool_shed/user/register.mako', cntrller=cntrller, email=email, username=username, subscribe_checked=subscribe_checked, show_user_prepopulate_form=show_user_prepopulate_form, use_panels=use_panels, redirect=redirect, redirect_url=redirect_url, refresh_frames=refresh_frames, registration_warning_message=registration_warning_message, message=message, status=status)
def render_render_registration_form(context,form_action=None): context.caller_stack._push_frame() try: _import_ns = {} _mako_get_namespace(context, '__anon_0x28802690')._populate(_import_ns, [u'render_msg']) username = _import_ns.get('username', context.get('username', UNDEFINED)) redirect = _import_ns.get('redirect', context.get('redirect', UNDEFINED)) user_type_form_definition = _import_ns.get('user_type_form_definition', context.get('user_type_form_definition', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) registration_warning_message = _import_ns.get('registration_warning_message', context.get('registration_warning_message', UNDEFINED)) len = _import_ns.get('len', context.get('len', UNDEFINED)) user_type_fd_id_select_field = _import_ns.get('user_type_fd_id_select_field', context.get('user_type_fd_id_select_field', UNDEFINED)) widgets = _import_ns.get('widgets', context.get('widgets', UNDEFINED)) subscribe_checked = _import_ns.get('subscribe_checked', context.get('subscribe_checked', UNDEFINED)) t = _import_ns.get('t', context.get('t', UNDEFINED)) cntrller = _import_ns.get('cntrller', context.get('cntrller', UNDEFINED)) trans = _import_ns.get('trans', context.get('trans', UNDEFINED)) email = _import_ns.get('email', context.get('email', UNDEFINED)) __M_writer = context.writer() # SOURCE LINE 31 __M_writer(u'\n\n ') # SOURCE LINE 33 if form_action is None: form_action = h.url_for( controller='user', action='create', cntrller=cntrller ) from galaxy.web.form_builder import CheckboxField subscribe_check_box = CheckboxField( 'subscribe' ) # SOURCE LINE 38 __M_writer(u'\n\n<script type="text/javascript">\n\t$(document).ready(function() {\n\n\t\tfunction validateString(test_string, type) { \n\t\t\tvar mail_re = /^(([^<>()[\\]\\\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\"]+)*)|(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\t\t\t//var mail_re_RFC822 = /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*$/;\n\t\t\tvar username_re = /^[a-z0-9\\-]{3,255}$/;\n\t\t\tif (type === \'email\') {\n\t\t\t\treturn mail_re.test(test_string);\n\t\t\t} else if (type === \'username\'){\n\t\t\t\treturn username_re.test(test_string);\n\t\t\t}\n\t\t} \n\n\t\tfunction renderError(message) {\n\t\tif ($(".errormessage").length === 1) {\n\t\t\t$(".errormessage").html(message)\n\t\t} else {\n\t\t\tvar div = document.createElement("div");\n\t\t\tdiv.className = "errormessage";\n\t\t\tdiv.innerHTML = message;\n\t\t\tdocument.body.insertBefore(div, document.body.firstChild);\n\t\t\t}\n\t\t}\n\n\t\t$(\'#registration\').bind(\'submit\', function(e) {\n\t\t\t$(\'#send\').attr(\'disabled\', \'disabled\');\n \n // we need this value to detect submitting at backend\n\t\t\tvar hidden_input = \'<input type="hidden" id="create_user_button" name="create_user_button" value="Submit"/>\';\n\t\t\t$("#email_input").before(hidden_input);\n\n\t\t\tvar error_text_email= \'Please enter your valid email address\';\n\t\t\tvar error_text_email_long= \'Email cannot be more than 255 characters in length\';\n\t\t\tvar error_text_username_characters = \'Public name must contain only lowercase letters, numbers and "-". It also has to be shorter than 255 characters but longer than 3.\';\n\t\t\tvar error_text_password_short = \'Please use a password of at least 6 characters\';\n\t\t\tvar error_text_password_match = "Passwords don\'t match";\n\n\t\t var validForm = true;\n\t\t \n\t\t var email = $(\'#email_input\').val();\n\t\t var name = $(\'#name_input\').val();\n\t\t if (email.length > 255){ renderError(error_text_email_long); validForm = false;}\n\t\t else if (!validateString(email,"email")){ renderError(error_text_email); validForm = false;}\n\t\t else if (!($(\'#password_input\').val() === $(\'#password_check_input\').val())){ renderError(error_text_password_match); validForm = false;}\n\t\t else if ($(\'#password_input\').val().length < 6 ){ renderError(error_text_password_short); validForm = false;}\n\t\t else if (name && !(validateString(name,"username"))){ renderError(error_text_username_characters); validForm = false;}\n\n\t \t\tif (!validForm) { \n\t\t e.preventDefault();\n\t\t // reactivate the button if the form wasn\'t submitted\n\t\t $(\'#send\').removeAttr(\'disabled\');\n\t\t }\n\t\t\t});\n\t});\n\n</script>\n <div class="toolForm">\n <form name="registration" id="registration" action="') # SOURCE LINE 98 __M_writer(unicode(form_action)) __M_writer(u'" method="post" >\n <div class="toolFormTitle">Create account</div>\n <div class="form-row">\n <label>Email address:</label>\n <input id="email_input" type="text" name="email" value="') # SOURCE LINE 102 __M_writer(filters.html_escape(unicode(email ))) __M_writer(u'" size="40"/>\n <input type="hidden" name="redirect" value="') # SOURCE LINE 103 __M_writer(filters.html_escape(unicode(redirect ))) __M_writer(u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Password:</label>\n <input id="password_input" type="password" name="password" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Confirm password:</label>\n <input id="password_check_input" type="password" name="confirm" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Public name:</label>\n <input id="name_input" type="text" name="username" size="40" value="') # SOURCE LINE 115 __M_writer(filters.html_escape(unicode(username ))) __M_writer(u'"/>\n') # SOURCE LINE 116 if t.webapp.name == 'galaxy': # SOURCE LINE 117 __M_writer(u' <div class="toolParamHelp" style="clear: both;">\n Your public name is an identifier that will be used to generate addresses for information\n you share publicly. Public names must be at least four characters in length and contain only lower-case\n letters, numbers, and the \'-\' character.\n </div>\n') # SOURCE LINE 122 else: # SOURCE LINE 123 __M_writer(u' <div class="toolParamHelp" style="clear: both;">\n Your public name provides a means of identifying you publicly within this tool shed. Public\n names must be at least four characters in length and contain only lower-case letters, numbers,\n and the \'-\' character. You cannot change your public name after you have created a repository\n in this tool shed.\n </div>\n') pass # SOURCE LINE 130 __M_writer(u' </div>\n') # SOURCE LINE 131 if trans.app.config.smtp_server: # SOURCE LINE 132 __M_writer(u' <div class="form-row">\n <label>Subscribe to mailing list:</label>\n') # SOURCE LINE 134 if subscribe_checked: # SOURCE LINE 135 __M_writer(u' ') subscribe_check_box.checked = True __M_writer(u'\n') pass # SOURCE LINE 137 __M_writer(u' ') __M_writer(unicode(subscribe_check_box.get_html())) __M_writer(u'\n <p>See <a href="http://galaxyproject.org/wiki/Mailing%20Lists" target="_blank">\n all Galaxy project mailing lists</a>.</p>\n </div>\n') pass # SOURCE LINE 142 if user_type_fd_id_select_field and len( user_type_fd_id_select_field.options ) >= 1: # SOURCE LINE 143 __M_writer(u' <div class="form-row">\n <label>User type</label>\n ') # SOURCE LINE 145 __M_writer(unicode(user_type_fd_id_select_field.get_html())) __M_writer(u'\n </div>\n') pass # SOURCE LINE 148 if user_type_form_definition: # SOURCE LINE 149 for field in widgets: # SOURCE LINE 150 __M_writer(u' <div class="form-row">\n <label>') # SOURCE LINE 151 __M_writer(unicode(field['label'])) __M_writer(u'</label>\n ') # SOURCE LINE 152 __M_writer(unicode(field['widget'].get_html())) __M_writer(u'\n <div class="toolParamHelp" style="clear: both;">\n ') # SOURCE LINE 154 __M_writer(unicode(field['helptext'])) __M_writer(u'\n </div>\n <div style="clear: both"></div>\n </div>\n') pass # SOURCE LINE 159 if not user_type_fd_id_select_field: # SOURCE LINE 160 __M_writer(u' <input type="hidden" name="user_type_fd_id" value="') __M_writer(unicode(trans.security.encode_id( user_type_form_definition.id ))) __M_writer(u'"/>\n') pass pass # SOURCE LINE 163 __M_writer(u' <div id="for_bears">\n If you see this, please leave following field blank. \n <input type="text" name="bear_field" size="1" value=""/>\n </div>\n <div class="form-row">\n <input type="submit" id="send" name="create_user_button" value="Submit"/>\n </div>\n </form>\n') # SOURCE LINE 171 if registration_warning_message: # SOURCE LINE 172 __M_writer(u' <div class="alert alert-danger" style="margin: 30px 12px 12px 12px;">\n ') # SOURCE LINE 173 __M_writer(unicode(registration_warning_message)) __M_writer(u' \n </div>\n') pass # SOURCE LINE 176 __M_writer(u' </div>\n\n') return '' finally: context.caller_stack._pop_frame()
def render_render_registration_form(context, form_action=None): __M_caller = context.caller_stack._push_frame() try: _import_ns = {} _mako_get_namespace(context, '__anon_0x7f295c474e50')._populate( _import_ns, [u'render_msg']) username = _import_ns.get('username', context.get('username', UNDEFINED)) redirect = _import_ns.get('redirect', context.get('redirect', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) registration_warning_message = _import_ns.get( 'registration_warning_message', context.get('registration_warning_message', UNDEFINED)) subscribe_checked = _import_ns.get( 'subscribe_checked', context.get('subscribe_checked', UNDEFINED)) t = _import_ns.get('t', context.get('t', UNDEFINED)) cntrller = _import_ns.get('cntrller', context.get('cntrller', UNDEFINED)) trans = _import_ns.get('trans', context.get('trans', UNDEFINED)) email = _import_ns.get('email', context.get('email', UNDEFINED)) __M_writer = context.writer() __M_writer(u'\n\n ') if form_action is None: form_action = h.url_for(controller='user', action='create', cntrller=cntrller) from galaxy.web.form_builder import CheckboxField subscribe_check_box = CheckboxField('subscribe') __M_writer( u'\n\n <script type="text/javascript">\n $(document).ready(function() {\n\n function validateString(test_string, type) {\n var mail_re = /^(([^<>()[\\]\\\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\"]+)*)|(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n //var mail_re_RFC822 = /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*$/;\n var username_re = /^[a-z0-9._\\-]{3,255}$/;\n if (type === \'email\') {\n return mail_re.test(test_string);\n } else if (type === \'username\'){\n return username_re.test(test_string);\n }\n }\n\n function renderError(message) {\n if (!$(".errormessage").size()) {\n $(\'<div/>\').addClass(\'errormessage\').insertBefore(\'#registrationForm\');\n }\n console.debug( $( \'#registrationForm\' ) );\n console.debug( \'.errormessage:\', $( \'.errormessage\' ) );\n $(".errormessage").html(message);\n }\n\n $("[name=\'password\']").complexify({\'minimumChars\':6}, function(valid, complexity){\n var progressBar = $(\'.progress-bar\');\n var color = valid ? \'lightgreen\' : \'red\';\n\n progressBar.css(\'background-color\', color);\n progressBar.css({\'width\': complexity + \'%\'});\n });\n\n $(\'#registration\').bind(\'submit\', function(e) {\n $(\'#send\').attr(\'disabled\', \'disabled\');\n\n // we need this value to detect submitting at backend\n var hidden_input = \'<input type="hidden" id="create_user_button" name="create_user_button" value="Submit"/>\';\n $("#email_input").before(hidden_input);\n\n var error_text_email = \'The format of the email address is not correct.\';\n var error_text_email_long = \'Email address cannot be more than 255 characters in length.\';\n var error_text_username_characters = "Public name must contain only lowercase letters, numbers, \'.\', \'_\' and \'-\'. It also has to be between 3 and 255 characters in length.";\n var error_text_password_short = \'Use a password of at least 6 characters\';\n var error_text_password_match = "Passwords don\'t match";\n\n var validForm = true;\n\n var email = $(\'#email_input\').val();\n var name = $(\'#name_input\').val();\n if (email.length > 255){ renderError(error_text_email_long); validForm = false;}\n else if (!validateString(email,"email")){ renderError(error_text_email); validForm = false;}\n else if (!($(\'#password_input\').val() === $(\'#password_check_input\').val())){ renderError(error_text_password_match); validForm = false;}\n else if ($(\'#password_input\').val().length < 6 ){ renderError(error_text_password_short); validForm = false;}\n else if (name && !(validateString(name,"username"))){ renderError(error_text_username_characters); validForm = false;}\n\n if (!validForm) {\n e.preventDefault();\n // reactivate the button if the form wasn\'t submitted\n $(\'#send\').removeAttr(\'disabled\');\n }\n });\n });\n </script>\n\n <div id="registrationForm" class="toolForm">\n <form name="registration" id="registration" action="' ) __M_writer(unicode(form_action)) __M_writer( u'" method="post" >\n <div class="toolFormTitle">Create account</div>\n <div class="form-row">\n <label>Email address:</label>\n <input id="email_input" type="text" name="email" value="' ) __M_writer(filters.html_escape(unicode(email))) __M_writer( u'" size="40"/>\n <input type="hidden" name="redirect" value="' ) __M_writer(filters.html_escape(unicode(redirect))) __M_writer( u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Password:</label>\n <input id="password_input" type="password" name="password" value="" size="40"/>\n </div>\n <div class="progress">\n <div id="complexity-bar" class="progress-bar" role="progressbar">\n Strength\n </div>\n </div>\n <div class="form-row">\n <label>Confirm password:</label>\n <input id="password_check_input" type="password" name="confirm" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Public name:</label>\n <input id="name_input" type="text" name="username" size="40" value="' ) __M_writer(filters.html_escape(unicode(username))) __M_writer(u'"/>\n') if t.webapp.name == 'galaxy': __M_writer( u' <div class="toolParamHelp" style="clear: both;">\n Your public name is an identifier that will be used to generate addresses for information\n you share publicly. Public names must be at least three characters in length and contain only\n lower-case letters, numbers, dots, underscores, and dashes (\'.\', \'_\', \'-\').\n </div>\n' ) else: __M_writer( u' <div class="toolParamHelp" style="clear: both;">\n Your public name provides a means of identifying you publicly within this tool shed. Public\n names must be at least three characters in length and contain only lower-case letters, numbers,\n dots, underscores, and dashes (\'.\', \'_\', \'-\'). You cannot change your public name after you have\n created a repository in this Tool Shed.\n </div>\n' ) __M_writer(u' </div>\n') if trans.app.config.smtp_server and trans.app.config.mailing_join_addr: __M_writer( u' <div class="form-row">\n <label>Subscribe to mailing list:</label>\n' ) if subscribe_checked: __M_writer(u' ') subscribe_check_box.checked = True __M_writer(u'\n') __M_writer(u' ') __M_writer(unicode(subscribe_check_box.get_html())) __M_writer( u'\n <p>See <a href="http://galaxyproject.org/wiki/Mailing%20Lists" target="_blank">\n all Galaxy project mailing lists</a>.</p>\n </div>\n' ) __M_writer( u' <div id="for_bears">\n If you see this, please leave following field blank.\n <input type="text" name="bear_field" size="1" value=""/>\n </div>\n <div class="form-row">\n <input type="submit" id="send" name="create_user_button" value="Submit"/>\n </div>\n </form>\n' ) if registration_warning_message: __M_writer( u' <div class="alert alert-danger" style="margin: 30px 12px 12px 12px;">\n ' ) __M_writer(unicode(registration_warning_message)) __M_writer(u'\n </div>\n') __M_writer(u' </div>\n\n') return '' finally: context.caller_stack._pop_frame()
def render_body(context,**pageargs): context.caller_stack._push_frame() try: __M_locals = __M_dict_builtin(pageargs=pageargs) _import_ns = {} _mako_get_namespace(context, '__anon_0x15b7f310')._populate(_import_ns, [u'render_msg']) status = _import_ns.get('status', context.get('status', UNDEFINED)) render_msg = _import_ns.get('render_msg', context.get('render_msg', UNDEFINED)) name = _import_ns.get('name', context.get('name', UNDEFINED)) in_users = _import_ns.get('in_users', context.get('in_users', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) def render_select(name,options): return render_render_select(context.locals_(__M_locals),name,options) create_group_for_role_checked = _import_ns.get('create_group_for_role_checked', context.get('create_group_for_role_checked', UNDEFINED)) out_groups = _import_ns.get('out_groups', context.get('out_groups', UNDEFINED)) in_groups = _import_ns.get('in_groups', context.get('in_groups', UNDEFINED)) out_users = _import_ns.get('out_users', context.get('out_users', UNDEFINED)) message = _import_ns.get('message', context.get('message', UNDEFINED)) description = _import_ns.get('description', context.get('description', UNDEFINED)) __M_writer = context.writer() # SOURCE LINE 1 __M_writer(u'\n') # SOURCE LINE 2 __M_writer(u'\n\n') # SOURCE LINE 11 __M_writer(u'\n\n') # SOURCE LINE 19 __M_writer(u'\n\n<script type="text/javascript">\n $().ready(function() { \n $(\'#groups_add_button\').click(function() {\n return !$(\'#out_groups option:selected\').remove().appendTo(\'#in_groups\');\n });\n $(\'#groups_remove_button\').click(function() {\n return !$(\'#in_groups option:selected\').remove().appendTo(\'#out_groups\');\n });\n $(\'#users_add_button\').click(function() {\n return !$(\'#out_users option:selected\').remove().appendTo(\'#in_users\');\n });\n $(\'#users_remove_button\').click(function() {\n return !$(\'#in_users option:selected\').remove().appendTo(\'#out_users\');\n });\n $(\'form#associate_role_group_user\').submit(function() {\n $(\'#in_groups option\').each(function(i) {\n $(this).attr("selected", "selected");\n });\n $(\'#in_users option\').each(function(i) {\n $(this).attr("selected", "selected");\n });\n });\n //Temporary removal of select2 for inputs -- refactor this later.\n $(\'select\').select2("destroy");\n });\n</script>\n\n') # SOURCE LINE 48 from galaxy.web.form_builder import CheckboxField create_group_for_role_checkbox = CheckboxField( 'create_group_for_role' ) __M_locals_builtin_stored = __M_locals_builtin() __M_locals.update(__M_dict_builtin([(__M_key, __M_locals_builtin_stored[__M_key]) for __M_key in ['create_group_for_role_checkbox','CheckboxField'] if __M_key in __M_locals_builtin_stored])) # SOURCE LINE 51 __M_writer(u'\n\n') # SOURCE LINE 53 if message: # SOURCE LINE 54 __M_writer(u' ') __M_writer(unicode(render_msg( message, status ))) __M_writer(u'\n') pass # SOURCE LINE 56 __M_writer(u'\n<div class="toolForm">\n <div class="toolFormTitle">Create Role</div>\n <div class="toolFormBody">\n <form name="associate_role_group_user" id="associate_role_group_user" action="') # SOURCE LINE 60 __M_writer(unicode(h.url_for(controller='admin', action='create_role' ))) __M_writer(u'" method="post" >\n <div class="form-row">\n <label>Name:</label>\n <input name="name" type="textfield" value="') # SOURCE LINE 63 __M_writer(unicode(name)) __M_writer(u'" size=40"/>\n </div>\n <div class="form-row">\n <label>Description:</label>\n <input name="description" type="textfield" value="') # SOURCE LINE 67 __M_writer(unicode(description)) __M_writer(u'" size=40"/>\n </div>\n <div class="form-row">\n <div style="float: left; margin-right: 10px;">\n <label>Groups associated with new role</label>\n ') # SOURCE LINE 72 __M_writer(unicode(render_select( "in_groups", in_groups ))) __M_writer(u'<br/>\n <input type="submit" id="groups_remove_button" value=">>"/>\n </div>\n <div>\n <label>Groups not associated with new role</label>\n ') # SOURCE LINE 77 __M_writer(unicode(render_select( "out_groups", out_groups ))) __M_writer(u'<br/>\n <input type="submit" id="groups_add_button" value="<<"/>\n </div>\n </div>\n <div class="form-row">\n <div style="float: left; margin-right: 10px;">\n <label>Users associated with new role</label>\n ') # SOURCE LINE 84 __M_writer(unicode(render_select( "in_users", in_users ))) __M_writer(u'<br/>\n <input type="submit" id="users_remove_button" value=">>"/>\n </div>\n <div>\n <label>Users not associated with new role</label>\n ') # SOURCE LINE 89 __M_writer(unicode(render_select( "out_users", out_users ))) __M_writer(u'<br/>\n <input type="submit" id="users_add_button" value="<<"/>\n </div>\n </div>\n <div class="form-row">\n') # SOURCE LINE 94 if create_group_for_role_checked: # SOURCE LINE 95 __M_writer(u' ') create_group_for_role_checkbox.checked = True __M_locals_builtin_stored = __M_locals_builtin() __M_locals.update(__M_dict_builtin([(__M_key, __M_locals_builtin_stored[__M_key]) for __M_key in [] if __M_key in __M_locals_builtin_stored])) __M_writer(u'\n') pass # SOURCE LINE 97 __M_writer(u' ') __M_writer(unicode(create_group_for_role_checkbox.get_html())) __M_writer(u' Create a new group of the same name for this role\n </div>\n <div class="form-row">\n <input type="submit" name="create_role_button" value="Save"/>\n </div>\n </form>\n </div>\n</div>\n') return '' finally: context.caller_stack._pop_frame()
def render_render_registration_form(context, form_action=None): context.caller_stack._push_frame() try: _import_ns = {} _mako_get_namespace(context, '__anon_0x28802690')._populate( _import_ns, [u'render_msg']) username = _import_ns.get('username', context.get('username', UNDEFINED)) redirect = _import_ns.get('redirect', context.get('redirect', UNDEFINED)) user_type_form_definition = _import_ns.get( 'user_type_form_definition', context.get('user_type_form_definition', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) registration_warning_message = _import_ns.get( 'registration_warning_message', context.get('registration_warning_message', UNDEFINED)) len = _import_ns.get('len', context.get('len', UNDEFINED)) user_type_fd_id_select_field = _import_ns.get( 'user_type_fd_id_select_field', context.get('user_type_fd_id_select_field', UNDEFINED)) widgets = _import_ns.get('widgets', context.get('widgets', UNDEFINED)) subscribe_checked = _import_ns.get( 'subscribe_checked', context.get('subscribe_checked', UNDEFINED)) t = _import_ns.get('t', context.get('t', UNDEFINED)) cntrller = _import_ns.get('cntrller', context.get('cntrller', UNDEFINED)) trans = _import_ns.get('trans', context.get('trans', UNDEFINED)) email = _import_ns.get('email', context.get('email', UNDEFINED)) __M_writer = context.writer() # SOURCE LINE 31 __M_writer(u'\n\n ') # SOURCE LINE 33 if form_action is None: form_action = h.url_for(controller='user', action='create', cntrller=cntrller) from galaxy.web.form_builder import CheckboxField subscribe_check_box = CheckboxField('subscribe') # SOURCE LINE 38 __M_writer( u'\n\n<script type="text/javascript">\n\t$(document).ready(function() {\n\n\t\tfunction validateString(test_string, type) { \n\t\t\tvar mail_re = /^(([^<>()[\\]\\\\.,;:\\s@\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\"]+)*)|(\\".+\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\t\t\t//var mail_re_RFC822 = /^([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x22([^\\x0d\\x22\\x5c\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x22))*\\x40([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d)(\\x2e([^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+|\\x5b([^\\x0d\\x5b-\\x5d\\x80-\\xff]|\\x5c[\\x00-\\x7f])*\\x5d))*$/;\n\t\t\tvar username_re = /^[a-z0-9\\-]{3,255}$/;\n\t\t\tif (type === \'email\') {\n\t\t\t\treturn mail_re.test(test_string);\n\t\t\t} else if (type === \'username\'){\n\t\t\t\treturn username_re.test(test_string);\n\t\t\t}\n\t\t} \n\n\t\tfunction renderError(message) {\n\t\tif ($(".errormessage").length === 1) {\n\t\t\t$(".errormessage").html(message)\n\t\t} else {\n\t\t\tvar div = document.createElement("div");\n\t\t\tdiv.className = "errormessage";\n\t\t\tdiv.innerHTML = message;\n\t\t\tdocument.body.insertBefore(div, document.body.firstChild);\n\t\t\t}\n\t\t}\n\n\t\t$(\'#registration\').bind(\'submit\', function(e) {\n\t\t\t$(\'#send\').attr(\'disabled\', \'disabled\');\n \n // we need this value to detect submitting at backend\n\t\t\tvar hidden_input = \'<input type="hidden" id="create_user_button" name="create_user_button" value="Submit"/>\';\n\t\t\t$("#email_input").before(hidden_input);\n\n\t\t\tvar error_text_email= \'Please enter your valid email address\';\n\t\t\tvar error_text_email_long= \'Email cannot be more than 255 characters in length\';\n\t\t\tvar error_text_username_characters = \'Public name must contain only lowercase letters, numbers and "-". It also has to be shorter than 255 characters but longer than 3.\';\n\t\t\tvar error_text_password_short = \'Please use a password of at least 6 characters\';\n\t\t\tvar error_text_password_match = "Passwords don\'t match";\n\n\t\t var validForm = true;\n\t\t \n\t\t var email = $(\'#email_input\').val();\n\t\t var name = $(\'#name_input\').val();\n\t\t if (email.length > 255){ renderError(error_text_email_long); validForm = false;}\n\t\t else if (!validateString(email,"email")){ renderError(error_text_email); validForm = false;}\n\t\t else if (!($(\'#password_input\').val() === $(\'#password_check_input\').val())){ renderError(error_text_password_match); validForm = false;}\n\t\t else if ($(\'#password_input\').val().length < 6 ){ renderError(error_text_password_short); validForm = false;}\n\t\t else if (name && !(validateString(name,"username"))){ renderError(error_text_username_characters); validForm = false;}\n\n\t \t\tif (!validForm) { \n\t\t e.preventDefault();\n\t\t // reactivate the button if the form wasn\'t submitted\n\t\t $(\'#send\').removeAttr(\'disabled\');\n\t\t }\n\t\t\t});\n\t});\n\n</script>\n <div class="toolForm">\n <form name="registration" id="registration" action="' ) # SOURCE LINE 98 __M_writer(unicode(form_action)) __M_writer( u'" method="post" >\n <div class="toolFormTitle">Create account</div>\n <div class="form-row">\n <label>Email address:</label>\n <input id="email_input" type="text" name="email" value="' ) # SOURCE LINE 102 __M_writer(filters.html_escape(unicode(email))) __M_writer( u'" size="40"/>\n <input type="hidden" name="redirect" value="' ) # SOURCE LINE 103 __M_writer(filters.html_escape(unicode(redirect))) __M_writer( u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Password:</label>\n <input id="password_input" type="password" name="password" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Confirm password:</label>\n <input id="password_check_input" type="password" name="confirm" value="" size="40"/>\n </div>\n <div class="form-row">\n <label>Public name:</label>\n <input id="name_input" type="text" name="username" size="40" value="' ) # SOURCE LINE 115 __M_writer(filters.html_escape(unicode(username))) __M_writer(u'"/>\n') # SOURCE LINE 116 if t.webapp.name == 'galaxy': # SOURCE LINE 117 __M_writer( u' <div class="toolParamHelp" style="clear: both;">\n Your public name is an identifier that will be used to generate addresses for information\n you share publicly. Public names must be at least four characters in length and contain only lower-case\n letters, numbers, and the \'-\' character.\n </div>\n' ) # SOURCE LINE 122 else: # SOURCE LINE 123 __M_writer( u' <div class="toolParamHelp" style="clear: both;">\n Your public name provides a means of identifying you publicly within this tool shed. Public\n names must be at least four characters in length and contain only lower-case letters, numbers,\n and the \'-\' character. You cannot change your public name after you have created a repository\n in this tool shed.\n </div>\n' ) pass # SOURCE LINE 130 __M_writer(u' </div>\n') # SOURCE LINE 131 if trans.app.config.smtp_server: # SOURCE LINE 132 __M_writer( u' <div class="form-row">\n <label>Subscribe to mailing list:</label>\n' ) # SOURCE LINE 134 if subscribe_checked: # SOURCE LINE 135 __M_writer(u' ') subscribe_check_box.checked = True __M_writer(u'\n') pass # SOURCE LINE 137 __M_writer(u' ') __M_writer(unicode(subscribe_check_box.get_html())) __M_writer( u'\n <p>See <a href="http://galaxyproject.org/wiki/Mailing%20Lists" target="_blank">\n all Galaxy project mailing lists</a>.</p>\n </div>\n' ) pass # SOURCE LINE 142 if user_type_fd_id_select_field and len( user_type_fd_id_select_field.options) >= 1: # SOURCE LINE 143 __M_writer( u' <div class="form-row">\n <label>User type</label>\n ' ) # SOURCE LINE 145 __M_writer(unicode(user_type_fd_id_select_field.get_html())) __M_writer(u'\n </div>\n') pass # SOURCE LINE 148 if user_type_form_definition: # SOURCE LINE 149 for field in widgets: # SOURCE LINE 150 __M_writer( u' <div class="form-row">\n <label>' ) # SOURCE LINE 151 __M_writer(unicode(field['label'])) __M_writer(u'</label>\n ') # SOURCE LINE 152 __M_writer(unicode(field['widget'].get_html())) __M_writer( u'\n <div class="toolParamHelp" style="clear: both;">\n ' ) # SOURCE LINE 154 __M_writer(unicode(field['helptext'])) __M_writer( u'\n </div>\n <div style="clear: both"></div>\n </div>\n' ) pass # SOURCE LINE 159 if not user_type_fd_id_select_field: # SOURCE LINE 160 __M_writer( u' <input type="hidden" name="user_type_fd_id" value="' ) __M_writer( unicode( trans.security.encode_id( user_type_form_definition.id))) __M_writer(u'"/>\n') pass pass # SOURCE LINE 163 __M_writer( u' <div id="for_bears">\n If you see this, please leave following field blank. \n <input type="text" name="bear_field" size="1" value=""/>\n </div>\n <div class="form-row">\n <input type="submit" id="send" name="create_user_button" value="Submit"/>\n </div>\n </form>\n' ) # SOURCE LINE 171 if registration_warning_message: # SOURCE LINE 172 __M_writer( u' <div class="alert alert-danger" style="margin: 30px 12px 12px 12px;">\n ' ) # SOURCE LINE 173 __M_writer(unicode(registration_warning_message)) __M_writer(u' \n </div>\n') pass # SOURCE LINE 176 __M_writer(u' </div>\n\n') return '' finally: context.caller_stack._pop_frame()
def render_render_registration_form(context,form_action=None): context.caller_stack._push_frame() try: _import_ns = {} _mako_get_namespace(context, '__anon_0x6877ad0')._populate(_import_ns, [u'render_msg']) username = _import_ns.get('username', context.get('username', UNDEFINED)) trans = _import_ns.get('trans', context.get('trans', UNDEFINED)) user_type_form_definition = _import_ns.get('user_type_form_definition', context.get('user_type_form_definition', UNDEFINED)) confirm = _import_ns.get('confirm', context.get('confirm', UNDEFINED)) h = _import_ns.get('h', context.get('h', UNDEFINED)) user_type_fd_id_select_field = _import_ns.get('user_type_fd_id_select_field', context.get('user_type_fd_id_select_field', UNDEFINED)) widgets = _import_ns.get('widgets', context.get('widgets', UNDEFINED)) subscribe_checked = _import_ns.get('subscribe_checked', context.get('subscribe_checked', UNDEFINED)) referer = _import_ns.get('referer', context.get('referer', UNDEFINED)) cntrller = _import_ns.get('cntrller', context.get('cntrller', UNDEFINED)) webapp = _import_ns.get('webapp', context.get('webapp', UNDEFINED)) password = _import_ns.get('password', context.get('password', UNDEFINED)) email = _import_ns.get('email', context.get('email', UNDEFINED)) __M_writer = context.writer() # SOURCE LINE 24 __M_writer(u'\n\n ') # SOURCE LINE 26 if form_action is None: form_action = h.url_for( controller='user', action='create', cntrller=cntrller ) from galaxy.web.form_builder import CheckboxField subscribe_check_box = CheckboxField( 'subscribe' ) # SOURCE LINE 31 __M_writer(u'\n\n <div class="toolForm">\n <form name="registration" id="registration" action="') # SOURCE LINE 34 __M_writer(unicode(form_action)) __M_writer(u'" method="post" >\n <div class="toolFormTitle">Create account</div>\n <div class="form-row">\n <label>Email address:</label>\n <input type="text" name="email" value="') # SOURCE LINE 38 __M_writer(unicode(email)) __M_writer(u'" size="40"/>\n <input type="hidden" name="webapp" value="') # SOURCE LINE 39 __M_writer(unicode(webapp)) __M_writer(u'" size="40"/>\n <input type="hidden" name="referer" value="') # SOURCE LINE 40 __M_writer(unicode(referer)) __M_writer(u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Password:</label>\n <input type="password" name="password" value="') # SOURCE LINE 44 __M_writer(unicode(password)) __M_writer(u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Confirm password:</label>\n <input type="password" name="confirm" value="') # SOURCE LINE 48 __M_writer(unicode(confirm)) __M_writer(u'" size="40"/>\n </div>\n <div class="form-row">\n <label>Public name:</label>\n <input type="text" name="username" size="40" value="') # SOURCE LINE 52 __M_writer(unicode(username)) __M_writer(u'"/>\n <div class="toolParamHelp" style="clear: both;">\n Your public name is an identifier that will be used to generate addresses for information\n you share publicly. Public names must be at least four characters in length and contain only lower-case\n letters, numbers, and the \'-\' character.\n </div>\n </div>\n') # SOURCE LINE 59 if trans.app.config.smtp_server: # SOURCE LINE 60 __M_writer(u' <div class="form-row">\n <label>Subscribe to mailing list:</label>\n') # SOURCE LINE 62 if subscribe_checked: # SOURCE LINE 63 __M_writer(u' ') subscribe_check_box.checked = True __M_writer(u'\n') # SOURCE LINE 65 __M_writer(u' ') __M_writer(unicode(subscribe_check_box.get_html())) __M_writer(u'\n </div>\n') # SOURCE LINE 68 if user_type_fd_id_select_field: # SOURCE LINE 69 __M_writer(u' <div class="form-row">\n <label>User type</label>\n ') # SOURCE LINE 71 __M_writer(unicode(user_type_fd_id_select_field.get_html())) __M_writer(u'\n </div>\n') # SOURCE LINE 74 if user_type_form_definition: # SOURCE LINE 75 for field in widgets: # SOURCE LINE 76 __M_writer(u' <div class="form-row">\n <label>') # SOURCE LINE 77 __M_writer(unicode(field['label'])) __M_writer(u'</label>\n ') # SOURCE LINE 78 __M_writer(unicode(field['widget'].get_html())) __M_writer(u'\n <div class="toolParamHelp" style="clear: both;">\n ') # SOURCE LINE 80 __M_writer(unicode(field['helptext'])) __M_writer(u'\n </div>\n <div style="clear: both"></div>\n </div>\n') # SOURCE LINE 85 if not user_type_fd_id_select_field: # SOURCE LINE 86 __M_writer(u' <input type="hidden" name="user_type_fd_id" value="') __M_writer(unicode(trans.security.encode_id( user_type_form_definition.id ))) __M_writer(u'"/>\n') # SOURCE LINE 89 __M_writer(u' <div class="form-row">\n <input type="submit" name="create_user_button" value="Submit"/>\n </div>\n </form>\n </div>\n\n') return '' finally: context.caller_stack._pop_frame()
def create_role(self, trans, **kwd): params = util.Params(kwd) message = util.restore_text(params.get('message', '')) status = params.get('status', 'done') name = util.restore_text(params.get('name', '')) description = util.restore_text(params.get('description', '')) in_users = util.listify(params.get('in_users', [])) out_users = util.listify(params.get('out_users', [])) in_groups = util.listify(params.get('in_groups', [])) out_groups = util.listify(params.get('out_groups', [])) create_group_for_role = params.get('create_group_for_role', '') create_group_for_role_checked = CheckboxField.is_checked( create_group_for_role) ok = True if params.get('create_role_button', False): if not name or not description: message = "Enter a valid name and a description." status = 'error' ok = False elif trans.sa_session.query(trans.app.model.Role).filter( trans.app.model.Role.table.c.name == name).first(): message = "Role names must be unique and a role with that name already exists, so choose another name." status = 'error' ok = False else: # Create the role role, num_in_groups = trans.app.security_agent.create_role( name, description, in_users, in_groups, create_group_for_role=create_group_for_role_checked) message = "Role '%s' has been created with %d associated users and %d associated groups. " \ % (role.name, len(in_users), num_in_groups) if create_group_for_role_checked: message += 'One of the groups associated with this role is the newly created group with the same name.' trans.response.send_redirect( web.url_for(controller='admin', action='roles', message=util.sanitize_text(message), status='done')) if ok: for user in trans.sa_session.query(trans.app.model.User) \ .filter(trans.app.model.User.table.c.deleted == false()) \ .order_by(trans.app.model.User.table.c.email): out_users.append((user.id, user.email)) for group in trans.sa_session.query(trans.app.model.Group) \ .filter(trans.app.model.Group.table.c.deleted == false()) \ .order_by(trans.app.model.Group.table.c.name): out_groups.append((group.id, group.name)) return trans.fill_template( '/webapps/tool_shed/admin/dataset_security/role/role_create.mako', name=name, description=description, in_users=in_users, out_users=out_users, in_groups=in_groups, out_groups=out_groups, create_group_for_role_checked=create_group_for_role_checked, message=message, status=status)
def create_group(self, trans, **kwd): params = util.Params(kwd) message = util.restore_text(params.get('message', '')) status = params.get('status', 'done') name = util.restore_text(params.get('name', '')) in_users = util.listify(params.get('in_users', [])) out_users = util.listify(params.get('out_users', [])) in_roles = util.listify(params.get('in_roles', [])) out_roles = util.listify(params.get('out_roles', [])) create_role_for_group = params.get('create_role_for_group', '') create_role_for_group_checked = CheckboxField.is_checked( create_role_for_group) ok = True if params.get('create_group_button', False): if not name: message = "Enter a valid name." status = 'error' ok = False elif trans.sa_session.query(trans.app.model.Group).filter( trans.app.model.Group.table.c.name == name).first(): message = "Group names must be unique and a group with that name already exists, so choose another name." status = 'error' ok = False else: # Create the group group = trans.app.model.Group(name=name) trans.sa_session.add(group) trans.sa_session.flush() # Create the UserRoleAssociations for user in [ trans.sa_session.query(trans.app.model.User).get(x) for x in in_users ]: uga = trans.app.model.UserGroupAssociation(user, group) trans.sa_session.add(uga) # Create the GroupRoleAssociations for role in [ trans.sa_session.query(trans.app.model.Role).get(x) for x in in_roles ]: gra = trans.app.model.GroupRoleAssociation(group, role) trans.sa_session.add(gra) if create_role_for_group_checked: # Create the role role = trans.app.model.Role( name=name, description='Role for group %s' % name) trans.sa_session.add(role) # Associate the role with the group gra = trans.model.GroupRoleAssociation(group, role) trans.sa_session.add(gra) num_in_roles = len(in_roles) + 1 else: num_in_roles = len(in_roles) trans.sa_session.flush() message = "Group '%s' has been created with %d associated users and %d associated roles. " \ % (group.name, len(in_users), num_in_roles) if create_role_for_group_checked: message += 'One of the roles associated with this group is the newly created role with the same name.' trans.response.send_redirect( web.url_for(controller='admin', action='groups', message=util.sanitize_text(message), status='done')) if ok: for user in trans.sa_session.query(trans.app.model.User) \ .filter(trans.app.model.User.table.c.deleted == false()) \ .order_by(trans.app.model.User.table.c.email): out_users.append((user.id, user.email)) for role in trans.sa_session.query(trans.app.model.Role) \ .filter(trans.app.model.Role.table.c.deleted == false()) \ .order_by(trans.app.model.Role.table.c.name): out_roles.append((role.id, role.name)) return trans.fill_template( '/webapps/tool_shed/admin/dataset_security/group/group_create.mako', name=name, in_users=in_users, out_users=out_users, in_roles=in_roles, out_roles=out_roles, create_role_for_group_checked=create_role_for_group_checked, message=message, status=status)
def create_group(self, trans, **kwd): params = util.Params(kwd) message = util.restore_text(params.get('message', '')) status = params.get('status', 'done') name = util.restore_text(params.get('name', '')) in_users = util.listify(params.get('in_users', [])) out_users = util.listify(params.get('out_users', [])) in_roles = util.listify(params.get('in_roles', [])) out_roles = util.listify(params.get('out_roles', [])) create_role_for_group = params.get('create_role_for_group', '') create_role_for_group_checked = CheckboxField.is_checked(create_role_for_group) ok = True if params.get('create_group_button', False): if not name: message = "Enter a valid name." status = 'error' ok = False elif trans.sa_session.query(trans.app.model.Group).filter(trans.app.model.Group.table.c.name == name).first(): message = "Group names must be unique and a group with that name already exists, so choose another name." status = 'error' ok = False else: # Create the group group = trans.app.model.Group(name=name) trans.sa_session.add(group) trans.sa_session.flush() # Create the UserRoleAssociations for user in [trans.sa_session.query(trans.app.model.User).get(x) for x in in_users]: uga = trans.app.model.UserGroupAssociation(user, group) trans.sa_session.add(uga) # Create the GroupRoleAssociations for role in [trans.sa_session.query(trans.app.model.Role).get(x) for x in in_roles]: gra = trans.app.model.GroupRoleAssociation(group, role) trans.sa_session.add(gra) if create_role_for_group_checked: # Create the role role = trans.app.model.Role(name=name, description='Role for group %s' % name) trans.sa_session.add(role) # Associate the role with the group gra = trans.model.GroupRoleAssociation(group, role) trans.sa_session.add(gra) num_in_roles = len(in_roles) + 1 else: num_in_roles = len(in_roles) trans.sa_session.flush() message = "Group '%s' has been created with %d associated users and %d associated roles. " \ % (group.name, len(in_users), num_in_roles) if create_role_for_group_checked: message += 'One of the roles associated with this group is the newly created role with the same name.' trans.response.send_redirect(web.url_for(controller='admin', action='groups', message=util.sanitize_text(message), status='done')) if ok: for user in trans.sa_session.query(trans.app.model.User) \ .filter(trans.app.model.User.table.c.deleted == false()) \ .order_by(trans.app.model.User.table.c.email): out_users.append((user.id, user.email)) for role in trans.sa_session.query(trans.app.model.Role) \ .filter(trans.app.model.Role.table.c.deleted == false()) \ .order_by(trans.app.model.Role.table.c.name): out_roles.append((role.id, role.name)) return trans.fill_template('/webapps/tool_shed/admin/dataset_security/group/group_create.mako', name=name, in_users=in_users, out_users=out_users, in_roles=in_roles, out_roles=out_roles, create_role_for_group_checked=create_role_for_group_checked, message=message, status=status)