{"id":103,"date":"2010-03-27T13:18:29","date_gmt":"2010-03-27T17:18:29","guid":{"rendered":"http:\/\/dashdrum.com\/blog\/?p=103"},"modified":"2010-03-27T14:22:09","modified_gmt":"2010-03-27T18:22:09","slug":"reporting-in-django","status":"publish","type":"post","link":"https:\/\/dashdrum.com\/blog\/2010\/03\/reporting-in-django\/","title":{"rendered":"Reporting in Django"},"content":{"rendered":"<p>The Django application I&#8217;m developing has a reporting need: paper (PDF) output of reports, both 8 1\/2 X 11 and special forms (labels, name tags, etc.).  So, I&#8217;ve begun evaluating my reporting options.<\/p>\n<p>Unfortunately, I haven&#8217;t found very many methods to examine, probably because of my requirements:<\/p>\n<dl>\n<dt>Python based<\/dt>\n<dd>Since I&#8217;m using Python\/Django for the rest of the work, it would make sense to use Python for this component as well.  Other folks that may someday support the application will appreciate having a single skill set to maintain.<\/dd>\n<dt>Contained in the Application<\/dt>\n<dd>I&#8217;ve found at least one system that runs as a separate service on a server, but that is more complexity than I would like to introduce into a client&#8217;s technology stack. This application will appeal to small offices that likely don&#8217;t have strong tech support.  Adding a separate service (in this example, Java\/Tomcat) on top of Django, MySQL and Apache is more than many can do, and I certainly don&#8217;t want to get into the server admin business on their behalf.<\/dd>\n<dt>Open Source<\/dt>\n<dd>Another issue that the clients won&#8217;t want to deal with is licensing to third parties. I&#8217;m using all open source tools to build and run the application, and it wouldn&#8217;t make sense to require a potential customer to license something before they could use it.  Plus, would I have to become a reseller for the licensed software?<\/dd>\n<dt>Integrated with Django<\/dt>\n<dd>This is total &#8216;wish list&#8217; stuff, but wouldn&#8217;t it be neat to have an interface similar to the Django templating system where I could bring in data from a view into a report &#8216;template&#8217;?<\/dd>\n<\/dl>\n<p>Looking through Google searches, I&#8217;ve found that the terms &#8220;reports&#8221; and &#8220;reporting&#8221; can mean different things to different people.  Since I&#8217;m looking to generate paper, I have been looking at Geraldo, which uses the ReportLab library to generate PDF output.  This application looks promising, but is still a work in progress.  I&#8217;m finding that flexible formatting with variable length text is a difficult, and maybe impossible, thing to do.<\/p>\n<p>I&#8217;d like to hear from others on this subject.  Have you found a good package for reporting?  Are you developing one?  Please leave your thoughts in the comments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Django application I&#8217;m developing has a reporting need: paper (PDF) output of reports, both 8 1\/2 X 11 and special forms (labels, name tags, etc.). So, I&#8217;ve begun evaluating my reporting options. Unfortunately, I haven&#8217;t found very many methods to examine, probably because of my requirements: Python based Since I&#8217;m using Python\/Django for the &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/dashdrum.com\/blog\/2010\/03\/reporting-in-django\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Reporting in Django&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-103","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/posts\/103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/comments?post=103"}],"version-history":[{"count":15,"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/posts\/103\/revisions"}],"predecessor-version":[{"id":117,"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/posts\/103\/revisions\/117"}],"wp:attachment":[{"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/media?parent=103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/categories?post=103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dashdrum.com\/blog\/wp-json\/wp\/v2\/tags?post=103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}