标签: tipfy

如何使用实验API将大文件写入Blobstore?

我陷入困境..我使用tipfy作为框架在scribd商店和blobstore上传文件.我的webform with action不是由blobstore.create_upload_url创建的(我只是使用url_for('myhandler')).我这样做是因为如果我使用blobstore处理程序解析了POST响应,我就不能使用普通的python-scribd api将文件上传到scribd store.现在我有工作的scribd saver:

class UploadScribdHandler(RequestHandler, BlobstoreUploadMixin):
    def post(self):
        uploaded_file = self.request.files.get('upload_file')
        fname = uploaded_file.filename.strip()
        try:
            self.post_to_scribd(uploaded_file, fname)
        except Exception, e:
            # ... get the exception message and do something with it
            msg = e.message
            # ...
        # reset the stream to zero (beginning) so the file can be read again
        uploaded_file.seek(0)
        #removed try-except to see debug info in browser window
        # Create the file

        file_name = files.blobstore.create(_blobinfo_uploaded_filename=fname)
        # Open the file and write to it
        with files.open(file_name, …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine scribd blobstore tipfy

11
推荐指数
2
解决办法
3680
查看次数

如何保护我在应用程序中进行的REST调用?

我有一个具有"私有"REST API的应用程序; 从我自己的网页进行Ajax调用时,我使用RESTful URL.但是,这是不安全的,如果他们知道URL模式,任何人都可以进行相同的调用.

保护这些电话的最佳(或标准)方法是什么?如果我打算在将来发布API,或者我将两个单独的策略混合在一起,是否值得看看OAuth之类的东西?

我正在使用Google App Engine for Python和Tipfy.

python rest google-app-engine restful-authentication tipfy

11
推荐指数
1
解决办法
3941
查看次数

谷歌应用引擎上的webapp,tipfy或django

你在谷歌应用引擎上使用哪一个?

你决定背后的原因是什么?

python django google-app-engine web-applications tipfy

10
推荐指数
3
解决办法
2201
查看次数

使用任何带有Tipfy的OpenID进行身份验证

我正在开发我的应用程序的身份验证部分,我遇到了使用OpenID编码身份验证的问题.

我查看了Tipfy示例代码,但似乎是在OpenID提供程序硬编码为google的假设下编写的.

我希望用户能够提供他们想要的任何OpenID(这不是重点吗?).

有没有人有任何示例代码显示用户使用用户提供的OpenID登录?

python openid google-app-engine tipfy

9
推荐指数
1
解决办法
773
查看次数

在我的python项目中使用自定义包

我现在正在python中做一些项目,我正在试图弄清楚如何使用我自己版本的现有开源软件包.

例如,我正在使用tipcy和zc.buildout,我已经添加了'paypal'包.不幸的是它没有我需要的功能,所以我在github上分叉并添加了该功能.我将向原始软件包维护者发送一个pull请求,但是他们是否接受我的添加,我想使用我的软件包版本并保持zc.buildout管理我的依赖项的便利性.我该怎么做呢?

我是否将我自己的库上传到PyPI并用我的名字加上前缀?这不会不必要地污染指数吗?

或者我应该制作和维护自己的索引和包装回购?我在哪里可以找到这种格式?是否违反OSS许可条款以使用相同名称的修改包托管我自己的仓库?(我宁愿不用新的命名空间修改项目中的每个文件)

我确定这个问题出现了很多,而不仅仅是python.我可以看到Maven和SBT也发生这种情况......当人们想要使用他们自己版本的流行软件包时,他们通常会做些什么?

python buildout pypi tipfy

5
推荐指数
1
解决办法
1017
查看次数

facebook auth问题与tipfy 1.0b

我试图模仿http://tipfy-auth.appspot.com示例中的登录页面(来源http://code.google.com/p/tipfy/source/browse/examples/auth/app/)没有成功.当用户被重定向回页面时,我似乎遇到了问题.当前请求流程如下:

LoginPage(LoginHandler) - > Facebook redirect(FacebookAuthHandler)302 - > Facebook.com - > Facebook redirect(FacebookAuthHandler)302 - > SignupPage(SignupHandler)302 - > LoginPage(LoginHandler).

这里的问题(据我所知)是从注册(应该是端点)到登录页面的最后302(http重定向).

经过一些激烈的日志记录(无法找到本地测试),似乎从facebook返回时会设置一个会话.会话FacebookAuthHandler在两个地方self.auth.session(dict)和self.session(a SecureCookieSession)中作为dict存储在请求handler()上,但在重定向到SignupPage之后self.auth.session是None.

从SignUpPage到LoginPage的重定向发生是因为SignupHandlerget方法有一个装饰器@login_required,self.auth.session用于确定是否应该在此处理或重定向reuquest.

那么为什么self.auth.session不能保留在请求之间而self.session是什么?self.auth.session每个请求都设置好吗?如何存储会话?如果它在数据库中,则数据存储区类型是否重要(主/从或高复制).

我正在挖掘源代码,但找不到任何有用的东西.

..fredrik

编辑

发表以下答案.

authentication session google-app-engine tipfy

5
推荐指数
1
解决办法
249
查看次数

Tipfy&Jinja:为每个页面创建一个注销URL

我有一个jinja模板,带有通常的样板链接,其中一个是"退出"链接.在呈现页面之前,必须使用Users.create_logout_url()生成此链接的URL.

我想避免生成此URL并将其添加到每个get/post处理程序的render_response中.我已经研究过替代品,但还没有找到一种功能性的方法来解决这个问题.

BaseRequestHandler

这似乎是最干净的方法,但我不确定如何去做.会不会是这样的

self.vars['logout_link'] = users.create_logout_url(self.request.path))
Run Code Online (Sandbox Code Playgroud)

