예제 #1
0
    def post_add(self):

        form = CreateUserForm(self.request.arguments)

        if form.validate():

            user = self.db2.query(User).filter_by(
                username=form.username.data).all()
            if user:
                form.username.errors.append(_('This username is occupied'))
            else:
                salt = md5(str(random.random())).hexdigest()[:12]
                hsh = encrypt_password(salt, form.password.data)
                enc_password = "******" % (salt, hsh)

                newuser = User(username=form.username.data,
                               password=enc_password)
                self.db2.add(newuser)
                self.db2.commit()
                # Create profile
                profile = UserProfile(newuser, email=form.email.data)
                self.db2.add(profile)
                self.db2.commit()

                url = self.application.reverse_url('admin:user')
                url += '?id=%s&action=view' % newuser.id
                return self.redirect(url)

        # Have a error
        self.render('admin/user/add.html', form=form)
예제 #2
0
    def post_add(self):

        form = CreateUserForm(self)

        if form.validate():

            user = self.db2.query(User).filter_by( username=form.username.data ).all()
            if user:
                form.username.errors.append( self.trans(_('This username is occupied')) )
            else:
                salt = md5(str(random.random())).hexdigest()[:12]
                hsh = encrypt_password(salt, form.password.data)
                enc_password = "******" % (salt, hsh)

                newuser = User( username = form.username.data,
                                password = enc_password )
                self.db2.add(newuser)
                self.db2.commit()
                # Create profile
                profile = UserProfile(newuser, email = form.email.data)
                self.db2.add(profile)
                self.db2.commit()

                url = self.application.reverse_url('admin:user')
                url += '?id=%s&action=view' % newuser.id
                return self.redirect( url )

        # Have a error
        self.render( 'admin/user/add.html', form = form )
예제 #3
0
    def post(self):

        form = RegistrationForm(self.request.arguments)

        if form.validate():

            user = self.db2.query(User).filter_by( username=form.username.data ).all()

            if user:
                form.username.errors.append( _('This username is occupied') )
            else:
                salt = md5(str(random.random())).hexdigest()[:12]
                hsh = encrypt_password(salt, form.password.data)
                enc_password = "******" % (salt, hsh)

                newuser = User( username = form.username.data,
                                password = enc_password )
                self.db2.add(newuser)
                self.db2.commit()
                # Create profile
                profile = UserProfile(newuser, email = form.email.data)
                self.db2.add(profile)
                self.db2.commit()

                # send_mail()
                self.save_session(newuser.id)

                url = self.application.reverse_url('account:index')
                return self.redirect( url )

        # Have a error
        self.render( 'account/register.html', form = form )
예제 #4
0
    def get(self):

        applyer = self.db2.query(Applyer).filter_by(key=key).one()

        if applyer:

            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, password)
            enc_password = "******" % (salt, hsh)

            user = User( username = applyer.username,
                         password = enc_password )
예제 #5
0
    def post(self):

        form = RegistrationForm(self.request.arguments)

        if form.validate():

            user = self.db2.query(User).filter_by( username=form.username.data ).all()

            if user:
                form.username.errors.append( _('This username is occupied') )
            else:
                salt = md5(str(random.random())).hexdigest()[:12]
                hsh = encrypt_password(salt, form.password.data)
                enc_password = "******" % (salt, hsh)

                newuser = User( username = form.username.data,
                                password = enc_password )
                self.db2.add(newuser)
                self.db2.commit()
                # Create profile
                profile = UserProfile(newuser, email = form.email.data)
                # Add to default group
                from settings import cf
                if cf.has_option('registration', 'user_default_group_id'):
                    try:
                        DGID = int(cf.get('registration', 'user_default_group_id'))
                        G = self.db2.query(Group).get(DGID)
                        newuser.groups = [G]
                        self.db2.commit()
                    except:
                        pass

                self.db2.add(profile)
                self.db2.commit()

                # send_message
                self.send_message( newuser )

                # send_mail()

                self.save_session(newuser.id)

                return self.redirect( self.reverse_url('account:index') )

        # Have a error
        self.render( 'account/register.html', form = form )
예제 #6
0
    def post_reset_password(self):

        form = ResetPasswordForm(self)

        if form.validate():

            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, form.password.data)
            enc_password = "******" % (salt, hsh)

            self.user.password = enc_password
            self.db2.commit()

            url = self.reverse_url('admin:user')
            url += '?id=%s&action=view' % self.user.id
            return self.redirect( url )

        self.render( 'admin/user/reset_password.html', title = self.trans(_('Reset Password')),
                     form = form, U = self.user )
예제 #7
0
    def post(self):

        form = ResetPasswordForm(self.request.arguments)

        if form.validate():

            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, form.password.data)
            enc_password = "******" % (salt, hsh)

            user = self.db2.query(User).get( self.current_user.id )
            user.password = enc_password
            self.db2.commit()

            url = self.application.reverse_url('account:index')
            return self.redirect( url )

        self.render( 'account/reset_password.html', title = _('Reset Password'),
                     form = form )
