示例#1
0
class UserFormSchema(validators.Schema):
    user_id = validators.Int()
    user_name = validators.UnicodeString(not_empty=True, strip=True)
    display_name = validators.UnicodeString(not_empty=True, strip=True)
    disabled = validators.StringBool(if_empty=False)
    email_address = validators.Email(not_empty=True, strip=True)
    chained_validators = [beaker_validators.UniqueUserName('user_id',
                            'user_name')]
示例#2
0
 def validate_email_address(self, key, value):
     if not value:
         raise ValueError('Email address must not be empty')
     email_validator = validators.Email(not_empty=True)
     try:
         value = email_validator.to_python(value)
     except Invalid as e:
         raise ValueError('Invalid email address: %s' % e)
     return value
示例#3
0
class Preferences(RPCRoot):

    exposed = True

    # XMLRPC interface
    @expose()
    @identity.require(identity.not_anonymous())
    def remove_submission_delegate_by_name(self,
                                           delegate_name,
                                           service=u'XMLRPC'):
        user = identity.current.user
        try:
            submission_delegate = User.by_user_name(delegate_name)
        except NoResultFound:
            raise BX(_(u'%s is not a valid user name' % delegate_name))
        try:
            user.remove_submission_delegate(submission_delegate,
                                            service=service)
        except ValueError:
            raise BX(_(u'%s is not a submission delegate of %s' % \
                (delegate_name, user)))
        return delegate_name

    # XMLRPC Interface
    @expose()
    @identity.require(identity.not_anonymous())
    def add_submission_delegate_by_name(self,
                                        new_delegate_name,
                                        service=u'XMLRPC'):
        user = identity.current.user
        new_delegate = User.by_user_name(new_delegate_name)
        if not new_delegate:
            raise BX(_(u'%s is not a valid user' % new_delegate_name))
        user.add_submission_delegate(new_delegate, service)
        return new_delegate_name

    #XMLRPC method for updating user preferences
    @cherrypy.expose
    @identity.require(identity.not_anonymous())
    @validate(validators=dict(email_address=validators.Email()))
    def update(self, email_address=None, tg_errors=None):
        """
        Update user preferences

        :param email_address: email address
        :type email_address: string
        """
        if tg_errors:
            raise BeakerException(', '.join(
                str(item) for item in tg_errors.values()))
        if email_address:
            if email_address == identity.current.user.email_address:
                raise BeakerException(
                    "Email address not changed: new address is same as before")
            else:
                identity.current.user.email_address = email_address
示例#4
0
class CommentCaptchaForm(Form):
    template = "bodhi.templates.captchacommentform"
    submit_text = "Add Comment"
    fields = [
            TextArea(name='text', label='',
                     validator=validators.All(
                         validators.NotEmpty(),
                         validators.UnicodeString()),
                     rows=3, cols=40),
            HiddenField(name='title',
                        validator=validators.All(
                            validators.NotEmpty(),
                            validators.UnicodeString())),
            TextField(name='author', label='Author',
                      default='E-Mail Address',
                      validator=validators.Email()),
            CaptchaField(name='captcha', label='Enter the code shown')
    ]