..然后,在所有标准响应处理程序中:

return render_response('template.html', **vars)
Run Code Online (Sandbox Code Playgroud)

装饰

这似乎是另一种选择,虽然看起来有点凌乱.我想它可以以相同的方式工作(将logout链接分配给包装函数中的局部变量).

上下文处理?

我正在使用tipfy/jinja,据我所知,这似乎不支持这个.

有什么建议我应该进一步调查吗?

谢谢

python google-app-engine jinja2 tipfy

3
推荐指数
1
解决办法
617
查看次数

为什么Python会在非迭代类型的操作中给我一个"TypeError:类型'UserAgent'的参数不可迭代"?

我有一个BaseHandler类,它在我的AppEngine站点中继承了Tipfy RequestHandler.在其中,我为移动设备设置了一个"穷人"浏览器嗅探器,其中包含一个包含设备名称的类属性(元组).

在后续方法中,我遍历元组中的设备名称,并根据Request对象中的用户代理字符串检查它们.如果我得到匹配,我将名为"is_mobile"的实例属性设置为True.

但是,在那个方法中,Python给了我一个"TypeError:类型'UserAgent'的参数不可迭代"错误,我无法理解为什么,因为它所抱怨的行不是(据我所知)一个循环.

这是代码:

class BaseHandler(RequestHandler, AppEngineAuthMixin, AllSessionMixins):

    mobile_devices = ('Android', 'iPhone', 'iPod', 'Blackberry')

    ....

    def detect_mobile_devices(self):
        found_device = False

        for device in self.__class__.mobile_devices:
            if device in self.request.user_agent:
                found_device = True
                break

        self.is_mobile = found_device
Run Code Online (Sandbox Code Playgroud)

这是Python不喜欢的行:

File "/path/to/project/app/apps/remember_things/handlers.py", line 56, in detect_mobile_devices
if device in self.request.user_agent:
Run Code Online (Sandbox Code Playgroud)

python google-app-engine tipfy

1
推荐指数
1
解决办法
1236
查看次数