예제 #1
0
        def action_execute(self, ids):
            from gengine.metadata import DBSession
            from gengine.app.model import t_tasks, t_taskexecutions
            from gengine.app.registries import get_task_registry
            tasks = DBSession.execute(
                t_tasks.select().where(t_tasks.c.id.in_(*ids))
            ).fetchall()

            for task in tasks:
                result = get_task_registry().execute(
                    name=task["task_name"],
                    config=task["config"]
                )
                logged = result.get("log", None)
                success = result.get("success", True)

                DBSession.bind.execute(
                    t_taskexecutions.insert().values({
                        'task_id': task["id"],
                        'planned_at': dt_now(),
                        'finished_at': dt_now(),
                        'log': logged,
                        'success': success
                    })
                )

            flash("Executed")
예제 #2
0
 def get_permissions(request):
     if not asbool(settings.get("enable_user_authentication", False)):
         return []
     from gengine.app.model import DBSession, t_auth_tokens, t_auth_users, t_auth_roles, t_auth_roles_permissions, t_auth_users_roles
     from sqlalchemy.sql import select
     j = t_auth_tokens.join(t_auth_users).join(t_auth_users_roles).join(t_auth_roles).join(t_auth_roles_permissions)
     q = select([t_auth_roles_permissions.c.name],from_obj=j).where(t_auth_tokens.c.token==request.headers.get("X-Auth-Token"))
     return [r["name"] for r in DBSession.execute(q).fetchall()]
예제 #3
0
    def get_permissions(request):
        if not asbool(settings.get("enable_user_authentication", False)):
            return [x[0] for x in yield_all_perms()]

        if not request.user:
            return []

        from gengine.app.model import DBSession, t_auth_tokens, t_auth_users, t_auth_roles, t_auth_roles_permissions, \
            t_auth_users_roles
        from sqlalchemy.sql import select
        j = t_auth_users_roles.join(t_auth_roles).join(t_auth_roles_permissions)
        q = select([t_auth_roles_permissions.c.name], from_obj=j).where(
            t_auth_users_roles.c.auth_user_id == request.user.id)
        rows = DBSession.execute(q).fetchall()
        return [r["name"] for r in rows]
예제 #4
0
 def get_user(request):
     if not asbool(settings.get("enable_user_authentication",False)):
         return None
     token = request.headers.get('X-Auth-Token')
     if token is not None:
         from gengine.app.model import DBSession, AuthUser, AuthToken
         tokenObj = DBSession.query(AuthToken).filter(AuthToken.token==token).first()
         user = None
         if tokenObj and tokenObj.valid_until<datetime.datetime.utcnow():
             tokenObj.extend()
         if tokenObj:
             user = tokenObj.user
         if not user:
             raise APIError(401, "invalid_token", "Invalid token provided.")
         if not user.active:
             raise APIError(404, "user_is_not_activated", "Your user is not activated.")
         return user
     return None