예제 #8
0
    def post_reset_password(self):

        form = ResetPasswordForm(self.request.arguments)

        if form.validate():

            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, form.password.data)
            enc_password = "******" % (salt, hsh)

            self.user.password = enc_password
            self.db2.commit()

            url = self.reverse_url('admin:user')
            url += '?id=%s&action=view' % self.user.id
            return self.redirect(url)

        self.render('admin/user/reset_password.html',
                    title=_('Reset Password'),
                    form=form,
                    USER=self.user)
예제 #9
0
    def post(self):
        self.d['form'] = ResetPasswordForm( self.request.arguments )
        if self.d['form'].validate():

            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, self.d['form'].password.data)
            enc_password = "******" % (salt, hsh)

            self.d['USER'].password = enc_password
            self.db2.commit()

            # TODO: set reset password request completed
            applys = self.db2.query(UserResetpass).filter(
                UserResetpass.key == self.key ).all()
            for A in applys:
                A.completed = datetime.utcnow()
            self.db2.commit()

            self.save_session( self.d['USER'].id )

            url = self.reverse_url('account:index')
            return self.redirect( url )

        self.render( 'account/reset_password_complete.html', **self.d )
예제 #10
0
def default_value(dbsession):

    # LuoYunConfig
    from app.system.models import LuoYunConfig
    for k, v in settings.luoyun_system_config:
        c = dbsession.query(LuoYunConfig).filter_by(key=k).first()
        if c:
            print '[W] config key exist: %s' % k
        else:
            nc = LuoYunConfig(key=k, value=v)
            dbsession.add(nc)

    # Permission
    from app.account.models import Permission
    for codename, name in settings.default_permission:
        p = dbsession.query(Permission).filter_by(codename = codename).first()
        if p:
            print '[W] permission codename exist: %s' % codename
        else:
            p = Permission(codename = codename, name = name)
            dbsession.add(p)

    # Group
    from app.account.models import Group
    for name in settings.default_group:
        g = dbsession.query(Group).filter_by(name=name).first()
        if g:
            print '[W] group exist: %s' % name
        else:
            g = Group(name = name)
            dbsession.add(g)

    # User
    from app.account.models import User
    for username, password in settings.default_user:
        u = dbsession.query(User).filter_by(username=username).first()
        if u:
            print '[W] user exist: %s' % username
        else:
            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, password)
            enc_password = "******" % (salt, hsh)
            u = User(username = username, password = enc_password)
            dbsession.add(u)


    # User Group
    for groupname, username in settings.default_user_group:
        u = dbsession.query(User).filter_by(username=username).first()
        g = dbsession.query(Group).filter_by(name=groupname).first()
        if g not in u.groups:
            u.groups.append(g)

    # User Permission
    for username, codename in settings.default_user_permission:
        u = dbsession.query(User).filter_by(username=username).first()
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p not in u.permissions:
            u.permissions.append(p)

    # Group Permission
    for groupname, codename in settings.default_group_permission:
        g = dbsession.query(Group).filter_by(name=groupname).first()
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p not in g.permissions:
            g.permissions.append(p)


    # Appliance Catalog
    from app.appliance.models import ApplianceCatalog
    for name, summary in settings.default_appliance_catalog:
        c = dbsession.query(ApplianceCatalog).filter_by(name=name).first()
        if c:
            print '[W] appliance catalog exist: %s' % name
        else:
            c = ApplianceCatalog(name=name, summary=summary)
            dbsession.add(c)
            dbsession.commit()


    # Wiki Catalog
    from app.wiki.models import WikiCatalog
    for name, summary in settings.default_wiki_catalog:
        c = dbsession.query(WikiCatalog).filter_by(name=name).first()
        if c:
            print '[W] wiki catalog exist: %s' % name
        else:
            c = WikiCatalog(name=name, summary=summary)
            dbsession.add(c)
            dbsession.commit()
        


    dbsession.commit()
