2014-11-06 73 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