Hello,

Am 13.11.2014 um 03:05 schrieb John Ralls:
>> On Nov 12, 2014, at 3:56 PM, Christoph Holtermann <c.holterm...@gmx.de> 
>> wrote:
>>
>> Hello,
>>
>> for my part i answered some of the questions myself:
>>
>> Am 12.11.2014 um 18:46 schrieb Christoph Holtermann:
>>> Hello,
>>>
>>> so KVPs should be accessed by objects they belong to and not from the 
>>> outside.
>>> Some questions:
>>> * Is it legitimate to have KVP representation in Python at all or is this 
>>> low-level und
>>> should remain to the c-api ?
>> It is legitimate but use should be restricted. Maybe warning docs or putting 
>> them in a submodule
>> called low_level.
> In 2.6 and before KVP is part of the public API and is accessed directly from 
> all over the program. If you're working with 2.6 you have no alternative to 
> using KVP directly if you need access to some items stored there because the 
> classes that the KVP is associated with have no code that manipulates those 
> KVP items.
>
> In master, KVP is a private implementation detail. The KVP accesses outside 
> of src/engine have been assigned GObject Properties on their associated 
> objects and should be accessed that way (except for one: I discovered a KVP 
> access done in Scheme that had escaped my notice and which is still on the 
> loose). Since the API is going to change rather a lot as we convert to C++ 
> you probably want to ignore all of that and stick with the 2.6 API until we 
> start the 2.7 releases.
>
>>> * The information that I'm interested in is the company data for invoices. 
>>> As far as
>>> I' ve seen there is just KVP access to that.
>>> * It seems to me that there should be an object Company that is structured 
>>> similar
>>> to Customer and has an assigned object Address identical to Customer.
>>> * When only the object should be able to access KVP, who is this object for 
>>> the
>>> company address ? At the moment it's book, I guess.
>>> * I could create a python object Company and add getter functions that 
>>> access the
>>> KVPs. But it seems better to me to not introduce objects in python that do 
>>> not exist
>>> in c.
>>> * On the other hand it can still be changed afterwards if an object is 
>>> introduced in
>>> c.
>> I decide to create an object Company.
>> https://github.com/c-holtermann/gnucash/blob/master/src/optional/python-bindings/example_scripts/gncCompany.py
>>
>> This I can easily be put to jinja in my invoice_export script.
>> I'm quite happy to be able to submit all the information by this simple call:
>> output = template.render(invoice=invoice, locale=locale, 
>> company=Company(book))
>>
>> I posted a pull request for the jinja2 approach. The inclusion of access to 
>> the Company
>> data remains head of my development fork:
>> https://github.com/c-holtermann/gnucash
>>
>> Maybe you can have a look and it and we can come to an agreement if the 
>> Company
>> and KVP approach is adequate or how it can be improved.
>>
>> Further steps would be a closer integration into the GUI.
> To date our policy on the Python bindings is that they're for users to query 
> the GC database for their own use. We're don't accept Python extensions of 
> GnuCash into GnuCash itself and have no intention or interest in adding 
> Python interpreters to the Mac and Windows AIO bundles. I don't see any 
> reason to change that policy. I haven't yet looked at your pull request, but 
> if it conflicts with that policy you can do me a favor and withdraw it.
No. It's clean outside GnuCash's GUI. So no policy violation here ;-)
It's just some additions to the already existing script to export invoices to 
LaTeX using templating engine jinja2.
So I think there should be no problem with this.

The 2nd pull request will be to access the Company data for which KVP access is 
necessary at the moment.
>
> My intention for KVP is to make it a backend implementation detail for 
> storage only and completely invisible to the rest of the program. There are 
> quite a few chunks of KVP that don't fit very well with the objects they're 
> currently associated with. I expect that in the course of the C++ rewrite 
> we'll be creating new classes to deal with them. Company data is one of 
> those, the import account matching data is another, and there are more that 
> don't come immediately to mind.
I'll put these bits of information into the documentation of the KVP access. 
Especially the thing about the API to change in 2.7.
>
> Regards,
> John Ralls
>
>
>
regards,

Christoph Holtermann

-- 
--- Nachricht gesendet von C. Holtermann ---
-                                          -
-  Verschlüsselte Nachrichten können über  -
- den öffentlichen Schlüssel auf folgendem -
- Keyserver an mich gesendet werden:       -
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x4DD9CF0482B0620B



_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to