金字塔拱

pyramid_upwork的Python项目详细描述


pyramid_upwork允许您的用户通过upwork进行授权 在你的pyramid项目中。

您可以在pypi上找到它作为pyramid_upwork。也不要忘记检查documentation

要求

pyramid-redis-sessions用于将会话存储在Redis数据库中,因此需要安装 Redis并将其配置为侦听端口127.0.0.1

其他软件包将自动安装:

pyramid
pyramid_redis_sessions
python-upwork

要激活jinja2渲染器,请安装:

pip install pyramid_jinja2

安装

使用pip安装:

pip install pyramid_upwork

或者使用easy_install

easy_install pyramid_upwork

您需要创建类型为WebUpwork API keys,并为生成的api密钥设置适当的权限。

用法

您可以查看pyramid_upwork_example应用程序或使用 下面的说明。

*.ini文件中包括以下设置:

[app:main]

...

# Redis session settings
redis.sessions.secret = FILL ME

# upwork settings
upwork.api.key = FILL ME
upwork.api.secret = FILL ME

然后在项目的__init__.py中定义以下函数:

def get_acl_group(user_uid, request):
    """Here goes your ACL logic."""
    # All authenticated users have ``view`` permission
    return 'view'

此函数应返回acl组principals的列表,如果用户 不允许有任何访问组。有关securitytutorial的信息,请参见棱锥体文档。

models.py

中定义rootfactory
class RootFactory(object):
    """This object sets the security for our application."""
    __acl__ = [
        (Allow, Authenticated, 'view'),
        (Deny, Authenticated, 'login'),
        (Allow, Everyone, 'login'),
    ]

    def __init__(self, request):
        pass

现在在配置注册表中注册get_acl_group()函数,使授权生效。输入您的主要方法:

def get_acl_group(request):
    return ('view',)

def main(global_config, **settings):
    """Main app configuration binding."""

    config = Configurator(settings=settings,
                          root_factory="myapp.models.RootFactory")

    # ACL authorization callback for pyramid-upwork
    config.registry.get_acl_group = get_acl_group

    # External includes
    config.include('pyramid_upwork')

    # Views and routing goes here
    # ...
    #
    config.add_view('myapp.views.MainPage',
                    renderer='templates/main.jinja2',
                    permission='view')

    return config.make_wsgi_app()

通过重写__init__.py中的资产,您可以提供自定义forbidden.jinja2模板:

# Override forbidden template                                                                                                                                                                   config.override_asset(
    to_override='pyramid_upwork:templates/forbidden.jinja2',
    override_with='myapp:templates/forbidden.jinja2')

请参阅pyramid_upwork/templates/forbidden.jinja2中的模板示例。

“注销”操作也是通过CSRF保护的POST请求完成的, 参见pyramid_upwork_example/templates/layout.jinja2中的“注销”对接示例。

联系人

这个项目是由西里尔·潘申(cyril panshine)制作的。非常欢迎错误报告和拉取请求!

1.1.6

odesk重新命名为upwork,现在使用python upwork库。

1.1.5

  • 由于odesk公共api的更改,我们现在需要从 client.hr.get_user_me()

1.1.4

  • 在会话中断和 未设置请求令牌和密钥。

1.1.3

  • 将名字和姓氏存储在会话中,以便在模板中进一步使用

1.1.2

  • 登录和注销操作通过POST执行,并具有保护 抵御CSRF攻击

1.1.1

  • 在调度期间修复BaseHandler遮挡AttributeError

1.1

  • 使用override_offset覆盖forbidden.jinja2模板。
  • 如果用户已通过身份验证,但未针对某些视图进行身份验证, 使用注销链接而不是重定向呈现forbidden页 避免重定向循环

1.0

  • 初始版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ApachePOI将excel文件导入postgreSQL表   java多线程从iText pdf提取文本   winapi Java和SetWindowDisplayAffinity   eclipse juno的java Websphere 6.1插件   java MPAndroidChart:为Y轴提供一些偏移   java中作为参数传递枚举类型的继承   java Gui jframe的工作原理与netbeans不同   使用Bouncy Castle和PDFBox在Java中验证PDF签名   优化缩小Java代码   java无法在安卓中从Firebase取回子数据   返回的java方法?我应该什么时候用?   java错误处理已完成,退出代码为1。与穿过阵列的for循环有关   多线程Java volatile是否阻止缓存或强制执行写缓存?   java Multi-collectItems如何提前终止并返回已收集的项目   java为什么不在服务(请求,响应)中直接调用processRequest(请求,响应)?   java如何从字符串生成int数组?   打印获取用户输入的值并在其他预选文本中显示。JAVA   未显示java DynamicAsper UTF8字符   java Eclipse RCP:不启动应用程序的命令行参数