[GSoC Proposal] Python scripting and reporting project

Rohan Kulkarni kulkarni.rohan.p at gmail.com
Wed Apr 6 12:30:29 EDT 2011


Hello,

I have drafted a proposal for the above mentioned project.

I have come up with this proposal based on what I could research and 
infer. There may be shortcomings in the content, its my humble request 
to comment on this for further improvement.

Initially, I have listed down the goals of the project which involve 
steps needed to integrate python scripting and some functionalities that 
I want to add to the current prototype. Below that, I have described in 
detail about each point, what exactly I aim to achieve.

Goals:

1] Develop python scripts in gnucash to provide a python framework.
    To achieve the above goal, my aim is to focus on and enhance the 
current reporting system
2] Export the report-system, which defines modules that provide 
functionalities for report
     generation, to python
3] Take up the business reports section, enable all the reports in this 
section to be generated by
     python scripts
4] Enable the customer information in this section to be imported/exported
5] Take up the standard reports section, export them to python
6] Enhance the budget generating system, add more graphical reports
7] Develop more ideas to utilise the powerful python scripting to 
enhance the reporting system.

Detailed description:

-:- The aim of this project is to develop a python framework for gnucash 
which currently uses uncommon scheme scripting.
      A python scripting framework will enable a large set of 
developers, well versed with python than with scheme to enhance or to 
alter the system as per their requirements. Also migrating to python 
will provide a large set of capable functionalities for gnucash.
      Major part of the scripting work is in the reporting section. My 
goal is to provide a python framework by exporting major parts of it to 
python. This framework will be useful for development of the whole 
report generating system to gradually integrate with python.

-:- The initial goal is migrate the report-system to python. This will 
define modules that will provide interface for all the report generation 
scripts.
      This will involve writing python scripts for report tables, 
bar-graphs, pie-charts, style-sheets and other related formats. The vast 
python module library will enable the reporting to include wide range of 
features. These scripts will provide functions that will be used by the 
report generating scripts to display report data as desired.
      Once this goal is achieved a python framework for writing report 
scripts in will be ready. All the reporting scripts can use the 
functionalities provided by this framework to create data and graphical 
reports.

   * Once this report-system is ported to python, test it thoroughly for 
proper loading and working of modules.

-:- The next goal will be to export the business scripts. It will 
involve writing python scripts, using the python defined functions in 
report-system to generate reports. It will enable business reports, 
customer, tax-invoices and related reports to work with the python 
modules. Here a sub goal is to enable the feature of importing/exporting 
customer information. I.e. to provide a functionality to import/export 
customer information in csv format. It will enable users to migrate 
their customer data from other sources(thunderbird/google contacts etc.) 
to gnucash and vice-versa.

   * Test this section for proper functioning.

-:- The next goal will be to take up the standard scripts. Though the 
aim is to migrate all of it to python, initial focus will be on the 
budget part. Here a sub goal is to enhance the budget reporting. Aim is 
to add more graphical features to display budget reports. The current 
budget summary displays simple data, budget values and actual values, 
here the idea is to add horizontal bar-graphs to display them. I.e. 
display bar-graphs of budgets of individual accounts along with the 
bar-graphs of actual values. This will graphically give the user an idea 
of where and by how much margin the budget and actual values vary. After 
this, depending on the amount of time available, rest of the reports 
will be migrated.

   * Test this section for proper functioning.

-:- During the development of python scripting, always, aim will be to 
make use of the vast python library for enhancing gnucash 
functionalities with the python framework.

Deliverables:

1] A proper tested and working report-system which will facilitate 
python framework for report generation.
2] A proper tested and working business report generation system.
3] A functionality of importing/exporting customer data in the business 
report system.
4] A proper tested and working standard report generation system, which 
will have an enhanced budget reporting.

Timeline:

-:- The initial phase will be to get familiar with the report-system. 
Understand the module definition/initialisation for the report 
infrastructure. Discuss about how to get started with development of code.

-:- With the understanding of the report-system, develop the required 
modules in python to provide the framework. This will involve using the 
python plotting modules for displaying graphs and charts. Completing 
this stage will be a major part of the project.

-:- The next goal of business report scripting will involve the defined 
modules in the report-system to generate reports.

-:- The sub part of importing/exporting customer data will involve the 
python libraries for cvs formatting. This will complete almost 2/3rd of 
the project.

-:- In the next part, first thing will be enhancing the budget reporting 
with the described bar-graphs support. Later, the migrating of rest or 
the scripts will start. Depending on available time the individual 
reports will be migrated.

-:- The development part finishes at this point. The testing and 
documenting the scripts will go hand in hand with development. So extra 
time will not be consumed at this point for documenting the code. Just a 
final brushing up of the documentation and final testing of codes will 
be done.

Current state:

I have built and tested the gnucash code latest revision from the SVN by 
enabling python. I have run the example python scripts present. 
Currently getting comfortable with the python console and the reporting 
scheme files. Also going through the various python modules 
availablethat are required for developing the necessary scripts. Also 
thinking of new ideas that can be introduced as features using the 
python scripts. I am very exited and interested to get involved in this 
project and to contribute to this open source community.

Thank you for reading.

Regards,
Rohan Kulkarni
IM, GTalk: kulkarni.rohan.p at gmail.com
IRC Nick: ahknor/rohan_k


More information about the gnucash-devel mailing list