예제 #11
0
def default_value(dbsession):

    from app.account.models import Group

    if dbsession.query(Group).count() > 0:
        print "[W] db is init already, do not init now."
        return

    # Permission
    from app.account.models import Permission

    for codename, name in settings.default_permission:
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p:
            print "[W] permission codename exist: %s" % codename
        else:
            p = Permission(codename=codename, name=name)
            dbsession.add(p)

    # Group
    from app.account.models import Group

    for name in settings.default_group:
        g = dbsession.query(Group).filter_by(name=name).first()
        if g:
            print "[W] group exist: %s" % name
        else:
            # Group created defaultly is locked.
            g = Group(name=name, islocked=True)
            dbsession.add(g)

    # User
    from app.account.models import User

    for username, password in settings.default_user:
        u = dbsession.query(User).filter_by(username=username).first()
        if u:
            print "[W] user exist: %s" % username
        else:
            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, password)
            enc_password = "******" % (salt, hsh)
            u = User(username=username, password=enc_password)
            dbsession.add(u)
            dbsession.commit()

        if not u.profile:
            from app.account.models import UserProfile

            profile = UserProfile(u, email="%s@localhost" % u.username)
            dbsession.add(profile)

    # User Group
    for groupname, username in settings.default_user_group:
        u = dbsession.query(User).filter_by(username=username).first()
        g = dbsession.query(Group).filter_by(name=groupname).first()
        if u and (g not in u.groups):
            u.groups.append(g)

    # User Permission
    for username, codename in settings.default_user_permission:
        u = dbsession.query(User).filter_by(username=username).first()
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p not in u.permissions:
            u.permissions.append(p)

    # Group Permission
    for groupname, codename in settings.default_group_permission:
        g = dbsession.query(Group).filter_by(name=groupname).first()
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p not in g.permissions:
            g.permissions.append(p)

    # Appliance Catalog
    from app.appliance.models import ApplianceCatalog

    for name, summary in settings.default_appliance_catalog:
        c = dbsession.query(ApplianceCatalog).filter_by(name=name).first()
        if c:
            print "[W] appliance catalog exist: %s" % name
        else:
            c = ApplianceCatalog(name=name, summary=summary)
            dbsession.add(c)
            dbsession.commit()

    # Wiki Catalog
    from app.wiki.models import WikiCatalog

    for name, summary in settings.default_wiki_catalog:
        c = dbsession.query(WikiCatalog).filter_by(name=name).first()
        if c:
            print "[W] wiki catalog exist: %s" % name
        else:
            c = WikiCatalog(name=name, summary=summary)
            dbsession.add(c)
            dbsession.commit()

    dbsession.commit()
예제 #12
0
def default_value(dbsession):

    # LuoYunConfig
    from app.system.models import LuoYunConfig
    for k, v in settings.luoyun_system_config:
        c = dbsession.query(LuoYunConfig).filter_by(key=k).first()
        if c:
            print '[W] config key exist: %s' % k
        else:
            nc = LuoYunConfig(key=k, value=v)
            dbsession.add(nc)

    # Permission
    from app.account.models import Permission
    for codename, name in settings.default_permission:
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p:
            print '[W] permission codename exist: %s' % codename
        else:
            p = Permission(codename=codename, name=name)
            dbsession.add(p)

    # Group
    from app.account.models import Group
    for name in settings.default_group:
        g = dbsession.query(Group).filter_by(name=name).first()
        if g:
            print '[W] group exist: %s' % name
        else:
            # Group created defaultly is locked.
            g = Group(name=name, islocked=True)
            dbsession.add(g)

    # User
    from app.account.models import User
    for username, password in settings.default_user:
        u = dbsession.query(User).filter_by(username=username).first()
        if u:
            print '[W] user exist: %s' % username
        else:
            salt = md5(str(random.random())).hexdigest()[:12]
            hsh = encrypt_password(salt, password)
            enc_password = "******" % (salt, hsh)
            u = User(username=username, password=enc_password)
            dbsession.add(u)
            dbsession.commit()

        if not u.profile:
            from app.account.models import UserProfile
            profile = UserProfile(u, email='%s@localhost' % u.username)
            dbsession.add(profile)

    # User Group
    for groupname, username in settings.default_user_group:
        u = dbsession.query(User).filter_by(username=username).first()
        g = dbsession.query(Group).filter_by(name=groupname).first()
        if u and (g not in u.groups):
            u.groups.append(g)

    # User Permission
    for username, codename in settings.default_user_permission:
        u = dbsession.query(User).filter_by(username=username).first()
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p not in u.permissions:
            u.permissions.append(p)

    # Group Permission
    for groupname, codename in settings.default_group_permission:
        g = dbsession.query(Group).filter_by(name=groupname).first()
        p = dbsession.query(Permission).filter_by(codename=codename).first()
        if p not in g.permissions:
            g.permissions.append(p)

    # Appliance Catalog
    from app.appliance.models import ApplianceCatalog
    for name, summary in settings.default_appliance_catalog:
        c = dbsession.query(ApplianceCatalog).filter_by(name=name).first()
        if c:
            print '[W] appliance catalog exist: %s' % name
        else:
            c = ApplianceCatalog(name=name, summary=summary)
            dbsession.add(c)
            dbsession.commit()

    # Wiki Catalog
    from app.wiki.models import WikiCatalog
    for name, summary in settings.default_wiki_catalog:
        c = dbsession.query(WikiCatalog).filter_by(name=name).first()
        if c:
            print '[W] wiki catalog exist: %s' % name
        else:
            c = WikiCatalog(name=name, summary=summary)
            dbsession.add(c)
            dbsession.commit()

    dbsession.commit()