示例#5
0
class Preferences(RPCRoot):

    exposed = True
    delete_link = DeleteLinkWidgetForm()
    beaker_password = widgets.PasswordField(name='password',
                                            label='Beaker Password')
    root_password = widgets.TextField(name='_root_password',
                                      label='Root Password')
    rootpw_expiry = widgets.TextField(name='rootpw_expiry',
                                      label='Root Password Expiry',
                                      attrs={'disabled': True})
    email = widgets.TextField(name='email_address',
                              label='Email Address',
                              validator=validators.Email())
    prefs_form = HorizontalForm(
        'UserPrefs',
        fields=[email, beaker_password, root_password, rootpw_expiry],
        action='save',
        submit_text=_(u'Change'),
    )

    sshkey = widgets.TextArea(
        name='ssh_pub_key',
        label='Public SSH Key',
        validator=beaker_validators.SSHPubKey(not_empty=True))
    ssh_key_add_form = InlineForm(
        'ssh_key_add',
        fields=[sshkey],
        action='ssh_key_add',
        submit_text=_(u'Add'),
    )

    rootpw_grid = BeakerDataGrid(fields=[
        BeakerDataGrid.Column('root_password',
                              title=_(u'Root Password'),
                              getter=lambda x: x.value),
        BeakerDataGrid.Column('effective_from',
                              title=_(u'Effective from'),
                              getter=lambda x: x.valid_from,
                              options=dict(datetime=True)),
    ])

    auto_users = AutoCompleteField(name='user',
                                   search_controller=url("../users/by_name"),
                                   search_param="input",
                                   result_name="matches")

    submission_delegate_form = InlineForm(
        'SubmissionDelegates',
        fields=[auto_users],
        action='save_data',
        submit_text=_(u'Add'),
    )
    remove_submission_delegate_link = DoAndConfirmForm()

    def show_submission_delegates(self, user):
        user_fields = [
            ('Submission Delegate', lambda x: x.display_name),
            ('Action', lambda x: self.remove_submission_delegate_link. \
                display({'delegate_id': x.user_id},
                action=url('remove_submission_delegate'), look='link',
                msg='Are you sure you want to remove %s as a submitter?' % x,
                action_text='Remove (-)')),]
        return BeakerDataGrid(fields=user_fields)

    @expose(template='bkr.server.templates.prefs')
    @identity.require(identity.not_anonymous())
    def index(self, *args, **kw):
        user = identity.current.user

        # Show all future root passwords, and the previous five
        rootpw = ConfigItem.by_name('root_password')
        rootpw_values = rootpw.values().filter(rootpw.value_class.valid_from > datetime.utcnow())\
                       .order_by(rootpw.value_class.valid_from.desc()).all()\
                      + rootpw.values().filter(rootpw.value_class.valid_from <= datetime.utcnow())\
                       .order_by(rootpw.value_class.valid_from.desc())[:5]

        return dict(
            title='User Prefs',
            delete_link=self.delete_link,
            prefs_form=self.prefs_form,
            ssh_key_form=self.ssh_key_add_form,
            widgets={},
            ssh_keys=user.sshpubkeys,
            value=user,
            rootpw=rootpw.current_value(),
            rootpw_grid=self.rootpw_grid,
            rootpw_values=rootpw_values,
            options=None,
            #Hack, to insert static content for submission_delegate
            remove_submission_delegate=self.remove_submission_delegate_link,
            submission_delegates_grid=self.show_submission_delegates(user),
            submission_delegate_form=self.submission_delegate_form)

    # XMLRPC interface
    @expose()
    @identity.require(identity.not_anonymous())
    def remove_submission_delegate_by_name(self,
                                           delegate_name,
                                           service=u'XMLRPC'):
        user = identity.current.user
        try:
            submission_delegate = User.by_user_name(delegate_name)
        except NoResultFound:
            raise BX(_(u'%s is not a valid user name' % delegate_name))
        try:
            user.remove_submission_delegate(submission_delegate,
                                            service=service)
        except ValueError:
            raise BX(_(u'%s is not a submission delegate of %s' % \
                (delegate_name, user)))
        return delegate_name

    # UI interface
    @expose()
    @identity.require(identity.not_anonymous())
    def remove_submission_delegate(self, delegate_id, service=u'WEBUI'):
        user = identity.current.user
        try:
            submission_delegate = User.by_id(delegate_id)
        except NoResultFound:
            flash(_(u'%s is not a valid user id' % delegate_id))
            redirect('.')
        user.remove_submission_delegate(submission_delegate, service=service)
        flash(_(u'%s removed as a submission delegate' % submission_delegate))
        redirect('.')

    # XMLRPC Interface
    @expose()
    @identity.require(identity.not_anonymous())
    def add_submission_delegate_by_name(self,
                                        new_delegate_name,
                                        service=u'XMLRPC'):
        user = identity.current.user
        new_delegate = User.by_user_name(new_delegate_name)
        if not new_delegate:
            raise BX(_(u'%s is not a valid user' % new_delegate_name))
        user.add_submission_delegate(new_delegate, service)
        return new_delegate_name

    # UI Interface
    @expose()
    @identity.require(identity.not_anonymous())
    def add_submission_delegate(self, **kwargs):
        user = identity.current.user
        new_delegate_name = kwargs['user']['text']
        new_delegate = User.by_user_name(new_delegate_name)
        if not new_delegate:
            flash(_(u'%s is not a valid user' % new_delegate_name))
            redirect('.')

        try:
            user.add_submission_delegate(new_delegate, u'WEBUI')
        except NoChangeException, e:
            flash(_(unicode(e)))
            redirect('.')

        flash(_(u'Added %s as a submission delegate' % new_delegate_name))
        redirect('.')
示例#6
0
        elif root_password and root_password != \
            identity.current.user.root_password:
            try:
                identity.current.user.root_password = root_password
                changes.append("Test host root password hash changed")
            except ValueError, msg:
                changes.append("Root password not changed: %s" % msg)

        if changes:
            flash(_(u', '.join(changes)))
        redirect('.')

    #XMLRPC method for updating user preferences
    @cherrypy.expose
    @identity.require(identity.not_anonymous())
    @validate(validators=dict(email_address=validators.Email()))
    def update(self, email_address=None, tg_errors=None):
        """
        Update user preferences

        :param email_address: email address
        :type email_address: string
        """
        if tg_errors:
            raise BeakerException(', '.join(
                str(item) for item in tg_errors.values()))
        if email_address:
            if email_address == identity.current.user.email_address:
                raise BeakerException(
                    "Email address not changed: new address is same as before")
            else:
