2014-11-06 71 views
1

有谁有如何创建一个工作示例和更新通过Pootle的Tastypie基于REST API一个Pootle项目及其模板字符串?我真的很想看到一个简单而优雅的方法,例如,Slumber创建并通过REST API更新Pootle项目,沉睡

我的情况:我想从我的Web应用程序中创建多个Pootle项目。您可以将每个这样的项目视为对应于Web服务中文章集合中的一篇文章。对于这些项目,我需要能够

  1. 与提取(模板)字符串(通过API)的名单最初创建它,
  2. 通过Pootle的Web界面提供实际的翻译(人, [问题]),
  3. 检索翻译,理想地作为PO通过API文件,
  4. 更新所述一组可翻译字符串的(通过API),以使得人可以执行多个翻译。

我读过Pootle的GlossaryAPI definitionits API usage notesTastypie documentationSlumber documentation,但觉得有我缺少的一部分。例如,Tastypie提供了很好的选项来指定请求URL中的过滤参数,但是我感觉我必须检索整个项目列表才能在应用程序中搜索正确的项目,这让我想知道其他人如何使用API 。

下面的代码正确地创建了一个新项目:

#!/usr/bin/env python 
# -*- coding: UTF-8 -*- 

import slumber 

api = slumber.API('http://localhost:8000/api/v1/', auth=('admin', 'admin')) 

project_data = { 
    'code': 'test01', 
    'fullname': 'Test #01', 
    'description': 'Another test.', 
    'source_language': '/api/v1/languages/2/', 
    'translation_projects': [], 
} 

new_project = api.projects.post(project_data) 

而且new_project是指以下字典:

{'backlink': 'http://localhost:8000/projects/test01/', 
'checkstyle': 'standard', 
'code': 'test01', 
'description': '<p>Another test.</p>', 
'fullname': 'Test #01', 
'ignoredfiles': u'', 
'localfiletype': 'po', 
'resource_uri': '/api/v1/projects/10/', 
'source_language': '/api/v1/languages/2/', 
'translation_projects': [], 
'treestyle': 'auto'} 

鉴于我留着,例如,用于以后code值。什么是检索的最有效的方式项目的id(这是10,从resource_uri)?我想要的原因是为了以后的要求,例如:

api.projects(10).get() 

回答

1

您是否签出Curling?它是一个封装Slumber的库,专门针对Django Tastypie API。它提供了诸如by_url()之类的方法,将诸如/generic/transaction/8/之类的URL转换为generic.transaction(8)

+1

看起来很有用。我会考虑,但对冰壶的要求乍一看后,它似乎需要非常多的客户端库,其中包括Django的本身和PyJWT Mozilla的,而这又需要M2Crypto其生成过程取决于痛饮。 – 2014-11-07 08:01:54

+0

而且,即使'by_url()'看起来不错,睡眠已经支持的语法'api.get( '/ API/V1 /项目/ 10 /')。得到()',这在我上面的例子将对应于' api.get(NEW_PROJECT [ 'resource_uri'])。得到()'。 – 2014-11-07 08:08:53

+0

其实,我现在已经发现,睡眠API对象接受任何属性的名称,所以即使'api.by_uri( '/ API/V1 /项目/ 10 /')。获得()'作品。 ;) – 2014-11-07 09:25:44