Collmex导入/导出API的Python绑定
项目描述
简介
Collmex是一个针对(小型)公司的在线ERP系统,侧重于简单会计。<http://www.collmex.de>(注意:Collmex总部位于德国,但似乎支持英语。不过,你可能会遇到德语文本。)
此包旨在提供对Collmex API的Python绑定。它包括事务管理,以便与ZODB或其他可以与< cite>transaction cite>包集成的数据库集成。
凭证
要初始化与collmex服务器的连接,需要登录凭证。这些凭证可以在创建gocept.collmex.collmex.Collmex对象时明确给出,或者通过名为collmex.ini的ini文件。该ini文件必须位于项目目录或其父目录中,例如,您可以将collmex.ini放置在您的家目录中,以使用这些凭证为所有项目。ini文件必须包含用于生产的[credentials]部分以及用于测试目的的[test-credentials]部分。每个部分都必须包含以下选项:customer_id、company_id、username和password。可以使用collmex.ini-example文件作为模板。
示例
[credentials] customer_id = 42555 company_id = 1 username = realuser password = realpassword [test-credentials] customer_id = 41222 company_id = 1 username = testuser password = testpassword
Collmex API
Collmex提供了一个基于POST和CSV的API,这些API被封装在一个提供各种CSV记录类型方法的实用工具中。API文档可在http://www.collmex.de/cgi-bin/cgi.exe?1005,1,help,api中找到。
collmex对象
collmex对象是访问collmex的中心位置。在Zope 3术语中,它是一个全局实用工具
>>> import os >>> import gocept.collmex.collmex >>> os.environ['collmex_credential_section'] = 'test-credentials' >>> collmex = gocept.collmex.collmex.Collmex()
飞行前清理
首先,我们需要清理Collmex环境
>>> import gocept.collmex.testing >>> gocept.collmex.testing.cleanup_collmex()
交易集成
gocept.collmex支持事务集成。所有修改调用都在事务提交之前被缓冲。XXX解释更多。
>>> import transaction
客户:create_customer 和 get_customers
>>> customer = gocept.collmex.model.Customer() >>> customer['Kundennummer'] = 10000 >>> customer['Firma'] = 'Testkunden' >>> collmex.create(customer) >>> transaction.commit()
可以使用get_customers方法列出客户
>>> customers = collmex.get_customers() >>> customers [<gocept.collmex.model.Customer object at 0x...>, <gocept.collmex.model.Customer object at 0x...>] >>> len(customers) 2
第一个客户是通用的一个
>>> customer = customers[0] >>> customer['Satzart'] 'CMXKND' >>> customer['Kundennummer'] '9999' >>> customer['Firma'] 'Allgemeiner Geschäftspartner'
第二个客户是在测试设置期间创建的
>>> customer = customers[1] >>> customer['Satzart'] 'CMXKND' >>> customer['Kundennummer'] '10000' >>> customer['Firma'] 'Testkunden'
产品:create_product 和 get_products
使用create_product方法创建产品
>>> product = gocept.collmex.model.Product() >>> product['Produktnummer'] = 'TEST' >>> product['Bezeichnung'] = 'Testprodukt' >>> product['Produktart'] = 1 # Dienstleistung >>> product['Basismengeneinheit'] = 'HR' >>> product['Verkaufs-Preis'] = 5 >>> collmex.create(product) >>> transaction.commit() >>> collmex.get_products()[0]['Bezeichnung'] 'Testprodukt'
客户协议
>>> cag = gocept.collmex.model.CustomerAgreement() >>> cag['Kunde Nr'] = '10000' >>> cag['Firma Nr'] = 1 >>> cag['Produktnummer'] = 'TEST' >>> cag['Gültig ab'] = '01.01.2000' >>> cag['Gültig bis'] = '31.12.9999' >>> cag['Preis'] = 7 >>> cag['Währung'] = "EUR" >>> collmex.create(cag) >>> transaction.commit() >>> cag_from_collmex = collmex.get_customer_agreements() >>> list(cag) ['CMXCAG', '1', '10000', 'TEST', '(NULL)', '01.01.2000', '31.12.9999', 7, 'EUR', '(NULL)']
发票:create_invoice 和 get_invoices
使用create_invoice方法创建发票
>>> import datetime >>> start_date = datetime.datetime.now() >>> item = gocept.collmex.model.InvoiceItem() >>> item['Kunden-Nr'] = '10000' >>> item['Rechnungsnummer'] = 100000 >>> item['Menge'] = 3 >>> item['Produktnummer'] = 'TEST' >>> item['Rechnungstext'] = 'item text \u2013 with non-ascii characters' >>> item['Positionstyp'] = 0 >>> collmex.create_invoice([item])
可以使用get_invoices方法再次查找发票。然而,如上所述,发票仅注册用于添加。目前查询不返回发票
>>> collmex.get_invoices(customer_id='10000', start_date=start_date) []
提交后,找到了发票
>>> transaction.commit() >>> collmex.get_invoices(customer_id='10000', ... start_date=start_date)[0]['Rechnungstext'] 'item text – with non-ascii characters'
活动
本节描述了活动(活动记录)的API
创建活动
要提交活动,需要一个项目和员工
>>> import datetime >>> import gocept.collmex.testing >>> gocept.collmex.testing.create_project('Testprojekt', collmex=collmex) >>> gocept.collmex.testing.create_employee(collmex) >>> act = gocept.collmex.model.Activity() >>> act['Projekt Nr'] = '1' # Testprojekt >>> act['Mitarbeiter Nr'] = '1' # Sebastian Wehrmann >>> act['Satz Nr'] = '1' # TEST >>> act['Beschreibung'] = 'allgemeine T\xe4tigkeit' >>> act['Datum'] = datetime.date(2012, 1, 23) >>> act['Von'] = datetime.time(8, 7) >>> act['Bis'] = datetime.time(14, 28) >>> act['Pausen'] = datetime.timedelta(hours=1, minutes=12) >>> collmex.create(act) >>> transaction.commit()
使用 get_activities 导出
get_activities返回活动对象。
>>> activities = collmex.get_activities() >>> activities[0]['Beschreibung'] 'allgemeine T\xe4tigkeit'
项目:get_projects
可以使用get_projects API导出项目。它为每个项目的每个项目集(Projektsatz)返回一个条目
>>> proj = collmex.get_projects() >>> len(proj) 2 >>> proj[0]['Projektnummer'] == proj[1]['Projektnummer'] True
>>> proj[0]['Satz'] '7,00' >>> proj[1]['Satz'] '9,65' >>> proj[0]['Inaktiv'] '0'
缓存
从Collmex查询的结果在事务持续期间进行缓存。
为了展示这一点,我们对执行实际HTTP通信的_post()方法进行了跟踪,以显示何时调用它
>>> original_post = collmex._post >>> def tracing_post(self, *args, **kw): ... print('cache miss') ... return original_post(*args, **kw) >>> collmex._post = tracing_post.__get__(collmex, type(collmex))
当然,在事务中第一次从Collmex检索时
>>> transaction.abort() >>> collmex.get_products()[0]['Bezeichnung'] cache miss 'Testprodukt'
但之后,值被缓存
>>> collmex.get_products()[0]['Bezeichnung'] 'Testprodukt'
当事务结束时,缓存被无效化
>>> transaction.commit() >>> collmex.get_products()[0]['Bezeichnung'] cache miss 'Testprodukt'
>>> collmex.get_products()[0]['Bezeichnung'] 'Testprodukt'
移除跟踪仪器
>>> collmex._post = original_post
更改
2.1.0 (2024-05-31)
更新发票项目到当前collmex字段名称。(#27)
添加客户协议(CMXCAG)
2.0.1 (2023-08-23)
将轮子标记为非通用。
2.0 (2023-08-23)
停止支持Python 2.7、3.5、3.6。
添加对Python 3.9、3.10、3.11的支持。
通过使用无效用户名进行测试来避免密码耗尽。
修复测试以使用更少的连接。
1.9 (2019-09-02)
停止支持Python 3.3和3.4。
添加对Python 3.6、3.7和3.8b4的支持。
将代码迁移到GitHub。
更新测试以使用新的Collmex URL。
1.8.3 (2018-03-16)
实现了CMXABO,仅适用于“collmex Verein”。
1.8.2 (2017-01-23)
实现了MITGLIED_GET作为get_members()和CMXMGD作为models.Member,两者仅适用于“collmex Verein”。
1.8.1 (2016-06-09)
扩展Project以通过API检索预算和汇总的工作。
1.8.0 (2016-01-27)
声明与Python 3.4的兼容性。
停止支持Python 3.2。
确保测试不会在测试账户上连续多次使用无效凭证。
如果在Collmex.browser_login期间Collmex网站返回错误,则引发ValueError。迄今为止,错误被隐藏,但以下操作失败。特别是这应该有助于发现无效凭证。
1.7.0 (2014-09-04)
如果存在,则使用由环境变量COLLMEX_INI中提供的路径给出的collmex.ini文件,否则从当前目录向上查找。
不要在我们的调试输出中记录密码。
1.6.0 (2014-08-18)
取消弃用方法Collmex.create_invoice,现在它将自动分配发票ID。
添加了模拟collmex连接,但只记录方法调用的工具gocept.collmex.testing.ConsoleDump。
1.5.1 (2013-12-09)
修复棕色袋发布1.5.0
1.5.0 (2013-12-09)
在Activity中添加了解析/计算日期、时间、休息和持续时间的功能。
1.4.4 (2013-09-25)
在创建gocept.collmex.collmex.Collmex时改进对无效凭证的检查。
在解析ini文件失败时提供更多详细信息。
1.4.3 (2013-09-24)
修复在创建gocept.collmex.collmex.Collmex时对无效凭证的检查。
1.4.2 (2013-09-23)
登录Collmex的凭证可以通过collmex.ini文件提供。
1.4.1 (2013-09-16)
测试活动的创建现在完全可定制。
1.4 (2013-09-13)
gocept.collmex现在与Python 3.2和Python 3.3兼容!
1.3 (2013-02-22)
实现活动API(#11954)。
1.2.1 (2012-03-09)
在collmex网站更改(包括表单元素的重命名)后修复gocept.collmex.collmex.Collmex.browser_login()。
1.2 (2012-02-21)
注意:此版本意外发布时没有包含1.1.1中的更改,但是发布本身包含1.1的更改,因此并非损坏。
在CMXPRJ(项目)上添加Inaktiv属性。
1.1.1 (2012-02-17)
纠正先前的棕色袋发布。
1.1 (2012-02-17)
从2012年2月9日起,不要遵守Collmex的robots.txt。:(
1.0 (2012-01-23)
强制使用Python 2.7。
添加了测试辅助程序get_collmex,用于从环境变量创建collmex对象。
将测试辅助程序collmex_login()更改为方法:gocept.collmex.collmex.Collmex.browser_login()。
修改了测试辅助程序create_activity的签名,因此它不再需要参数。
0.9 (2012-01-20)
添加了测试辅助程序create_activity。
0.8 (2012-01-20)
添加了检索活动的API(get_activities)。
更新测试和测试基础设施以反映Collmex的最近更改。
0.7 (2009-11-05)
添加了检索项目和创建活动的API。
0.6 (2009-02-16)
使模型对API更改具有鲁棒性,这样在记录变长时它们不会立即中断。
更新客户模型以适应当前API。
0.5.1 (2009-01-08)
修复多线程错误:每个线程都需要初始化线程局部数据。
0.5 (2008-12-19)
将Collmex返回的值转换为unicode。
在事务期间缓存结果。
0.4 (2008-12-11)
添加了get_products和create_product。
添加了create_customer。
现在,gocept.collmex.testing.cleanup_collmex()仅删除任何现有数据,它不会添加任何示例客户或产品,请使用API进行该操作。
0.3.1 (2008-12-02)
Python 2.5兼容性。
0.3 (2008-12-01)
上传数据时使用Windows-1252作为编码(以前为ISO-8859-1)。
修复了上传失败时的交易集成。
0.2 (2008-11-28)
对Collmex API更改的修改。
添加了 get_customers 以查询客户(API CUSTOMER_GET)。
0.1 (2008-10-14)
第一个版本。支持获取和存储发票。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
gocept.collmex-2.1.0.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 51686a8119ef9a9c9e9fc7b6b59347d743d550d9f64d0f6ed6b6041cc6c71098 |
|
MD5 | e341437788860a1246ae33c702e75cbb |
|
BLAKE2b-256 | c3261b67a2068e82864181a00592b1d8bc0d68aee73811c741bc0ad687f58e02 |
gocept.collmex-2.1.0-py3-none-any.whl 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | d5729301241bffcbc61f968ac080eb50b8daa59151b8dbf3a99010d41bb56676 |
|
MD5 | 26b38298fe451967ea167ecaf6602f97 |
|
BLAKE2b-256 | 1cc97501d7ce4ccb282c3479c9b659be46585c88f0e3e003120fb7b9481f99f6 |