示例#7
0
            if group not in owner.groups:
                raise BX(
                    _(u'User %s is not a member of group %s' %
                      (owner.user_name, group.group_name)))
        job_retention = xmljob.get_xml_attr('retention_tag', unicode, None)
        job_product = xmljob.get_xml_attr('product', unicode, None)
        tag, product = self._process_job_tag_product(
            retention_tag=job_retention, product=job_product)
        job = Job(whiteboard=unicode(xmljob.whiteboard),
                  ttasks=0,
                  owner=owner,
                  group=group,
                  submitter=submitter)
        job.product = product
        job.retention_tag = tag
        email_validator = validators.Email(not_empty=True)
        for addr in set(xmljob.iter_cc()):
            try:
                job.cc.append(email_validator.to_python(addr))
            except Invalid, e:
                raise BX(
                    _('Invalid e-mail address %r in <cc/>: %s') %
                    (addr, str(e)))
        for xmlrecipeSet in xmljob.iter_recipeSets():
            recipe_set = self._handle_recipe_set(
                xmlrecipeSet, owner, ignore_missing_tasks=ignore_missing_tasks)
            job.recipesets.append(recipe_set)
            job.ttasks += recipe_set.ttasks

        if not job.recipesets:
            raise BX(
示例#8
0
文件: group.py 项目: ujjwalwahi/fas
class GroupSendInvite(validators.Schema):
    groupname = KnownGroup
    target = validators.Email(not_empty=True, strip=True),
 class MyFields(widgets.WidgetsList):
     age = widgets.TextField(validator=validators.Int())
     email = widgets.TextArea(validator=validators.Email())
class MyRoot(RootController):

    def defaulterrorhandler(self, tg_source, tg_errors, tg_exceptions,
                            *args, **kw):
        return dict(title="Default error handler",
                    errors=_errors_to_str(tg_errors), args=args, kw=kw)

    def specialisederrorhandler(self, tg_source, tg_errors, *args, **kw):
        return dict(title="Specialised error handler",
                    errors=_errors_to_str(tg_errors), args=args, kw=kw)

    def defaulterror(self, bar=""):
        return dict(title="Default error provider")
    defaulterror = error_handler(defaulterrorhandler)(defaulterror)
    defaulterror = validate(validators={"bar": validators.StringBoolean()})(
                            defaulterror)
    defaulterror = expose()(defaulterror)

    def specialisederror(self, bar="", baz=""):
        return dict(title="Specialised error provider")
    specialisederror = error_handler(defaulterrorhandler)(
                                             specialisederror)
    specialisederror = error_handler(specialisederrorhandler,
                                     "'baz' in tg_errors")(specialisederror)
    specialisederror = validate(validators={
        "bar": validators.Int(not_empty=True),
        "baz": validators.Email()})(specialisederror)
    specialisederror = expose()(specialisederror)

    def exceptionerror(self):
        raise Exception("Exception 1")
    exceptionerror = exception_handler(defaulterrorhandler)(exceptionerror)
    exceptionerror = expose()(exceptionerror)

    def exceptionerror2(self):
        raise Exception("Exception 2")
    exceptionerror2 = exception_handler(exceptionerror2)(exceptionerror2)
    exceptionerror2 = expose()(exceptionerror2)

    def recursiveerror(self, tg_errors=None, bar=""):
        if tg_errors:
            return dict(title="Recursive error handler")
        else:
            return dict(title="Recursive error provider")
    recursiveerror = error_handler()(recursiveerror)
    recursiveerror = validate(validators={
        "bar": validators.Int(not_empty=True)})(recursiveerror)
    recursiveerror = expose()(recursiveerror)

    def impliciterror(self, tg_errors=None, bar=""):
        if tg_errors:
            return dict(title="Implicit error handler",
                        tg_errors=str(tg_errors))
        else:
            return dict(title="Implicit error provider")
    impliciterror = validate(validators={
        "bar": validators.Int(not_empty=True)})(impliciterror)
    impliciterror = expose()(impliciterror)

    def normalmethod(self):
        return dict(title="Normal method")
    normalmethod = expose()(normalmethod)

    def normalmethodcaller(self, bar=""):
        return dict(title="Normal method caller")
    normalmethodcaller = error_handler(normalmethod)(normalmethodcaller)
    normalmethodcaller = validate(validators={
        "bar": validators.StringBoolean()})(normalmethodcaller)
    normalmethodcaller = expose()(normalmethodcaller)

    def infiniteloop(self):
        try:
            self.exceptionerror2()
        except Exception, e:
            return dict(title=str(e))
        else:
示例#11
0
class BugzillaSave(validators.Schema):
    bugzilla_email = validators.Email(strip=True, max=128)