Changeset - c80955f199ec
[Not reviewed]
doc/build/html/.buildinfo
Show inline comments
 
# Sphinx build info version 1
 
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
 
config: b1e0a7a37d51c2c1ffe67d5d69a96004
 
config: 8b75ea2eddb26034f4ae6f4f86a1f854
 
tags: 645f666f9bcd5a90fca523b33c5a78b7
doc/build/html/README.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>The Accounting API &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    './',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="_static/jquery.js"></script>
 
    <script type="text/javascript" src="_static/underscore.js"></script>
 
    <script type="text/javascript" src="_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="index.html" />
 
    <link rel="next" title="accounting package" href="api/accounting.html" />
 
    <link rel="prev" title="Welcome to Accounting API’s documentation!" href="index.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="api/accounting.html" title="accounting package"
 
             accesskey="N">next</a> |</li>
 
        <li class="right" >
 
          <a href="index.html" title="Welcome to Accounting API’s documentation!"
 
             accesskey="P">previous</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <div class="section" id="the-accounting-api">
 
<h1>The Accounting API<a class="headerlink" href="#the-accounting-api" title="Permalink to this headline">¶</a></h1>
 
<div class="section" id="dependencies">
 
<h2>Dependencies<a class="headerlink" href="#dependencies" title="Permalink to this headline">¶</a></h2>
 
<ul class="simple">
 
<li>Python &gt;=3.3</li>
 
<li>ledger version 3 (I have not tried with version 2.x)</li>
 
<li>Python packages: Flask, etc. (install by running <tt class="docutils literal"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">-r</span>
 
<span class="pre">requirements.txt</span></tt>)</li>
 
</ul>
 
<div class="section" id="gtk-client-dependencies">
 
<h3>GTK Client Dependencies<a class="headerlink" href="#gtk-client-dependencies" title="Permalink to this headline">¶</a></h3>
 
<p>To run the GTK client you need to have <tt class="docutils literal"><span class="pre">gi.repository</span></tt> avaiable in the python
 
environment, this means that if you use virtualenv to install the dependencies
 
of accounting-api you need to set it up with the <tt class="docutils literal"><span class="pre">--system-site-packages</span></tt>
 
flag.</p>
 
</div>
 
</div>
 
<div class="section" id="installation-i-e-development-setup">
 
<h2>Installation (i.e. Development Setup)<a class="headerlink" href="#installation-i-e-development-setup" title="Permalink to this headline">¶</a></h2>
 
<p>accounting-api does not yet have a method for end-user installation. This
 
section describes how you would set up accounting-api for development purposes,
 
which can also be used as an environment to try out the functionality of
 
accounting-api.</p>
 
<p>See the sections below on how to install the dependencies. Then run the
 
following in your shell.</p>
 
<div class="highlight-bash"><div class="highlight"><pre><span class="c"># Get the source code</span>
 
git clone git://gitorious.org/conservancy/accounting-api.git
 
<span class="nb">cd </span>accounting-api
 

	
 
<span class="c"># Set up the python 3.3 virtualenv (this will make the GTK client not work)</span>
 
mkvirtualenv -p /usr/bin/python3.3 accounting-api
 
<span class="c"># OR If you want the GTK client to work</span>
 
mkvirtualenv -p /usr/bin/python3.3 --system-site-packages accounting-api
 

	
 
<span class="c"># If your terminal prompt does not say &quot;(accounting-api)&quot;, run</span>
 
workon accounting-api
 

	
 
<span class="c"># Install the python packages</span>
 
pip-3.3 install -r requirements.txt
 
</pre></div>
 
</div>
 
<p>If all went well, head to <a class="reference internal" href="#usage"><em>Usage</em></a>. If not, head to the channel <tt class="docutils literal"><span class="pre">#npoacct</span></tt>
 
on <tt class="docutils literal"><span class="pre">irc.freenode.net</span></tt>.</p>
 
<div class="section" id="ubuntu">
 
<h3>Ubuntu<a class="headerlink" href="#ubuntu" title="Permalink to this headline">¶</a></h3>
 
<div class="highlight-bash"><div class="highlight"><pre><span class="c"># git python 3.3 and virtualenvwrapper</span>
 
sudo apt-get install git-core python3.3 virtualenvwrapper
 

	
 
<span class="c"># ledger 3</span>
 
sudo apt-add-repository ppa:mbudde/ledger
 
sudo apt-get update
 
sudo apt-get install ledger
 
</pre></div>
 
</div>
 
</div>
 
</div>
 
<div class="section" id="usage">
 
<span id="id1"></span><h2>Usage<a class="headerlink" href="#usage" title="Permalink to this headline">¶</a></h2>
 
<div class="highlight-bash"><div class="highlight"><pre><span class="c"># Run the web service</span>
 
<span class="nv">LEDGER_FILE</span><span class="o">=</span>../path/to/your.ledger ./bin/serve
 

	
 
<span class="c"># Get a balance report via the web service</span>
 
./bin/client balance
 

	
 
<span class="c"># Get the transaction log</span>
 
./bin/client register
 

	
 
<span class="c"># Insert a simple transaction, currency will be autodetected from your</span>
 
<span class="c"># locale, for another currency, use ``--symbol USD``</span>
 
./bin/client insert <span class="s2">&quot;January rent&quot;</span> Assets:Checking Expenses:Rent 654.32
 
</pre></div>
 
</div>
 
</div>
 
</div>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
  <h3><a href="index.html">Table Of Contents</a></h3>
 
  <ul>
 
<li><a class="reference internal" href="#">The Accounting API</a><ul>
 
<li><a class="reference internal" href="#dependencies">Dependencies</a><ul>
 
<li><a class="reference internal" href="#gtk-client-dependencies">GTK Client Dependencies</a></li>
 
</ul>
 
</li>
 
<li><a class="reference internal" href="#installation-i-e-development-setup">Installation (i.e. Development Setup)</a><ul>
 
<li><a class="reference internal" href="#ubuntu">Ubuntu</a></li>
 
</ul>
 
</li>
 
<li><a class="reference internal" href="#usage">Usage</a></li>
 
</ul>
 
</li>
 
</ul>
 

	
 
  <h4>Previous topic</h4>
 
  <p class="topless"><a href="index.html"
 
                        title="previous chapter">Welcome to Accounting API&#8217;s documentation!</a></p>
 
  <h4>Next topic</h4>
 
  <p class="topless"><a href="api/accounting.html"
 
                        title="next chapter">accounting package</a></p>
 
  <h3>This Page</h3>
 
  <ul class="this-page-menu">
 
    <li><a href="_sources/README.txt"
 
           rel="nofollow">Show Source</a></li>
 
  </ul>
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="api/accounting.html" title="accounting package"
 
             >next</a> |</li>
 
        <li class="right" >
 
          <a href="index.html" title="Welcome to Accounting API’s documentation!"
 
             >previous</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../index.html" />
 
    <link rel="up" title="Module code" href="index.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="index.html" accesskey="U">Module code</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">sys</span>
 
<span class="kn">import</span> <span class="nn">subprocess</span>
 
<span class="kn">import</span> <span class="nn">logging</span>
 
<span class="kn">import</span> <span class="nn">time</span>
 

	
 
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
 
<span class="kn">from</span> <span class="nn">xml.etree</span> <span class="kn">import</span> <span class="n">ElementTree</span>
 
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.models</span> <span class="kn">import</span> <span class="n">Account</span><span class="p">,</span> <span class="n">Transaction</span><span class="p">,</span> <span class="n">Posting</span><span class="p">,</span> <span class="n">Amount</span>
 

	
 
<span class="n">_log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
 

	
 
<div class="viewcode-block" id="Ledger"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger">[docs]</a><span class="k">class</span> <span class="nc">Ledger</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ledger_file</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ledger_bin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="k">if</span> <span class="n">ledger_file</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&#39;ledger_file cannot be None&#39;</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_bin</span> <span class="o">=</span> <span class="n">ledger_bin</span> <span class="ow">or</span> <span class="s">&#39;ledger&#39;</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_file</span> <span class="o">=</span> <span class="n">ledger_file</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&#39;ledger file: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">ledger_file</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">locked</span> <span class="o">=</span> <span class="bp">False</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
    <span class="nd">@contextmanager</span>
 
<div class="viewcode-block" id="Ledger.locked_process"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.locked_process">[docs]</a>    <span class="k">def</span> <span class="nf">locked_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">r&#39;&#39;&#39;</span>
 
<span class="sd">        Context manager that checks that the ledger process is not already</span>
 
<span class="sd">        locked, then &quot;locks&quot; the process and yields the process handle and</span>
 
<span class="sd">        unlocks the process when execution is returned.</span>
 

	
 
<span class="sd">        Since this decorated as a :func:`contextlib.contextmanager` the</span>
 
<span class="sd">        recommended use is with the ``with``-statement.</span>
 

	
 
<span class="sd">        .. code-block:: python</span>
 

	
 
<span class="sd">            with self.locked_process() as p:</span>
 
<span class="sd">                p.stdin.write(b&#39;bal\n&#39;)</span>
 

	
 
<span class="sd">                output = self.read_until_prompt(p)</span>
 

	
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;The process has already been locked,&#39;</span>
 
                               <span class="s">&#39; something</span><span class="se">\&#39;</span><span class="s">s out of order.&#39;</span><span class="p">)</span>
 

	
 
            <span class="c"># XXX: This code has no purpose in a single-threaded process</span>
 
            <span class="n">timeout</span> <span class="o">=</span> <span class="mi">5</span>  <span class="c"># Seconds</span>
 

	
 
            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">timeout</span> <span class="o">+</span> <span class="mi">2</span><span class="p">):</span>
 
                <span class="k">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="n">timeout</span><span class="p">:</span>
 
                    <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;Ledger process is already locked&#39;</span><span class="p">)</span>
 

	
 
                <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked</span><span class="p">:</span>
 
                    <span class="k">break</span>
 
                <span class="k">else</span><span class="p">:</span>
 
                    <span class="n">_log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&#39;Waiting for one second... </span><span class="si">%d</span><span class="s">/</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
 
                    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
 

	
 
        <span class="n">process</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_process</span><span class="p">()</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">locked</span> <span class="o">=</span> <span class="bp">True</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Lock enabled&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">yield</span> <span class="n">process</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">locked</span> <span class="o">=</span> <span class="bp">False</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Lock disabled&#39;</span><span class="p">)</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.assemble_arguments"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.assemble_arguments">[docs]</a>    <span class="k">def</span> <span class="nf">assemble_arguments</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Returns a list of arguments suitable for :class:`subprocess.Popen` based on</span>
 
<span class="sd">        :attr:`self.ledger_bin` and :attr:`self.ledger_file`.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">return</span> <span class="p">[</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_bin</span><span class="p">,</span>
 
            <span class="s">&#39;-f&#39;</span><span class="p">,</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_file</span><span class="p">,</span>
 
        <span class="p">]</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.init_process"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.init_process">[docs]</a>    <span class="k">def</span> <span class="nf">init_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Creates a new (presumably) ledger subprocess based on the args from</span>
 
<span class="sd">        :meth:`Ledger.assemble_arguments()` and then runs</span>
 
<span class="sd">        :meth:`Ledger.read_until_prompt()` once (which should return the banner</span>
 
<span class="sd">        text) and discards the output.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Starting ledger process...&#39;</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">assemble_arguments</span><span class="p">(),</span>
 
            <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
 
            <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
 
            <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
 

	
 
        <span class="c"># Swallow the banner</span>
 
        <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked_process</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">read_until_prompt</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.get_process"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.get_process">[docs]</a>    <span class="k">def</span> <span class="nf">get_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Returns :attr:`self.ledger_process` if it evaluates to ``True``. If</span>
 
<span class="sd">        :attr:`self.ledger_process` is not set the result of</span>
 
<span class="sd">        :meth:`self.init_process() &lt;Ledger.init_process&gt;` is returned.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">init_process</span><span class="p">()</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.read_until_prompt"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.read_until_prompt">[docs]</a>    <span class="k">def</span> <span class="nf">read_until_prompt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">process</span><span class="p">):</span>
 
        <span class="sd">r&#39;&#39;&#39;</span>
 
<span class="sd">        Reads from the subprocess instance :data:`process` until it finds a</span>
 
<span class="sd">        combination of ``\n]\x20`` (the prompt), then returns the output</span>
 
<span class="sd">        without the prompt.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="n">b</span><span class="s">&#39;&#39;</span>
 

	
 
        <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
 
            <span class="n">line</span> <span class="o">=</span> <span class="n">process</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>  <span class="c"># XXX: This is a hack</span>
 

	
 
            <span class="n">output</span> <span class="o">+=</span> <span class="n">line</span>
 

	
 
            <span class="k">if</span> <span class="n">b</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">] &#39;</span> <span class="ow">in</span> <span class="n">output</span><span class="p">:</span>
 
                <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Found prompt!&#39;</span><span class="p">)</span>
 
                <span class="k">break</span>
 

	
 
        <span class="n">output</span> <span class="o">=</span> <span class="n">output</span><span class="p">[:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span>  <span class="c"># Cut away the prompt</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;output: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">output</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">output</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.send_command"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.send_command">[docs]</a>    <span class="k">def</span> <span class="nf">send_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">command</span><span class="p">):</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
        <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked_process</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
 
            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">command</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
 
                <span class="n">command</span> <span class="o">=</span> <span class="n">command</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">)</span>
 

	
 
            <span class="n">p</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">command</span> <span class="o">+</span> <span class="n">b</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
 
            <span class="n">p</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
 

	
 
            <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_until_prompt</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
 

	
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span><span class="o">.</span><span class="n">send_signal</span><span class="p">(</span><span class="n">subprocess</span><span class="o">.</span><span class="n">signal</span><span class="o">.</span><span class="n">SIGTERM</span><span class="p">)</span>
 
            <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Waiting for ledger to shut down&#39;</span><span class="p">)</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
            <span class="k">return</span> <span class="n">output</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.add_transaction"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.add_transaction">[docs]</a>    <span class="k">def</span> <span class="nf">add_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transaction</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Writes a transaction to the ledger file by opening it in &#39;ab&#39; mode and</span>
 
<span class="sd">        writing a ledger transaction based on the</span>
 
<span class="sd">        :class:`~accounting.models.Transaction` instance in :data:`transaction`.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">if</span> <span class="ow">not</span> <span class="n">transaction</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;Id&#39;</span><span class="p">):</span>
 
            <span class="n">transaction</span><span class="o">.</span><span class="n">generate_id</span><span class="p">()</span>
 

	
 
        <span class="n">transaction_template</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">{date} {t.payee}</span><span class="se">\n</span><span class="s">&#39;</span>
 
                                <span class="s">&#39;{tags}&#39;</span>
 
                                <span class="s">&#39;{postings}&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">metadata_template</span> <span class="o">=</span> <span class="s">&#39;   ;{0}: {1}</span><span class="se">\n</span><span class="s">&#39;</span>
 

	
 
        <span class="c"># TODO: Generate metadata for postings</span>
 
        <span class="n">posting_template</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;  {account} {p.amount.symbol}&#39;</span>
 
                            <span class="s">&#39; {p.amount.amount}</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">output</span>  <span class="o">=</span> <span class="n">b</span><span class="s">&#39;&#39;</span>
 

	
 
        <span class="c"># XXX: Even I hardly understands what this does, however I indent it it</span>
 
        <span class="c"># stays unreadable.</span>
 
        <span class="n">output</span> <span class="o">+=</span> <span class="n">transaction_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
            <span class="n">date</span><span class="o">=</span><span class="n">transaction</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">),</span>
 
            <span class="n">t</span><span class="o">=</span><span class="n">transaction</span><span class="p">,</span>
 
            <span class="n">tags</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span>
 
                <span class="n">metadata_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> \
 
                    <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">items</span><span class="p">()]),</span>
 
            <span class="n">postings</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">posting_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
                <span class="n">p</span><span class="o">=</span><span class="n">p</span><span class="p">,</span>
 
                <span class="n">account</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">account</span> <span class="o">+</span> <span class="s">&#39; &#39;</span> <span class="o">*</span> <span class="p">(</span>
 
                    <span class="mi">80</span> <span class="o">-</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">account</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">symbol</span><span class="p">)</span> <span class="o">+</span>
 
                    <span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">amount</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
 
                <span class="p">))</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">postings</span>
 
            <span class="p">])</span>
 
        <span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ledger_file</span><span class="p">,</span> <span class="s">&#39;ab&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
 
            <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;written to file: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">output</span><span class="p">)</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.bal"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.bal">[docs]</a>    <span class="k">def</span> <span class="nf">bal</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_command</span><span class="p">(</span><span class="s">&#39;xml&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;bal call returned no output&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">accounts</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="n">xml</span> <span class="o">=</span> <span class="n">ElementTree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">))</span>
 

	
 
        <span class="n">accounts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_recurse_accounts</span><span class="p">(</span><span class="n">xml</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./accounts&#39;</span><span class="p">))</span>
 

	
 
        <span class="k">return</span> <span class="n">accounts</span>
 
</div>
 
    <span class="k">def</span> <span class="nf">_recurse_accounts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root</span><span class="p">):</span>
 
        <span class="n">accounts</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="k">for</span> <span class="n">account</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./account&#39;</span><span class="p">):</span>
 
            <span class="n">name</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./fullname&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
            <span class="n">amounts</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
            <span class="c"># Try to find an account total value, then try to find the account</span>
 
            <span class="c"># balance</span>
 
            <span class="n">account_amounts</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span>
 
                <span class="s">&#39;./account-total/balance/amount&#39;</span><span class="p">)</span> <span class="ow">or</span> \
 
                    <span class="n">account</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./account-amount/amount&#39;</span><span class="p">)</span> <span class="ow">or</span> \
 
                    <span class="n">account</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./account-total/amount&#39;</span><span class="p">)</span>
 

	
 
            <span class="k">if</span> <span class="n">account_amounts</span><span class="p">:</span>
 
                <span class="k">for</span> <span class="n">amount</span> <span class="ow">in</span> <span class="n">account_amounts</span><span class="p">:</span>
 
                    <span class="n">quantity</span> <span class="o">=</span> <span class="n">amount</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./quantity&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 
                    <span class="n">symbol</span> <span class="o">=</span> <span class="n">amount</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./commodity/symbol&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                    <span class="n">amounts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Amount</span><span class="p">(</span><span class="n">amount</span><span class="o">=</span><span class="n">quantity</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">symbol</span><span class="p">))</span>
 
            <span class="k">else</span><span class="p">:</span>
 
                <span class="n">_log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s">&#39;Account </span><span class="si">%s</span><span class="s"> does not have any amounts&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
 

	
 
            <span class="n">accounts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Account</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span>
 
                                    <span class="n">amounts</span><span class="o">=</span><span class="n">amounts</span><span class="p">,</span>
 
                                    <span class="n">accounts</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_recurse_accounts</span><span class="p">(</span><span class="n">account</span><span class="p">)))</span>
 

	
 
        <span class="k">return</span> <span class="n">accounts</span>
 

	
 
<div class="viewcode-block" id="Ledger.reg"><a class="viewcode-back" href="../api/accounting.html#accounting.Ledger.reg">[docs]</a>    <span class="k">def</span> <span class="nf">reg</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_command</span><span class="p">(</span><span class="s">&#39;xml&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;reg call returned no output&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">entries</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="n">reg_xml</span> <span class="o">=</span> <span class="n">ElementTree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">))</span>
 

	
 
        <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="n">reg_xml</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./transactions/transaction&#39;</span><span class="p">):</span>
 
            <span class="n">date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">transaction</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./date&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">,</span>
 
                                     <span class="s">&#39;%Y/%m/</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">)</span>
 
            <span class="n">payee</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./payee&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
            <span class="n">postings</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
            <span class="k">for</span> <span class="n">posting</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./postings/posting&#39;</span><span class="p">):</span>
 
                <span class="n">account</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./account/name&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 
                <span class="n">amount</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./post-amount/amount/quantity&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 
                <span class="n">symbol</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">find</span><span class="p">(</span>
 
                    <span class="s">&#39;./post-amount/amount/commodity/symbol&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                <span class="c"># Get the posting metadata</span>
 
                <span class="n">metadata</span> <span class="o">=</span> <span class="p">{}</span>
 

	
 
                <span class="n">values</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./metadata/value&#39;</span><span class="p">)</span>
 
                <span class="k">if</span> <span class="n">values</span><span class="p">:</span>
 
                    <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
 
                        <span class="n">key</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;key&#39;</span><span class="p">)</span>
 
                        <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./string&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;metadata: </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
 

	
 
                        <span class="n">metadata</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
 

	
 
                <span class="n">postings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
 
                    <span class="n">Posting</span><span class="p">(</span><span class="n">account</span><span class="o">=</span><span class="n">account</span><span class="p">,</span>
 
                            <span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">,</span>
 
                            <span class="n">amount</span><span class="o">=</span><span class="n">Amount</span><span class="p">(</span><span class="n">amount</span><span class="o">=</span><span class="n">amount</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">symbol</span><span class="p">)))</span>
 

	
 
            <span class="c"># Get the transaction metadata</span>
 
            <span class="n">metadata</span> <span class="o">=</span> <span class="p">{}</span>
 

	
 
            <span class="n">values</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./metadata/value&#39;</span><span class="p">)</span>
 
            <span class="k">if</span> <span class="n">values</span><span class="p">:</span>
 
                <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
 
                    <span class="n">key</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;key&#39;</span><span class="p">)</span>
 
                    <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./string&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                    <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;metadata: </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
 

	
 
                    <span class="n">metadata</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
 

	
 
            <span class="c"># Add a Transaction instance to the list</span>
 
            <span class="n">entries</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
 
                <span class="n">Transaction</span><span class="p">(</span><span class="n">date</span><span class="o">=</span><span class="n">date</span><span class="p">,</span> <span class="n">payee</span><span class="o">=</span><span class="n">payee</span><span class="p">,</span> <span class="n">postings</span><span class="o">=</span><span class="n">postings</span><span class="p">,</span>
 
                            <span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">))</span>
 

	
 
        <span class="k">return</span> <span class="n">entries</span>
 

	
 
</div></div>
 
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../api/accounting.html#accounting.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
    <span class="kn">import</span> <span class="nn">argparse</span>
 
    <span class="k">if</span> <span class="n">argv</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
        <span class="n">argv</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span>
 

	
 
    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">()</span>
 
    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">,</span> <span class="s">&#39;--verbosity&#39;</span><span class="p">,</span>
 
                        <span class="n">default</span><span class="o">=</span><span class="s">&#39;INFO&#39;</span><span class="p">,</span>
 
                        <span class="n">help</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;Filter logging output. Possible values:&#39;</span> <span class="o">+</span>
 
                        <span class="s">&#39; CRITICAL, ERROR, WARNING, INFO, DEBUG&#39;</span><span class="p">))</span>
 

	
 
    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
 
    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="nb">getattr</span><span class="p">(</span><span class="n">logging</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">verbosity</span><span class="p">,</span> <span class="s">&#39;INFO&#39;</span><span class="p">))</span>
 
    <span class="n">ledger</span> <span class="o">=</span> <span class="n">Ledger</span><span class="p">(</span><span class="n">ledger_file</span><span class="o">=</span><span class="s">&#39;non-profit-test-data.ledger&#39;</span><span class="p">)</span>
 
    <span class="k">print</span><span class="p">(</span><span class="n">ledger</span><span class="o">.</span><span class="n">bal</span><span class="p">())</span>
 
    <span class="k">print</span><span class="p">(</span><span class="n">ledger</span><span class="o">.</span><span class="n">reg</span><span class="p">())</span>
 

	
 
</div>
 
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
 
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="index.html" >Module code</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/client.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.client &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.client</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">sys</span>
 
<span class="kn">import</span> <span class="nn">argparse</span>
 
<span class="kn">import</span> <span class="nn">json</span>
 
<span class="kn">import</span> <span class="nn">logging</span>
 

	
 
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
 
<span class="kn">from</span> <span class="nn">decimal</span> <span class="kn">import</span> <span class="n">Decimal</span>
 

	
 
<span class="kn">import</span> <span class="nn">requests</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.models</span> <span class="kn">import</span> <span class="n">Transaction</span><span class="p">,</span> <span class="n">Posting</span><span class="p">,</span> <span class="n">Amount</span>
 
<span class="kn">from</span> <span class="nn">accounting.transport</span> <span class="kn">import</span> <span class="n">AccountingDecoder</span><span class="p">,</span> <span class="n">AccountingEncoder</span>
 

	
 
<span class="n">_log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
 

	
 

	
 
<div class="viewcode-block" id="Client"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.Client">[docs]</a><span class="k">class</span> <span class="nc">Client</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">host</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">json_encoder</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
 
                 <span class="n">json_decoder</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">=</span> <span class="n">host</span> <span class="ow">or</span> <span class="s">&#39;http://localhost:5000&#39;</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">json_encoder</span> <span class="o">=</span> <span class="n">json_encoder</span> <span class="ow">or</span> <span class="n">AccountingEncoder</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">json_decoder</span> <span class="o">=</span> <span class="n">json_decoder</span> <span class="ow">or</span> <span class="n">AccountingDecoder</span>
 

	
 
<div class="viewcode-block" id="Client.get_balance"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.Client.get_balance">[docs]</a>    <span class="k">def</span> <span class="nf">get_balance</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">balance</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/balance&#39;</span><span class="p">)</span>
 
        <span class="k">return</span> <span class="n">balance</span><span class="p">[</span><span class="s">&#39;balance_report&#39;</span><span class="p">]</span>
 
</div>
 
<div class="viewcode-block" id="Client.get"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.Client.get">[docs]</a>    <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
 
        <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">+</span> <span class="n">path</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_decode_response</span><span class="p">(</span><span class="n">response</span><span class="p">)</span>
 
</div>
 
    <span class="k">def</span> <span class="nf">_decode_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">response</span><span class="p">):</span>
 
        <span class="n">response_data</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">(</span><span class="n">cls</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">json_decoder</span><span class="p">)</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;response_data: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">response_data</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">response_data</span>
 

	
 
<div class="viewcode-block" id="Client.post"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.Client.post">[docs]</a>    <span class="k">def</span> <span class="nf">post</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">payload</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
        <span class="n">kw</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;headers&#39;</span><span class="p">:</span> <span class="p">{</span><span class="s">&#39;Content-Type&#39;</span><span class="p">:</span> <span class="s">&#39;application/json&#39;</span><span class="p">}})</span>
 
        <span class="n">kw</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;data&#39;</span><span class="p">:</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">payload</span><span class="p">,</span> <span class="n">cls</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">json_encoder</span><span class="p">)})</span>
 

	
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_decode_response</span><span class="p">(</span><span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">host</span> <span class="o">+</span> <span class="n">path</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">))</span>
 
</div>
 
<div class="viewcode-block" id="Client.simple_transaction"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.Client.simple_transaction">[docs]</a>    <span class="k">def</span> <span class="nf">simple_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">from_acc</span><span class="p">,</span> <span class="n">to_acc</span><span class="p">,</span> <span class="n">amount</span><span class="p">):</span>
 
        <span class="n">t</span> <span class="o">=</span> <span class="n">Transaction</span><span class="p">(</span>
 
            <span class="n">date</span><span class="o">=</span><span class="n">datetime</span><span class="o">.</span><span class="n">today</span><span class="p">(),</span>
 
            <span class="n">payee</span><span class="o">=</span><span class="s">&#39;PayPal donation&#39;</span><span class="p">,</span>
 
            <span class="n">postings</span><span class="o">=</span><span class="p">[</span>
 
                <span class="n">Posting</span><span class="p">(</span><span class="n">account</span><span class="o">=</span><span class="n">from_acc</span><span class="p">,</span>
 
                        <span class="n">amount</span><span class="o">=</span><span class="n">Amount</span><span class="p">(</span><span class="n">symbol</span><span class="o">=</span><span class="s">&#39;$&#39;</span><span class="p">,</span> <span class="n">amount</span><span class="o">=-</span><span class="n">amount</span><span class="p">)),</span>
 
                <span class="n">Posting</span><span class="p">(</span><span class="n">account</span><span class="o">=</span><span class="n">to_acc</span><span class="p">,</span>
 
                        <span class="n">amount</span><span class="o">=</span><span class="n">Amount</span><span class="p">(</span><span class="n">symbol</span><span class="o">=</span><span class="s">&#39;$&#39;</span><span class="p">,</span> <span class="n">amount</span><span class="o">=</span><span class="n">amount</span><span class="p">))</span>
 
            <span class="p">]</span>
 
        <span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="s">&#39;/transaction&#39;</span><span class="p">,</span> <span class="p">{</span><span class="s">&#39;transactions&#39;</span><span class="p">:</span> <span class="p">[</span><span class="n">t</span><span class="p">]})</span>
 
</div>
 
<div class="viewcode-block" id="Client.get_register"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.Client.get_register">[docs]</a>    <span class="k">def</span> <span class="nf">get_register</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">register</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;/register&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">register</span><span class="p">[</span><span class="s">&#39;register_report&#39;</span><span class="p">]</span>
 

	
 
</div></div>
 
<div class="viewcode-block" id="print_transactions"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.print_transactions">[docs]</a><span class="k">def</span> <span class="nf">print_transactions</span><span class="p">(</span><span class="n">transactions</span><span class="p">):</span>
 
    <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="n">transactions</span><span class="p">:</span>
 
        <span class="k">print</span><span class="p">(</span><span class="s">&#39;{date} {t.payee:.&lt;69}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
            <span class="n">date</span><span class="o">=</span><span class="n">transaction</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">),</span>
 
            <span class="n">t</span><span class="o">=</span><span class="n">transaction</span><span class="p">))</span>
 

	
 
        <span class="k">for</span> <span class="n">posting</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">postings</span><span class="p">:</span>
 
            <span class="k">print</span><span class="p">(</span><span class="s">&#39; &#39;</span> <span class="o">+</span> <span class="n">posting</span><span class="o">.</span><span class="n">account</span> <span class="o">+</span>
 
                <span class="s">&#39; &#39;</span> <span class="o">*</span> <span class="p">(</span><span class="mi">80</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">posting</span><span class="o">.</span><span class="n">account</span><span class="p">)</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">symbol</span><span class="p">)</span> <span class="o">-</span>
 
                        <span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">amount</span><span class="p">))</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">+</span>
 
                <span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">symbol</span> <span class="o">+</span> <span class="s">&#39; &#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">amount</span><span class="p">))</span>
 

	
 
</div>
 
<div class="viewcode-block" id="print_balance_accounts"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.print_balance_accounts">[docs]</a><span class="k">def</span> <span class="nf">print_balance_accounts</span><span class="p">(</span><span class="n">accounts</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
 
    <span class="k">for</span> <span class="n">account</span> <span class="ow">in</span> <span class="n">accounts</span><span class="p">:</span>
 
        <span class="k">print</span><span class="p">(</span><span class="s">&#39; &#39;</span> <span class="o">*</span> <span class="n">level</span> <span class="o">+</span> <span class="s">&#39; + {account.name}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">account</span><span class="o">=</span><span class="n">account</span><span class="p">)</span> <span class="o">+</span>
 
              <span class="s">&#39; &#39;</span> <span class="o">+</span> <span class="s">&#39;-&#39;</span> <span class="o">*</span> <span class="p">(</span><span class="mi">80</span> <span class="o">-</span> <span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">name</span><span class="p">))</span> <span class="o">-</span> <span class="n">level</span><span class="p">))</span>
 
        <span class="k">for</span> <span class="n">amount</span> <span class="ow">in</span> <span class="n">account</span><span class="o">.</span><span class="n">amounts</span><span class="p">:</span>
 
            <span class="k">print</span><span class="p">(</span><span class="s">&#39; &#39;</span> <span class="o">*</span> <span class="n">level</span> <span class="o">+</span> <span class="s">&#39;   {amount.symbol} {amount.amount}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
                <span class="n">amount</span><span class="o">=</span><span class="n">amount</span><span class="p">))</span>
 
        <span class="n">print_balance_accounts</span><span class="p">(</span><span class="n">account</span><span class="o">.</span><span class="n">accounts</span><span class="p">,</span> <span class="n">level</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
 

	
 
</div>
 
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../api/accounting.html#accounting.client.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">prog</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
    <span class="k">global</span> <span class="n">HOST</span>
 
    <span class="k">if</span> <span class="n">argv</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
        <span class="n">prog</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
 
        <span class="n">argv</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
 

	
 
    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">prog</span><span class="o">=</span><span class="n">prog</span><span class="p">)</span>
 
    <span class="n">actions</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">add_subparsers</span><span class="p">(</span><span class="n">title</span><span class="o">=</span><span class="s">&#39;Actions&#39;</span><span class="p">,</span> <span class="n">dest</span><span class="o">=</span><span class="s">&#39;action&#39;</span><span class="p">)</span>
 

	
 
    <span class="n">insert</span> <span class="o">=</span> <span class="n">actions</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s">&#39;insert&#39;</span><span class="p">,</span>
 
                                <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;in&#39;</span><span class="p">])</span>
 
    <span class="n">insert</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;from_account&#39;</span><span class="p">)</span>
 
    <span class="n">insert</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;to_account&#39;</span><span class="p">)</span>
 
    <span class="n">insert</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;amount&#39;</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="n">Decimal</span><span class="p">)</span>
 

	
 
    <span class="n">balance</span> <span class="o">=</span> <span class="n">actions</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s">&#39;balance&#39;</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;bal&#39;</span><span class="p">])</span>
 

	
 
    <span class="n">register</span> <span class="o">=</span> <span class="n">actions</span><span class="o">.</span><span class="n">add_parser</span><span class="p">(</span><span class="s">&#39;register&#39;</span><span class="p">,</span> <span class="n">aliases</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;reg&#39;</span><span class="p">])</span>
 

	
 
    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">,</span> <span class="s">&#39;--verbosity&#39;</span><span class="p">,</span>
 
                        <span class="n">default</span><span class="o">=</span><span class="s">&#39;WARNING&#39;</span><span class="p">,</span>
 
                        <span class="n">help</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;Filter logging output. Possible values:&#39;</span> <span class="o">+</span>
 
                        <span class="s">&#39; CRITICAL, ERROR, WARNING, INFO, DEBUG&#39;</span><span class="p">))</span>
 
    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;--host&#39;</span><span class="p">,</span> <span class="n">default</span><span class="o">=</span><span class="s">&#39;http://localhost:5000&#39;</span><span class="p">)</span>
 

	
 
    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">(</span><span class="n">argv</span><span class="p">)</span>
 

	
 
    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="nb">getattr</span><span class="p">(</span><span class="n">logging</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">verbosity</span><span class="p">))</span>
 

	
 
    <span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">host</span><span class="p">)</span>
 

	
 
    <span class="k">if</span> <span class="n">args</span><span class="o">.</span><span class="n">action</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;insert&#39;</span><span class="p">,</span> <span class="s">&#39;in&#39;</span><span class="p">]:</span>
 
        <span class="k">print</span><span class="p">(</span><span class="n">client</span><span class="o">.</span><span class="n">simple_transaction</span><span class="p">(</span><span class="n">args</span><span class="o">.</span><span class="n">from_account</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">to_account</span><span class="p">,</span>
 
                                        <span class="n">args</span><span class="o">.</span><span class="n">amount</span><span class="p">))</span>
 
    <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">action</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;balance&#39;</span><span class="p">,</span> <span class="s">&#39;bal&#39;</span><span class="p">]:</span>
 
        <span class="n">print_balance_accounts</span><span class="p">(</span><span class="n">client</span><span class="o">.</span><span class="n">get_balance</span><span class="p">())</span>
 
    <span class="k">elif</span> <span class="n">args</span><span class="o">.</span><span class="n">action</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;register&#39;</span><span class="p">,</span> <span class="s">&#39;reg&#39;</span><span class="p">]:</span>
 
        <span class="n">print_transactions</span><span class="p">(</span><span class="n">client</span><span class="o">.</span><span class="n">get_register</span><span class="p">())</span>
 
    <span class="k">else</span><span class="p">:</span>
 
        <span class="n">parser</span><span class="o">.</span><span class="n">print_help</span><span class="p">()</span>
 
</div>
 
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
 
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/decorators.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.decorators &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.decorators</h1><div class="highlight"><pre>
 
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">wraps</span>
 

	
 
<span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">jsonify</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.exceptions</span> <span class="kn">import</span> <span class="n">AccountingException</span>
 

	
 

	
 
<div class="viewcode-block" id="jsonify_exceptions"><a class="viewcode-back" href="../../api/accounting.html#accounting.decorators.jsonify_exceptions">[docs]</a><span class="k">def</span> <span class="nf">jsonify_exceptions</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    Wraps a Flask endpoint and catches any AccountingException-based</span>
 
<span class="sd">    exceptions which are returned to the client as JSON.</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="nd">@wraps</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
 
    <span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
        <span class="k">try</span><span class="p">:</span>
 
            <span class="k">return</span> <span class="n">func</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
 
        <span class="k">except</span> <span class="n">AccountingException</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
 
            <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">error</span><span class="o">=</span><span class="n">exc</span><span class="p">)</span>
 

	
 
    <span class="k">return</span> <span class="n">wrapper</span></div>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/exceptions.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.exceptions &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.exceptions</h1><div class="highlight"><pre>
 
<div class="viewcode-block" id="AccountingException"><a class="viewcode-back" href="../../api/accounting.html#accounting.exceptions.AccountingException">[docs]</a><span class="k">class</span> <span class="nc">AccountingException</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    Used as a base for exceptions that are returned to the caller via the</span>
 
<span class="sd">    jsonify_exceptions decorator</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="k">pass</span></div>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/gtkclient.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.gtkclient &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.gtkclient</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">sys</span>
 
<span class="kn">import</span> <span class="nn">logging</span>
 
<span class="kn">import</span> <span class="nn">threading</span>
 
<span class="kn">import</span> <span class="nn">pkg_resources</span>
 

	
 
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">wraps</span>
 
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
 

	
 
<span class="kn">from</span> <span class="nn">gi.repository</span> <span class="kn">import</span> <span class="n">Gtk</span>
 
<span class="kn">from</span> <span class="nn">gi.repository</span> <span class="kn">import</span> <span class="n">GLib</span>
 
<span class="kn">from</span> <span class="nn">gi.repository</span> <span class="kn">import</span> <span class="n">GObject</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.client</span> <span class="kn">import</span> <span class="n">Client</span>
 

	
 
<span class="n">_log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
 

	
 

	
 
<div class="viewcode-block" id="indicate_activity"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.indicate_activity">[docs]</a><span class="k">def</span> <span class="nf">indicate_activity</span><span class="p">(</span><span class="n">func_or_str</span><span class="p">):</span>
 
    <span class="n">description</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
    <span class="k">def</span> <span class="nf">decorator</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
 
        <span class="nd">@wraps</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
 
        <span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">status_description</span><span class="o">.</span><span class="n">set_text</span><span class="p">(</span><span class="n">description</span><span class="p">)</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">activity_indicator</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">activity_indicator</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
 

	
 
            <span class="k">return</span> <span class="n">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">wrapper</span>
 

	
 
    <span class="k">if</span> <span class="nb">callable</span><span class="p">(</span><span class="n">func_or_str</span><span class="p">):</span>
 
        <span class="n">description</span> <span class="o">=</span> <span class="s">&#39;Working&#39;</span>
 
        <span class="k">return</span> <span class="n">decorator</span><span class="p">(</span><span class="n">func_or_str</span><span class="p">)</span>
 
    <span class="k">else</span><span class="p">:</span>
 
        <span class="n">description</span> <span class="o">=</span> <span class="n">func_or_str</span>
 
        <span class="k">return</span> <span class="n">decorator</span>
 

	
 
</div>
 
<div class="viewcode-block" id="indicate_activity_done"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.indicate_activity_done">[docs]</a><span class="k">def</span> <span class="nf">indicate_activity_done</span><span class="p">(</span><span class="n">func</span><span class="p">):</span>
 
    <span class="nd">@wraps</span><span class="p">(</span><span class="n">func</span><span class="p">)</span>
 
    <span class="k">def</span> <span class="nf">wrapper</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">status_description</span><span class="o">.</span><span class="n">set_text</span><span class="p">(</span><span class="s">&#39;&#39;</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">activity_indicator</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">activity_indicator</span><span class="o">.</span><span class="n">hide</span><span class="p">()</span>
 

	
 
        <span class="k">return</span> <span class="n">func</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">)</span>
 

	
 
    <span class="k">return</span> <span class="n">wrapper</span>
 

	
 
</div>
 
<div class="viewcode-block" id="AccountingApplication"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication">[docs]</a><span class="k">class</span> <span class="nc">AccountingApplication</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="c">#Gtk.Window.__init__(self, title=&#39;Accounting Client&#39;)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">()</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">load_ui</span><span class="p">(</span><span class="n">pkg_resources</span><span class="o">.</span><span class="n">resource_filename</span><span class="p">(</span>
 
            <span class="s">&#39;accounting&#39;</span><span class="p">,</span> <span class="s">&#39;res/client-ui.glade&#39;</span><span class="p">))</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">aboutdialog</span><span class="o">.</span><span class="n">set_transient_for</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">accounting_window</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">accounting_window</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="s">&#39;delete-event&#39;</span><span class="p">,</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">main_quit</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">accounting_window</span><span class="o">.</span><span class="n">set_border_width</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">accounting_window</span><span class="o">.</span><span class="n">set_default_geometry</span><span class="p">(</span><span class="mi">640</span><span class="p">,</span> <span class="mi">360</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">accounting_window</span><span class="o">.</span><span class="n">show_all</span><span class="p">()</span>
 

	
 
<div class="viewcode-block" id="AccountingApplication.load_ui"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication.load_ui">[docs]</a>    <span class="k">def</span> <span class="nf">load_ui</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Loading UI...&#39;</span><span class="p">)</span>
 
        <span class="n">builder</span> <span class="o">=</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">Builder</span><span class="p">()</span>
 
        <span class="n">builder</span><span class="o">.</span><span class="n">add_from_file</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
 
        <span class="n">builder</span><span class="o">.</span><span class="n">connect_signals</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
 

	
 
        <span class="k">for</span> <span class="n">element</span> <span class="ow">in</span> <span class="n">builder</span><span class="o">.</span><span class="n">get_objects</span><span class="p">():</span>
 
            <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Loaded </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">Buildable</span><span class="o">.</span><span class="n">get_name</span><span class="p">(</span><span class="n">element</span><span class="p">))</span>
 
            <span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Gtk</span><span class="o">.</span><span class="n">Buildable</span><span class="o">.</span><span class="n">get_name</span><span class="p">(</span><span class="n">element</span><span class="p">),</span> <span class="n">element</span><span class="p">)</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;UI loaded&#39;</span><span class="p">)</span>
 
</div>
 
<div class="viewcode-block" id="AccountingApplication.on_transaction_selected"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication.on_transaction_selected">[docs]</a>    <span class="k">def</span> <span class="nf">on_transaction_selected</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
 
        <span class="n">selection</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">transaction_view</span><span class="o">.</span><span class="n">get_selection</span><span class="p">()</span>
 
        <span class="n">selection</span><span class="o">.</span><span class="n">set_mode</span><span class="p">(</span><span class="n">Gtk</span><span class="o">.</span><span class="n">SelectionMode</span><span class="o">.</span><span class="n">SINGLE</span><span class="p">)</span>
 
        <span class="n">xact_store</span><span class="p">,</span> <span class="n">xact_iter</span> <span class="o">=</span> <span class="n">selection</span><span class="o">.</span><span class="n">get_selected</span><span class="p">()</span>
 

	
 
        <span class="n">xact_id</span> <span class="o">=</span> <span class="n">xact_store</span><span class="o">.</span><span class="n">get_value</span><span class="p">(</span><span class="n">xact_iter</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;selection: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">xact_id</span><span class="p">)</span>
 

	
 
        <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">transaction_data</span><span class="p">:</span>
 
            <span class="k">if</span> <span class="n">transaction</span><span class="o">.</span><span class="n">id</span> <span class="o">==</span> <span class="n">xact_id</span><span class="p">:</span>
 
                <span class="bp">self</span><span class="o">.</span><span class="n">lbl_payee</span><span class="o">.</span><span class="n">set_text</span><span class="p">(</span><span class="n">transaction</span><span class="o">.</span><span class="n">payee</span><span class="p">)</span>
 

	
 
                <span class="bp">self</span><span class="o">.</span><span class="n">posting_store</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
 

	
 
                <span class="k">for</span> <span class="n">posting</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">postings</span><span class="p">:</span>
 
                    <span class="bp">self</span><span class="o">.</span><span class="n">posting_store</span><span class="o">.</span><span class="n">append</span><span class="p">([</span>
 
                        <span class="n">posting</span><span class="o">.</span><span class="n">account</span><span class="p">,</span>
 
                        <span class="nb">str</span><span class="p">(</span><span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">amount</span><span class="p">),</span>
 
                        <span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">symbol</span>
 
                    <span class="p">])</span>
 

	
 
                <span class="bp">self</span><span class="o">.</span><span class="n">detail_view</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
 
                <span class="k">break</span>
 
</div>
 
<div class="viewcode-block" id="AccountingApplication.on_show_about_activate"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication.on_show_about_activate">[docs]</a>    <span class="k">def</span> <span class="nf">on_show_about_activate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Showing About&#39;</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">aboutdialog</span><span class="o">.</span><span class="n">show_all</span><span class="p">()</span>
 
</div>
 
<div class="viewcode-block" id="AccountingApplication.on_aboutdialog_close"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication.on_aboutdialog_close">[docs]</a>    <span class="k">def</span> <span class="nf">on_aboutdialog_close</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Closing About&#39;</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">aboutdialog</span><span class="o">.</span><span class="n">hide_all</span><span class="p">()</span>
 
</div>
 
    <span class="nd">@indicate_activity</span><span class="p">(</span><span class="s">&#39;Refreshing Transactions&#39;</span><span class="p">)</span>
 
<div class="viewcode-block" id="AccountingApplication.on_refresh_transactions_activate"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication.on_refresh_transactions_activate">[docs]</a>    <span class="k">def</span> <span class="nf">on_refresh_transactions_activate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">widget</span><span class="p">):</span>
 
        <span class="k">def</span> <span class="nf">load_transactions</span><span class="p">():</span>
 
            <span class="n">transactions</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_register</span><span class="p">()</span>
 
            <span class="n">GLib</span><span class="o">.</span><span class="n">idle_add</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">on_transactions_loaded</span><span class="p">,</span> <span class="n">transactions</span><span class="p">)</span>
 

	
 
        <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">load_transactions</span><span class="p">)</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
 
</div>
 
    <span class="nd">@indicate_activity_done</span>
 
<div class="viewcode-block" id="AccountingApplication.on_transactions_loaded"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.AccountingApplication.on_transactions_loaded">[docs]</a>    <span class="k">def</span> <span class="nf">on_transactions_loaded</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transactions</span><span class="p">):</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;transactions: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">transactions</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">transaction_data</span> <span class="o">=</span> <span class="n">transactions</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">transaction_store</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
 

	
 
        <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="n">transactions</span><span class="p">:</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">transaction_store</span><span class="o">.</span><span class="n">append</span><span class="p">([</span>
 
                <span class="n">transaction</span><span class="o">.</span><span class="n">id</span><span class="p">,</span>
 
                <span class="n">transaction</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">),</span>
 
                <span class="n">transaction</span><span class="o">.</span><span class="n">payee</span>
 
            <span class="p">])</span>
 

	
 
</div></div>
 
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../api/accounting.html#accounting.gtkclient.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">DEBUG</span><span class="p">)</span>
 

	
 
    <span class="n">GObject</span><span class="o">.</span><span class="n">threads_init</span><span class="p">()</span>
 

	
 
    <span class="n">accounting</span> <span class="o">=</span> <span class="n">AccountingApplication</span><span class="p">()</span>
 
    <span class="c">#accounting_win.connect(&#39;delete-event&#39;, Gtk.main_quit)</span>
 

	
 
    <span class="n">Gtk</span><span class="o">.</span><span class="n">main</span><span class="p">()</span>
 
</div>
 
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
 
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/models.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.models &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.models</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">uuid</span>
 
<span class="kn">from</span> <span class="nn">decimal</span> <span class="kn">import</span> <span class="n">Decimal</span>
 

	
 

	
 
<div class="viewcode-block" id="Transaction"><a class="viewcode-back" href="../../api/accounting.html#accounting.models.Transaction">[docs]</a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">date</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">payee</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">postings</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
 
                 <span class="n">_generate_id</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">date</span> <span class="o">=</span> <span class="n">date</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">payee</span> <span class="o">=</span> <span class="n">payee</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">postings</span> <span class="o">=</span> <span class="n">postings</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span> <span class="k">if</span> <span class="n">metadata</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="k">else</span> <span class="p">{}</span>
 

	
 
        <span class="k">if</span> <span class="n">_generate_id</span><span class="p">:</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">generate_id</span><span class="p">()</span>
 

	
 
<div class="viewcode-block" id="Transaction.generate_id"><a class="viewcode-back" href="../../api/accounting.html#accounting.models.Transaction.generate_id">[docs]</a>    <span class="k">def</span> <span class="nf">generate_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;Id&#39;</span><span class="p">:</span> <span class="n">uuid</span><span class="o">.</span><span class="n">uuid4</span><span class="p">()})</span>
 
</div>
 
    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="p">(</span><span class="s">&#39;&lt;{self.__class__.__name__} {date}&#39;</span> <span class="o">+</span>
 
                <span class="s">&#39; {self.payee} {self.postings}&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
                    <span class="bp">self</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span>
 
                    <span class="n">date</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">))</span>
 

	
 
</div>
 
<div class="viewcode-block" id="Posting"><a class="viewcode-back" href="../../api/accounting.html#accounting.models.Posting">[docs]</a><span class="k">class</span> <span class="nc">Posting</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">account</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">amount</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">account</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">amount</span> <span class="o">=</span> <span class="n">amount</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span> <span class="o">=</span> <span class="n">metadata</span> <span class="k">if</span> <span class="n">metadata</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="k">else</span> <span class="p">{}</span>
 

	
 
    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="p">(</span><span class="s">&#39;&lt;{self.__class__.__name__} &quot;{self.account}&quot;&#39;</span> <span class="o">+</span>
 
                <span class="s">&#39; {self.amount}&gt;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
 

	
 
</div>
 
<div class="viewcode-block" id="Amount"><a class="viewcode-back" href="../../api/accounting.html#accounting.models.Amount">[docs]</a><span class="k">class</span> <span class="nc">Amount</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">amount</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">amount</span> <span class="o">=</span> <span class="n">Decimal</span><span class="p">(</span><span class="n">amount</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">symbol</span> <span class="o">=</span> <span class="n">symbol</span>
 

	
 
    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="p">(</span><span class="s">&#39;&lt;{self.__class__.__name__} {self.symbol}&#39;</span> <span class="o">+</span>
 
                <span class="s">&#39; {self.amount}&gt;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
 

	
 
</div>
 
<div class="viewcode-block" id="Account"><a class="viewcode-back" href="../../api/accounting.html#accounting.models.Account">[docs]</a><span class="k">class</span> <span class="nc">Account</span><span class="p">:</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">amounts</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">accounts</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">amounts</span> <span class="o">=</span> <span class="n">amounts</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">accounts</span> <span class="o">=</span> <span class="n">accounts</span>
 

	
 
    <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="p">(</span><span class="s">&#39;&lt;{self.__class__.__name__} &quot;{self.name}&quot; {self.amounts}&#39;</span> <span class="o">+</span>
 
                <span class="s">&#39; {self.accounts}&gt;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span></div>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/storage.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.storage &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.storage</h1><div class="highlight"><pre>
 
<span class="k">class</span> <span class="nc">Storage</span><span class="p">:</span>
 
<div class="viewcode-block" id="Storage"><a class="viewcode-back" href="../../api/accounting.storage.html#accounting.storage.Storage">[docs]</a>    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    ABC for accounting storage</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
 

	
 
    <span class="k">def</span> <span class="nf">get_transactions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
<div class="viewcode-block" id="Storage.get_transactions"><a class="viewcode-back" href="../../api/accounting.storage.html#accounting.storage.Storage.get_transactions">[docs]</a>        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
 

	
 
    <span class="k">def</span> <span class="nf">get_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span></div>
 
<div class="viewcode-block" id="Storage.get_transaction"><a class="viewcode-back" href="../../api/accounting.storage.html#accounting.storage.Storage.get_transaction">[docs]</a>        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
 

	
 
    <span class="k">def</span> <span class="nf">get_account</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span></div>
 
<div class="viewcode-block" id="Storage.get_account"><a class="viewcode-back" href="../../api/accounting.storage.html#accounting.storage.Storage.get_account">[docs]</a>        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
 

	
 
    <span class="k">def</span> <span class="nf">get_accounts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span></div>
 
<div class="viewcode-block" id="Storage.get_accounts"><a class="viewcode-back" href="../../api/accounting.storage.html#accounting.storage.Storage.get_accounts">[docs]</a>        <span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">()</span>
 
</pre></div></div></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/storage/ledgercli.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.storage.ledgercli &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../../index.html" />
 
    <link rel="up" title="accounting.storage" href="../storage.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../../accounting.html" >accounting</a> &raquo;</li>
 
          <li><a href="../storage.html" accesskey="U">accounting.storage</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.storage.ledgercli</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">sys</span>
 
<span class="kn">import</span> <span class="nn">subprocess</span>
 
<span class="kn">import</span> <span class="nn">logging</span>
 
<span class="kn">import</span> <span class="nn">time</span>
 

	
 
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
 
<span class="kn">from</span> <span class="nn">xml.etree</span> <span class="kn">import</span> <span class="n">ElementTree</span>
 
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.models</span> <span class="kn">import</span> <span class="n">Account</span><span class="p">,</span> <span class="n">Transaction</span><span class="p">,</span> <span class="n">Posting</span><span class="p">,</span> <span class="n">Amount</span>
 
<span class="kn">from</span> <span class="nn">accounting.storage</span> <span class="kn">import</span> <span class="n">Storage</span>
 

	
 
<span class="n">_log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
 

	
 

	
 
<div class="viewcode-block" id="Ledger"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger">[docs]</a><span class="k">class</span> <span class="nc">Ledger</span><span class="p">(</span><span class="n">Storage</span><span class="p">):</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">app</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ledger_file</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">ledger_bin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="k">if</span> <span class="n">app</span><span class="p">:</span>
 
            <span class="n">ledger_file</span> <span class="o">=</span> <span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s">&#39;LEDGER_FILE&#39;</span><span class="p">]</span>
 

	
 
        <span class="k">if</span> <span class="n">ledger_file</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&#39;ledger_file cannot be None&#39;</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_bin</span> <span class="o">=</span> <span class="n">ledger_bin</span> <span class="ow">or</span> <span class="s">&#39;ledger&#39;</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_file</span> <span class="o">=</span> <span class="n">ledger_file</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&#39;ledger file: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">ledger_file</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">locked</span> <span class="o">=</span> <span class="bp">False</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
    <span class="nd">@contextmanager</span>
 
<div class="viewcode-block" id="Ledger.locked_process"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.locked_process">[docs]</a>    <span class="k">def</span> <span class="nf">locked_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">r&#39;&#39;&#39;</span>
 
<span class="sd">        Context manager that checks that the ledger process is not already</span>
 
<span class="sd">        locked, then &quot;locks&quot; the process and yields the process handle and</span>
 
<span class="sd">        unlocks the process when execution is returned.</span>
 

	
 
<span class="sd">        Since this decorated as a :func:`contextlib.contextmanager` the</span>
 
<span class="sd">        recommended use is with the ``with``-statement.</span>
 

	
 
<span class="sd">        .. code-block:: python</span>
 

	
 
<span class="sd">            with self.locked_process() as p:</span>
 
<span class="sd">                p.stdin.write(b&#39;bal\n&#39;)</span>
 

	
 
<span class="sd">                output = self.read_until_prompt(p)</span>
 

	
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;The process has already been locked,&#39;</span>
 
                               <span class="s">&#39; something</span><span class="se">\&#39;</span><span class="s">s out of order.&#39;</span><span class="p">)</span>
 

	
 
            <span class="c"># XXX: This code has no purpose in a single-threaded process</span>
 
            <span class="n">timeout</span> <span class="o">=</span> <span class="mi">5</span>  <span class="c"># Seconds</span>
 

	
 
            <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">timeout</span> <span class="o">+</span> <span class="mi">2</span><span class="p">):</span>
 
                <span class="k">if</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="n">timeout</span><span class="p">:</span>
 
                    <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;Ledger process is already locked&#39;</span><span class="p">)</span>
 

	
 
                <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked</span><span class="p">:</span>
 
                    <span class="k">break</span>
 
                <span class="k">else</span><span class="p">:</span>
 
                    <span class="n">_log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&#39;Waiting for one second... </span><span class="si">%d</span><span class="s">/</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
 
                    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
 

	
 
        <span class="n">process</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_process</span><span class="p">()</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">locked</span> <span class="o">=</span> <span class="bp">True</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Lock enabled&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">yield</span> <span class="n">process</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">locked</span> <span class="o">=</span> <span class="bp">False</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Lock disabled&#39;</span><span class="p">)</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.assemble_arguments"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.assemble_arguments">[docs]</a>    <span class="k">def</span> <span class="nf">assemble_arguments</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Returns a list of arguments suitable for :class:`subprocess.Popen`</span>
 
<span class="sd">        based on :attr:`self.ledger_bin` and :attr:`self.ledger_file`.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">return</span> <span class="p">[</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_bin</span><span class="p">,</span>
 
            <span class="s">&#39;-f&#39;</span><span class="p">,</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_file</span><span class="p">,</span>
 
        <span class="p">]</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.init_process"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.init_process">[docs]</a>    <span class="k">def</span> <span class="nf">init_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Creates a new (presumably) ledger subprocess based on the args from</span>
 
<span class="sd">        :meth:`Ledger.assemble_arguments()` and then runs</span>
 
<span class="sd">        :meth:`Ledger.read_until_prompt()` once (which should return the banner</span>
 
<span class="sd">        text) and discards the output.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Starting ledger process...&#39;</span><span class="p">)</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">assemble_arguments</span><span class="p">(),</span>
 
            <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
 
            <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
 
            <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">)</span>
 

	
 
        <span class="c"># Swallow the banner</span>
 
        <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked_process</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">read_until_prompt</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.get_process"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.get_process">[docs]</a>    <span class="k">def</span> <span class="nf">get_process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Returns :attr:`self.ledger_process` if it evaluates to ``True``. If</span>
 
<span class="sd">        :attr:`self.ledger_process` is not set the result of</span>
 
<span class="sd">        :meth:`self.init_process() &lt;Ledger.init_process&gt;` is returned.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">init_process</span><span class="p">()</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.read_until_prompt"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.read_until_prompt">[docs]</a>    <span class="k">def</span> <span class="nf">read_until_prompt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">process</span><span class="p">):</span>
 
        <span class="sd">r&#39;&#39;&#39;</span>
 
<span class="sd">        Reads from the subprocess instance :data:`process` until it finds a</span>
 
<span class="sd">        combination of ``\n]\x20`` (the prompt), then returns the output</span>
 
<span class="sd">        without the prompt.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="n">b</span><span class="s">&#39;&#39;</span>
 

	
 
        <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
 
            <span class="n">line</span> <span class="o">=</span> <span class="n">process</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>  <span class="c"># XXX: This is a hack</span>
 

	
 
            <span class="n">output</span> <span class="o">+=</span> <span class="n">line</span>
 

	
 
            <span class="k">if</span> <span class="n">b</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">] &#39;</span> <span class="ow">in</span> <span class="n">output</span><span class="p">:</span>
 
                <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Found prompt!&#39;</span><span class="p">)</span>
 
                <span class="k">break</span>
 

	
 
        <span class="n">output</span> <span class="o">=</span> <span class="n">output</span><span class="p">[:</span><span class="o">-</span><span class="mi">3</span><span class="p">]</span>  <span class="c"># Cut away the prompt</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;output: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">output</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">output</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.send_command"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.send_command">[docs]</a>    <span class="k">def</span> <span class="nf">send_command</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">command</span><span class="p">):</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
        <span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked_process</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
 
            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">command</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
 
                <span class="n">command</span> <span class="o">=</span> <span class="n">command</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">)</span>
 

	
 
            <span class="n">p</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">command</span> <span class="o">+</span> <span class="n">b</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
 
            <span class="n">p</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
 

	
 
            <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_until_prompt</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
 

	
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span><span class="o">.</span><span class="n">send_signal</span><span class="p">(</span><span class="n">subprocess</span><span class="o">.</span><span class="n">signal</span><span class="o">.</span><span class="n">SIGTERM</span><span class="p">)</span>
 
            <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;Waiting for ledger to shut down&#39;</span><span class="p">)</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
 
            <span class="bp">self</span><span class="o">.</span><span class="n">ledger_process</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
            <span class="k">return</span> <span class="n">output</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.add_transaction"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.add_transaction">[docs]</a>    <span class="k">def</span> <span class="nf">add_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transaction</span><span class="p">):</span>
 
        <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">        Writes a transaction to the ledger file by opening it in &#39;ab&#39; mode and</span>
 
<span class="sd">        writing a ledger transaction based on the</span>
 
<span class="sd">        :class:`~accounting.models.Transaction` instance in</span>
 
<span class="sd">        :data:`transaction`.</span>
 
<span class="sd">        &#39;&#39;&#39;</span>
 
        <span class="k">if</span> <span class="ow">not</span> <span class="n">transaction</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;Id&#39;</span><span class="p">):</span>
 
            <span class="n">transaction</span><span class="o">.</span><span class="n">generate_id</span><span class="p">()</span>
 

	
 
        <span class="n">transaction_template</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;</span><span class="se">\n</span><span class="s">{date} {t.payee}</span><span class="se">\n</span><span class="s">&#39;</span>
 
                                <span class="s">&#39;{tags}&#39;</span>
 
                                <span class="s">&#39;{postings}&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">metadata_template</span> <span class="o">=</span> <span class="s">&#39;   ;{0}: {1}</span><span class="se">\n</span><span class="s">&#39;</span>
 

	
 
        <span class="c"># TODO: Generate metadata for postings</span>
 
        <span class="n">posting_template</span> <span class="o">=</span> <span class="p">(</span><span class="s">&#39;  {account} {p.amount.symbol}&#39;</span>
 
                            <span class="s">&#39; {p.amount.amount}</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">output</span> <span class="o">=</span> <span class="n">b</span><span class="s">&#39;&#39;</span>
 

	
 
        <span class="c"># XXX: Even I hardly understands what this does, however I indent it it</span>
 
        <span class="c"># stays unreadable.</span>
 
        <span class="n">output</span> <span class="o">+=</span> <span class="n">transaction_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
            <span class="n">date</span><span class="o">=</span><span class="n">transaction</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">),</span>
 
            <span class="n">t</span><span class="o">=</span><span class="n">transaction</span><span class="p">,</span>
 
            <span class="n">tags</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span>
 
                <span class="n">metadata_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
 
                <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">items</span><span class="p">()]),</span>
 
            <span class="n">postings</span><span class="o">=</span><span class="s">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">posting_template</span><span class="o">.</span><span class="n">format</span><span class="p">(</span>
 
                <span class="n">p</span><span class="o">=</span><span class="n">p</span><span class="p">,</span>
 
                <span class="n">account</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">account</span> <span class="o">+</span> <span class="s">&#39; &#39;</span> <span class="o">*</span> <span class="p">(</span>
 
                    <span class="mi">80</span> <span class="o">-</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">account</span><span class="p">)</span> <span class="o">+</span> <span class="nb">len</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">symbol</span><span class="p">)</span> <span class="o">+</span>
 
                          <span class="nb">len</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">amount</span><span class="p">))</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
 
                <span class="p">))</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">postings</span>
 
            <span class="p">])</span>
 
        <span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ledger_file</span><span class="p">,</span> <span class="s">&#39;ab&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
 
            <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;written to file: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">output</span><span class="p">)</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.bal"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.bal">[docs]</a>    <span class="k">def</span> <span class="nf">bal</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_command</span><span class="p">(</span><span class="s">&#39;xml&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;bal call returned no output&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">accounts</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="n">xml</span> <span class="o">=</span> <span class="n">ElementTree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">))</span>
 

	
 
        <span class="n">accounts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_recurse_accounts</span><span class="p">(</span><span class="n">xml</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./accounts&#39;</span><span class="p">))</span>
 

	
 
        <span class="k">return</span> <span class="n">accounts</span>
 
</div>
 
    <span class="k">def</span> <span class="nf">_recurse_accounts</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">root</span><span class="p">):</span>
 
        <span class="n">accounts</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="k">for</span> <span class="n">account</span> <span class="ow">in</span> <span class="n">root</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./account&#39;</span><span class="p">):</span>
 
            <span class="n">name</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./fullname&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
            <span class="n">amounts</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
            <span class="c"># Try to find an account total value, then try to find the account</span>
 
            <span class="c"># balance</span>
 
            <span class="n">account_amounts</span> <span class="o">=</span> <span class="n">account</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span>
 
                <span class="s">&#39;./account-total/balance/amount&#39;</span><span class="p">)</span> <span class="ow">or</span> \
 
                <span class="n">account</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./account-amount/amount&#39;</span><span class="p">)</span> <span class="ow">or</span> \
 
                <span class="n">account</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./account-total/amount&#39;</span><span class="p">)</span>
 

	
 
            <span class="k">if</span> <span class="n">account_amounts</span><span class="p">:</span>
 
                <span class="k">for</span> <span class="n">amount</span> <span class="ow">in</span> <span class="n">account_amounts</span><span class="p">:</span>
 
                    <span class="n">quantity</span> <span class="o">=</span> <span class="n">amount</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./quantity&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 
                    <span class="n">symbol</span> <span class="o">=</span> <span class="n">amount</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./commodity/symbol&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                    <span class="n">amounts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Amount</span><span class="p">(</span><span class="n">amount</span><span class="o">=</span><span class="n">quantity</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">symbol</span><span class="p">))</span>
 
            <span class="k">else</span><span class="p">:</span>
 
                <span class="n">_log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s">&#39;Account </span><span class="si">%s</span><span class="s"> does not have any amounts&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
 

	
 
            <span class="n">accounts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Account</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span>
 
                                    <span class="n">amounts</span><span class="o">=</span><span class="n">amounts</span><span class="p">,</span>
 
                                    <span class="n">accounts</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_recurse_accounts</span><span class="p">(</span><span class="n">account</span><span class="p">)))</span>
 

	
 
        <span class="k">return</span> <span class="n">accounts</span>
 

	
 
<div class="viewcode-block" id="Ledger.get_transactions"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.get_transactions">[docs]</a>    <span class="k">def</span> <span class="nf">get_transactions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">reg</span><span class="p">()</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.reg"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.reg">[docs]</a>    <span class="k">def</span> <span class="nf">reg</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">send_command</span><span class="p">(</span><span class="s">&#39;xml&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">if</span> <span class="n">output</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&#39;reg call returned no output&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">entries</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="n">reg_xml</span> <span class="o">=</span> <span class="n">ElementTree</span><span class="o">.</span><span class="n">fromstring</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s">&#39;utf8&#39;</span><span class="p">))</span>
 

	
 
        <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="n">reg_xml</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./transactions/transaction&#39;</span><span class="p">):</span>
 
            <span class="n">date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">transaction</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./date&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span><span class="p">,</span>
 
                                     <span class="s">&#39;%Y/%m/</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">)</span>
 
            <span class="n">payee</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./payee&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
            <span class="n">postings</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
            <span class="k">for</span> <span class="n">posting</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./postings/posting&#39;</span><span class="p">):</span>
 
                <span class="n">account</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./account/name&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 
                <span class="n">amount</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./post-amount/amount/quantity&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 
                <span class="n">symbol</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">find</span><span class="p">(</span>
 
                    <span class="s">&#39;./post-amount/amount/commodity/symbol&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                <span class="c"># Get the posting metadata</span>
 
                <span class="n">metadata</span> <span class="o">=</span> <span class="p">{}</span>
 

	
 
                <span class="n">values</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./metadata/value&#39;</span><span class="p">)</span>
 
                <span class="k">if</span> <span class="n">values</span><span class="p">:</span>
 
                    <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
 
                        <span class="n">key</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;key&#39;</span><span class="p">)</span>
 
                        <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./string&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;metadata: </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
 

	
 
                        <span class="n">metadata</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
 

	
 
                <span class="n">postings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
 
                    <span class="n">Posting</span><span class="p">(</span><span class="n">account</span><span class="o">=</span><span class="n">account</span><span class="p">,</span>
 
                            <span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">,</span>
 
                            <span class="n">amount</span><span class="o">=</span><span class="n">Amount</span><span class="p">(</span><span class="n">amount</span><span class="o">=</span><span class="n">amount</span><span class="p">,</span> <span class="n">symbol</span><span class="o">=</span><span class="n">symbol</span><span class="p">)))</span>
 

	
 
            <span class="c"># Get the transaction metadata</span>
 
            <span class="n">metadata</span> <span class="o">=</span> <span class="p">{}</span>
 

	
 
            <span class="n">values</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="s">&#39;./metadata/value&#39;</span><span class="p">)</span>
 
            <span class="k">if</span> <span class="n">values</span><span class="p">:</span>
 
                <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
 
                    <span class="n">key</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;key&#39;</span><span class="p">)</span>
 
                    <span class="n">value</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;./string&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">text</span>
 

	
 
                    <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;metadata: </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
 

	
 
                    <span class="n">metadata</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">key</span><span class="p">:</span> <span class="n">value</span><span class="p">})</span>
 

	
 
            <span class="c"># Add a Transaction instance to the list</span>
 
            <span class="nb">id</span> <span class="o">=</span> <span class="n">metadata</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;Id&#39;</span><span class="p">)</span>
 
            <span class="n">entries</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
 
                <span class="n">Transaction</span><span class="p">(</span><span class="nb">id</span><span class="o">=</span><span class="nb">id</span><span class="p">,</span> <span class="n">date</span><span class="o">=</span><span class="n">date</span><span class="p">,</span> <span class="n">payee</span><span class="o">=</span><span class="n">payee</span><span class="p">,</span> <span class="n">postings</span><span class="o">=</span><span class="n">postings</span><span class="p">,</span>
 
                            <span class="n">metadata</span><span class="o">=</span><span class="n">metadata</span><span class="p">))</span>
 

	
 
        <span class="k">return</span> <span class="n">entries</span>
 
</div>
 
<div class="viewcode-block" id="Ledger.update_transaction"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.Ledger.update_transaction">[docs]</a>    <span class="k">def</span> <span class="nf">update_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transaction</span><span class="p">):</span>
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;DUMMY: Updated transaction: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">transaction</span><span class="p">)</span>
 

	
 
</div></div>
 
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../../api/accounting.storage.html#accounting.storage.ledgercli.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
    <span class="kn">import</span> <span class="nn">argparse</span>
 
    <span class="k">if</span> <span class="n">argv</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
        <span class="n">argv</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span>
 

	
 
    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">()</span>
 
    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">,</span> <span class="s">&#39;--verbosity&#39;</span><span class="p">,</span>
 
                        <span class="n">default</span><span class="o">=</span><span class="s">&#39;INFO&#39;</span><span class="p">,</span>
 
                        <span class="n">help</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;Filter logging output. Possible values:&#39;</span> <span class="o">+</span>
 
                              <span class="s">&#39; CRITICAL, ERROR, WARNING, INFO, DEBUG&#39;</span><span class="p">))</span>
 

	
 
    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span>
 
    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="nb">getattr</span><span class="p">(</span><span class="n">logging</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">verbosity</span><span class="p">,</span> <span class="s">&#39;INFO&#39;</span><span class="p">))</span>
 
    <span class="n">ledger</span> <span class="o">=</span> <span class="n">Ledger</span><span class="p">(</span><span class="n">ledger_file</span><span class="o">=</span><span class="s">&#39;non-profit-test-data.ledger&#39;</span><span class="p">)</span>
 
    <span class="k">print</span><span class="p">(</span><span class="n">ledger</span><span class="o">.</span><span class="n">bal</span><span class="p">())</span>
 
    <span class="k">print</span><span class="p">(</span><span class="n">ledger</span><span class="o">.</span><span class="n">reg</span><span class="p">())</span>
 

	
 
</div>
 
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
 
    <span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../../accounting.html" >accounting</a> &raquo;</li>
 
          <li><a href="../storage.html" >accounting.storage</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/storage/sql.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.storage.sql &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../../index.html" />
 
    <link rel="up" title="accounting.storage" href="../storage.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../../accounting.html" >accounting</a> &raquo;</li>
 
          <li><a href="../storage.html" accesskey="U">accounting.storage</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.storage.sql</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">logging</span>
 
<span class="kn">import</span> <span class="nn">json</span>
 

	
 
<span class="kn">from</span> <span class="nn">flask.ext.sqlalchemy</span> <span class="kn">import</span> <span class="n">SQLAlchemy</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.exceptions</span> <span class="kn">import</span> <span class="n">AccountingException</span>
 
<span class="kn">from</span> <span class="nn">accounting.storage</span> <span class="kn">import</span> <span class="n">Storage</span>
 
<span class="kn">from</span> <span class="nn">accounting.models</span> <span class="kn">import</span> <span class="n">Transaction</span><span class="p">,</span> <span class="n">Posting</span><span class="p">,</span> <span class="n">Amount</span>
 

	
 
<span class="n">_log</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
 
<span class="n">db</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 

	
 
<div class="viewcode-block" id="SQLStorage"><a class="viewcode-back" href="../../../api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage">[docs]</a><span class="k">class</span> <span class="nc">SQLStorage</span><span class="p">(</span><span class="n">Storage</span><span class="p">):</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">app</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
        <span class="k">global</span> <span class="n">db</span>
 

	
 
        <span class="k">if</span> <span class="ow">not</span> <span class="n">app</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s">&#39;Missing app keyword argument&#39;</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">app</span> <span class="o">=</span> <span class="n">app</span>
 
        <span class="n">db</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">db</span> <span class="o">=</span> <span class="n">SQLAlchemy</span><span class="p">(</span><span class="n">app</span><span class="p">)</span>
 

	
 
        <span class="kn">from</span> <span class="nn">.models</span> <span class="kn">import</span> <span class="n">Transaction</span> <span class="k">as</span> <span class="n">SQLTransaction</span><span class="p">,</span> \
 
            <span class="n">Posting</span> <span class="k">as</span> <span class="n">SQLPosting</span><span class="p">,</span> <span class="n">Amount</span> <span class="k">as</span> <span class="n">SQLAmount</span>
 

	
 
        <span class="n">db</span><span class="o">.</span><span class="n">create_all</span><span class="p">()</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">Transaction</span> <span class="o">=</span> <span class="n">SQLTransaction</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">Posting</span> <span class="o">=</span> <span class="n">SQLPosting</span>
 
        <span class="bp">self</span><span class="o">.</span><span class="n">Amount</span> <span class="o">=</span> <span class="n">SQLAmount</span>
 

	
 
<div class="viewcode-block" id="SQLStorage.get_transactions"><a class="viewcode-back" href="../../../api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage.get_transactions">[docs]</a>    <span class="k">def</span> <span class="nf">get_transactions</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kw</span><span class="p">):</span>
 
        <span class="n">transactions</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
        <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">Transaction</span><span class="o">.</span><span class="n">query</span><span class="o">.</span><span class="n">all</span><span class="p">():</span>
 
            <span class="n">dict_transaction</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">as_dict</span><span class="p">()</span>
 
            <span class="n">dict_postings</span> <span class="o">=</span> <span class="n">dict_transaction</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;postings&#39;</span><span class="p">)</span>
 

	
 
            <span class="n">postings</span> <span class="o">=</span> <span class="p">[]</span>
 

	
 
            <span class="k">for</span> <span class="n">dict_posting</span> <span class="ow">in</span> <span class="n">dict_postings</span><span class="p">:</span>
 
                <span class="n">dict_amount</span> <span class="o">=</span> <span class="n">dict_posting</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;amount&#39;</span><span class="p">)</span>
 
                <span class="n">posting</span> <span class="o">=</span> <span class="n">Posting</span><span class="p">(</span><span class="o">**</span><span class="n">dict_posting</span><span class="p">)</span>
 
                <span class="n">posting</span><span class="o">.</span><span class="n">amount</span> <span class="o">=</span> <span class="n">Amount</span><span class="p">(</span><span class="o">**</span><span class="n">dict_amount</span><span class="p">)</span>
 

	
 
                <span class="n">postings</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">posting</span><span class="p">)</span>
 

	
 
            <span class="n">dict_transaction</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;postings&#39;</span><span class="p">:</span> <span class="n">postings</span><span class="p">})</span>
 

	
 
            <span class="n">transactions</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Transaction</span><span class="p">(</span><span class="o">**</span><span class="n">dict_transaction</span><span class="p">))</span>
 

	
 
        <span class="k">return</span> <span class="n">transactions</span>
 
</div>
 
<div class="viewcode-block" id="SQLStorage.update_transaction"><a class="viewcode-back" href="../../../api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage.update_transaction">[docs]</a>    <span class="k">def</span> <span class="nf">update_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transaction</span><span class="p">):</span>
 
        <span class="k">if</span> <span class="n">transaction</span><span class="o">.</span><span class="n">id</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="k">raise</span> <span class="n">AccountingException</span><span class="p">(</span><span class="s">&#39;The transaction id must be set for&#39;</span>
 
                                      <span class="s">&#39; update_transaction calls&#39;</span><span class="p">)</span>
 

	
 
        <span class="n">_log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;DUMMY: Update transaction: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">transaction</span><span class="p">)</span>
 
</div>
 
<div class="viewcode-block" id="SQLStorage.add_transaction"><a class="viewcode-back" href="../../../api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage.add_transaction">[docs]</a>    <span class="k">def</span> <span class="nf">add_transaction</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">transaction</span><span class="p">):</span>
 
        <span class="k">if</span> <span class="n">transaction</span><span class="o">.</span><span class="n">id</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
            <span class="n">transaction</span><span class="o">.</span><span class="n">generate_id</span><span class="p">()</span>
 

	
 
        <span class="n">_t</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Transaction</span><span class="p">()</span>
 
        <span class="n">_t</span><span class="o">.</span><span class="n">uuid</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">id</span>
 
        <span class="n">_t</span><span class="o">.</span><span class="n">date</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">date</span>
 
        <span class="n">_t</span><span class="o">.</span><span class="n">payee</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">payee</span>
 
        <span class="n">_t</span><span class="o">.</span><span class="n">meta</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">transaction</span><span class="o">.</span><span class="n">metadata</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">_t</span><span class="p">)</span>
 

	
 
        <span class="k">for</span> <span class="n">posting</span> <span class="ow">in</span> <span class="n">transaction</span><span class="o">.</span><span class="n">postings</span><span class="p">:</span>
 
            <span class="n">_p</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Posting</span><span class="p">()</span>
 
            <span class="n">_p</span><span class="o">.</span><span class="n">transaction_uuid</span> <span class="o">=</span> <span class="n">transaction</span><span class="o">.</span><span class="n">id</span>
 
            <span class="n">_p</span><span class="o">.</span><span class="n">account</span> <span class="o">=</span> <span class="n">posting</span><span class="o">.</span><span class="n">account</span>
 
            <span class="n">_p</span><span class="o">.</span><span class="n">meta</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">posting</span><span class="o">.</span><span class="n">metadata</span><span class="p">)</span>
 
            <span class="n">_p</span><span class="o">.</span><span class="n">amount</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">Amount</span><span class="p">(</span><span class="n">symbol</span><span class="o">=</span><span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">symbol</span><span class="p">,</span>
 
                                    <span class="n">amount</span><span class="o">=</span><span class="n">posting</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">amount</span><span class="p">)</span>
 

	
 
            <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">_p</span><span class="p">)</span>
 

	
 
        <span class="bp">self</span><span class="o">.</span><span class="n">db</span><span class="o">.</span><span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span></div></div>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../../accounting.html" >accounting</a> &raquo;</li>
 
          <li><a href="../storage.html" >accounting.storage</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/storage/sql/models.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.storage.sql.models &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../../../index.html" />
 
    <link rel="up" title="accounting.storage.sql" href="../sql.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../../../accounting.html" >accounting</a> &raquo;</li>
 
          <li><a href="../../storage.html" >accounting.storage</a> &raquo;</li>
 
          <li><a href="../sql.html" accesskey="U">accounting.storage.sql</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.storage.sql.models</h1><div class="highlight"><pre>
 
<span class="kn">import</span> <span class="nn">json</span>
 

	
 
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">db</span>
 

	
 

	
 
<div class="viewcode-block" id="Transaction"><a class="viewcode-back" href="../../../../api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction">[docs]</a><span class="k">class</span> <span class="nc">Transaction</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
 
    <span class="nb">id</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Integer</span><span class="p">(),</span> <span class="n">primary_key</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
 
    <span class="n">uuid</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">,</span> <span class="n">unique</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">nullable</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
 
    <span class="n">date</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">DateTime</span><span class="p">)</span>
 
    <span class="n">payee</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">())</span>
 
    <span class="n">meta</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">())</span>
 

	
 
<div class="viewcode-block" id="Transaction.as_dict"><a class="viewcode-back" href="../../../../api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction.as_dict">[docs]</a>    <span class="k">def</span> <span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
            <span class="nb">id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">uuid</span><span class="p">,</span>
 
            <span class="n">date</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">date</span><span class="p">,</span>
 
            <span class="n">payee</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">payee</span><span class="p">,</span>
 
            <span class="n">postings</span><span class="o">=</span><span class="p">[</span><span class="n">p</span><span class="o">.</span><span class="n">as_dict</span><span class="p">()</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">postings</span><span class="p">],</span>
 
            <span class="n">metadata</span><span class="o">=</span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">meta</span><span class="p">)</span>
 
        <span class="p">)</span>
 

	
 
</div></div>
 
<div class="viewcode-block" id="Posting"><a class="viewcode-back" href="../../../../api/accounting.storage.sql.html#accounting.storage.sql.models.Posting">[docs]</a><span class="k">class</span> <span class="nc">Posting</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
 
    <span class="nb">id</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Integer</span><span class="p">(),</span> <span class="n">primary_key</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
 

	
 
    <span class="n">transaction_uuid</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">,</span> <span class="n">db</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s">&#39;transaction.uuid&#39;</span><span class="p">))</span>
 
    <span class="n">transaction</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">relationship</span><span class="p">(</span><span class="s">&#39;Transaction&#39;</span><span class="p">,</span> <span class="n">backref</span><span class="o">=</span><span class="s">&#39;postings&#39;</span><span class="p">)</span>
 

	
 
    <span class="n">account</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">,</span> <span class="n">nullable</span><span class="o">=</span><span class="bp">False</span><span class="p">)</span>
 

	
 
    <span class="n">amount_id</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Integer</span><span class="p">,</span> <span class="n">db</span><span class="o">.</span><span class="n">ForeignKey</span><span class="p">(</span><span class="s">&#39;amount.id&#39;</span><span class="p">))</span>
 
    <span class="n">amount</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">relationship</span><span class="p">(</span><span class="s">&#39;Amount&#39;</span><span class="p">)</span>
 

	
 
    <span class="n">meta</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">)</span>
 

	
 
<div class="viewcode-block" id="Posting.as_dict"><a class="viewcode-back" href="../../../../api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.as_dict">[docs]</a>    <span class="k">def</span> <span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
            <span class="n">account</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">account</span><span class="p">,</span>
 
            <span class="n">amount</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">amount</span><span class="o">.</span><span class="n">as_dict</span><span class="p">(),</span>
 
            <span class="n">metadata</span><span class="o">=</span><span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">meta</span><span class="p">)</span>
 
        <span class="p">)</span>
 

	
 
</div></div>
 
<div class="viewcode-block" id="Amount"><a class="viewcode-back" href="../../../../api/accounting.storage.sql.html#accounting.storage.sql.models.Amount">[docs]</a><span class="k">class</span> <span class="nc">Amount</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Model</span><span class="p">):</span>
 
    <span class="nb">id</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Integer</span><span class="p">,</span> <span class="n">primary_key</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
 
    <span class="n">symbol</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">String</span><span class="p">)</span>
 
    <span class="n">amount</span> <span class="o">=</span> <span class="n">db</span><span class="o">.</span><span class="n">Column</span><span class="p">(</span><span class="n">db</span><span class="o">.</span><span class="n">Numeric</span><span class="p">)</span>
 

	
 
<div class="viewcode-block" id="Amount.as_dict"><a class="viewcode-back" href="../../../../api/accounting.storage.sql.html#accounting.storage.sql.models.Amount.as_dict">[docs]</a>    <span class="k">def</span> <span class="nf">as_dict</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
            <span class="n">symbol</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">symbol</span><span class="p">,</span>
 
            <span class="n">amount</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">amount</span>
 
        <span class="p">)</span></div></div>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../../../accounting.html" >accounting</a> &raquo;</li>
 
          <li><a href="../../storage.html" >accounting.storage</a> &raquo;</li>
 
          <li><a href="../sql.html" >accounting.storage.sql</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/transport.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.transport &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.transport</h1><div class="highlight"><pre>
 
<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
 

	
 
<span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">json</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting.models</span> <span class="kn">import</span> <span class="n">Amount</span><span class="p">,</span> <span class="n">Transaction</span><span class="p">,</span> <span class="n">Posting</span><span class="p">,</span> <span class="n">Account</span>
 

	
 
<div class="viewcode-block" id="AccountingEncoder"><a class="viewcode-back" href="../../api/accounting.html#accounting.transport.AccountingEncoder">[docs]</a><span class="k">class</span> <span class="nc">AccountingEncoder</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">JSONEncoder</span><span class="p">):</span>
 
<div class="viewcode-block" id="AccountingEncoder.default"><a class="viewcode-back" href="../../api/accounting.html#accounting.transport.AccountingEncoder.default">[docs]</a>    <span class="k">def</span> <span class="nf">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">):</span>
 
        <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Account</span><span class="p">):</span>
 
            <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
                <span class="n">__type__</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span>
 
                <span class="n">name</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
 
                <span class="n">amounts</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">amounts</span><span class="p">,</span>
 
                <span class="n">accounts</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">accounts</span>
 
            <span class="p">)</span>
 
        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Transaction</span><span class="p">):</span>
 
            <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
                <span class="n">__type__</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span>
 
                <span class="n">date</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">),</span>
 
                <span class="n">payee</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">payee</span><span class="p">,</span>
 
                <span class="n">postings</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">postings</span><span class="p">,</span>
 
                <span class="n">metadata</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">metadata</span>
 
            <span class="p">)</span>
 
        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Posting</span><span class="p">):</span>
 
            <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
                <span class="n">__type__</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span>
 
                <span class="n">account</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">account</span><span class="p">,</span>
 
                <span class="n">amount</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">amount</span><span class="p">,</span>
 
                <span class="n">metadata</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">metadata</span>
 
            <span class="p">)</span>
 
        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="n">Amount</span><span class="p">):</span>
 
            <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
                <span class="n">__type__</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span>
 
                <span class="n">amount</span><span class="o">=</span><span class="nb">str</span><span class="p">(</span><span class="n">o</span><span class="o">.</span><span class="n">amount</span><span class="p">),</span>
 
                <span class="n">symbol</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">symbol</span>
 
            <span class="p">)</span>
 
        <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">o</span><span class="p">,</span> <span class="ne">Exception</span><span class="p">):</span>
 
            <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span>
 
                <span class="n">__type__</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">__class__</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span>
 
                <span class="n">args</span><span class="o">=</span><span class="n">o</span><span class="o">.</span><span class="n">args</span>
 
            <span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">json</span><span class="o">.</span><span class="n">JSONEncoder</span><span class="o">.</span><span class="n">default</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">o</span><span class="p">)</span>
 
</div></div>
 
<div class="viewcode-block" id="AccountingDecoder"><a class="viewcode-back" href="../../api/accounting.html#accounting.transport.AccountingDecoder">[docs]</a><span class="k">class</span> <span class="nc">AccountingDecoder</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">JSONDecoder</span><span class="p">):</span>
 
    <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 
        <span class="n">json</span><span class="o">.</span><span class="n">JSONDecoder</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">object_hook</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dict_to_object</span><span class="p">)</span>
 

	
 
<div class="viewcode-block" id="AccountingDecoder.dict_to_object"><a class="viewcode-back" href="../../api/accounting.html#accounting.transport.AccountingDecoder.dict_to_object">[docs]</a>    <span class="k">def</span> <span class="nf">dict_to_object</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">d</span><span class="p">):</span>
 
        <span class="k">if</span> <span class="s">&#39;__type__&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">d</span><span class="p">:</span>
 
            <span class="k">return</span> <span class="n">d</span>
 

	
 
        <span class="n">types</span> <span class="o">=</span> <span class="p">{</span><span class="n">c</span><span class="o">.</span><span class="n">__name__</span> <span class="p">:</span> <span class="n">c</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="p">[</span><span class="n">Amount</span><span class="p">,</span> <span class="n">Transaction</span><span class="p">,</span> <span class="n">Posting</span><span class="p">,</span>
 
                                          <span class="n">Account</span><span class="p">]}</span>
 

	
 
        <span class="n">_type</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;__type__&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">if</span> <span class="n">_type</span> <span class="o">==</span> <span class="s">&#39;Transaction&#39;</span><span class="p">:</span>
 
            <span class="n">d</span><span class="p">[</span><span class="s">&#39;date&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">d</span><span class="p">[</span><span class="s">&#39;date&#39;</span><span class="p">],</span> <span class="s">&#39;%Y-%m-</span><span class="si">%d</span><span class="s">&#39;</span><span class="p">)</span>
 

	
 
        <span class="k">return</span> <span class="n">types</span><span class="p">[</span><span class="n">_type</span><span class="p">](</span><span class="o">**</span><span class="n">d</span><span class="p">)</span></div></div>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/accounting/web.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.web &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../../index.html" />
 
    <link rel="up" title="accounting" href="../accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" accesskey="U">accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>Source code for accounting.web</h1><div class="highlight"><pre>
 
<span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">This module contains the high-level webservice logic such as the Flask setup</span>
 
<span class="sd">and the Flask endpoints.</span>
 
<span class="sd">&#39;&#39;&#39;</span>
 
<span class="kn">import</span> <span class="nn">sys</span>
 
<span class="kn">import</span> <span class="nn">logging</span>
 
<span class="kn">import</span> <span class="nn">argparse</span>
 

	
 
<span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">Flask</span><span class="p">,</span> <span class="n">jsonify</span><span class="p">,</span> <span class="n">request</span>
 

	
 
<span class="kn">from</span> <span class="nn">accounting</span> <span class="kn">import</span> <span class="n">Ledger</span>
 
<span class="kn">from</span> <span class="nn">accounting.transport</span> <span class="kn">import</span> <span class="n">AccountingEncoder</span><span class="p">,</span> <span class="n">AccountingDecoder</span>
 
<span class="kn">from</span> <span class="nn">accounting.exceptions</span> <span class="kn">import</span> <span class="n">AccountingException</span>
 
<span class="kn">from</span> <span class="nn">accounting.decorators</span> <span class="kn">import</span> <span class="n">jsonify_exceptions</span>
 

	
 

	
 
<span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="s">&#39;accounting&#39;</span><span class="p">)</span>
 
<span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="o">.</span><span class="n">from_pyfile</span><span class="p">(</span><span class="s">&#39;config.py&#39;</span><span class="p">)</span>
 

	
 
<span class="n">ledger</span> <span class="o">=</span> <span class="bp">None</span>
 

	
 
<span class="nd">@app.before_request</span>
 
<div class="viewcode-block" id="init_ledger"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.init_ledger">[docs]</a><span class="k">def</span> <span class="nf">init_ledger</span><span class="p">():</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    :py:meth:`flask.Flask.before_request`-decorated method that initializes an</span>
 
<span class="sd">    :py:class:`accounting.Ledger` object.</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="k">global</span> <span class="n">ledger</span>
 
    <span class="n">ledger</span> <span class="o">=</span> <span class="n">Ledger</span><span class="p">(</span><span class="n">ledger_file</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s">&#39;LEDGER_FILE&#39;</span><span class="p">])</span>
 

	
 

	
 
<span class="c"># These will convert output from our internal classes to JSON and back</span></div>
 
<span class="n">app</span><span class="o">.</span><span class="n">json_encoder</span> <span class="o">=</span> <span class="n">AccountingEncoder</span>
 
<span class="n">app</span><span class="o">.</span><span class="n">json_decoder</span> <span class="o">=</span> <span class="n">AccountingDecoder</span>
 

	
 

	
 
<span class="nd">@app.route</span><span class="p">(</span><span class="s">&#39;/&#39;</span><span class="p">)</span>
 
<div class="viewcode-block" id="index"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.index">[docs]</a><span class="k">def</span> <span class="nf">index</span><span class="p">():</span>
 
    <span class="sd">&#39;&#39;&#39; Hello World! &#39;&#39;&#39;</span>
 
    <span class="k">return</span> <span class="s">&#39;Hello World!&#39;</span>
 

	
 
</div>
 
<span class="nd">@app.route</span><span class="p">(</span><span class="s">&#39;/balance&#39;</span><span class="p">)</span>
 
<div class="viewcode-block" id="balance_report"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.balance_report">[docs]</a><span class="k">def</span> <span class="nf">balance_report</span><span class="p">():</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    Returns the JSON-serialized result of :meth:`accounting.Ledger.bal`</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="n">report_data</span> <span class="o">=</span> <span class="n">ledger</span><span class="o">.</span><span class="n">bal</span><span class="p">()</span>
 

	
 
    <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">balance_report</span><span class="o">=</span><span class="n">report_data</span><span class="p">)</span>
 
</div>
 
<span class="nd">@app.route</span><span class="p">(</span><span class="s">&#39;/transaction&#39;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;GET&#39;</span><span class="p">])</span>
 
<div class="viewcode-block" id="transaction_get"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.transaction_get">[docs]</a><span class="k">def</span> <span class="nf">transaction_get</span><span class="p">():</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    Returns the JSON-serialized output of :meth:`accounting.Ledger.reg`</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">transactions</span><span class="o">=</span><span class="n">ledger</span><span class="o">.</span><span class="n">reg</span><span class="p">())</span>
 
</div>
 
<span class="nd">@app.route</span><span class="p">(</span><span class="s">&#39;/transaction&#39;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;POST&#39;</span><span class="p">])</span>
 
<span class="nd">@jsonify_exceptions</span>
 
<div class="viewcode-block" id="transaction_post"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.transaction_post">[docs]</a><span class="k">def</span> <span class="nf">transaction_post</span><span class="p">():</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    REST/JSON endpoint for transactions.</span>
 

	
 
<span class="sd">    Current state:</span>
 

	
 
<span class="sd">    Takes a POST request with a ``transactions`` JSON payload and writes it to</span>
 
<span class="sd">    the ledger file.</span>
 

	
 
<span class="sd">    Requires the ``transactions`` payload to be __type__-annotated:</span>
 

	
 
<span class="sd">    .. code-block:: json</span>
 

	
 
<span class="sd">        {</span>
 
<span class="sd">          &quot;transactions&quot;: [</span>
 
<span class="sd">            {</span>
 
<span class="sd">              &quot;__type__&quot;: &quot;Transaction&quot;,</span>
 
<span class="sd">              &quot;date&quot;: &quot;2013-01-01&quot;,</span>
 
<span class="sd">              &quot;payee&quot;: &quot;Kindly T. Donor&quot;,</span>
 
<span class="sd">              &quot;postings&quot;: [</span>
 
<span class="sd">                {</span>
 
<span class="sd">                  &quot;__type__&quot;: &quot;Posting&quot;,</span>
 
<span class="sd">                  &quot;account&quot;: &quot;Income:Foo:Donation&quot;,</span>
 
<span class="sd">                  &quot;amount&quot;: {</span>
 
<span class="sd">                    &quot;__type__&quot;: &quot;Amount&quot;,</span>
 
<span class="sd">                    &quot;amount&quot;: &quot;-100&quot;,</span>
 
<span class="sd">                    &quot;symbol&quot;: &quot;$&quot;</span>
 
<span class="sd">                  }</span>
 
<span class="sd">                },</span>
 
<span class="sd">                {</span>
 
<span class="sd">                  &quot;__type__&quot;: &quot;Posting&quot;,</span>
 
<span class="sd">                  &quot;account&quot;: &quot;Assets:Checking&quot;,</span>
 
<span class="sd">                  &quot;amount&quot;: {</span>
 
<span class="sd">                    &quot;__type__&quot;: &quot;Amount&quot;,</span>
 
<span class="sd">                    &quot;amount&quot;: &quot;100&quot;,</span>
 
<span class="sd">                    &quot;symbol&quot;: &quot;$&quot;</span>
 
<span class="sd">                  }</span>
 
<span class="sd">                }</span>
 
<span class="sd">              ]</span>
 
<span class="sd">            }</span>
 
<span class="sd">        }</span>
 

	
 
<span class="sd">    becomes::</span>
 

	
 
<span class="sd">        2013-01-01 Kindly T. Donor</span>
 
<span class="sd">          Income:Foo:Donation                                         $ -100</span>
 
<span class="sd">          Assets:Checking                                              $ 100</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="n">transactions</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">json</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;transactions&#39;</span><span class="p">)</span>
 

	
 
    <span class="k">if</span> <span class="ow">not</span> <span class="n">transactions</span><span class="p">:</span>
 
        <span class="k">raise</span> <span class="n">AccountingException</span><span class="p">(</span><span class="s">&#39;No transaction data provided&#39;</span><span class="p">)</span>
 

	
 
    <span class="k">for</span> <span class="n">transaction</span> <span class="ow">in</span> <span class="n">transactions</span><span class="p">:</span>
 
        <span class="n">ledger</span><span class="o">.</span><span class="n">add_transaction</span><span class="p">(</span><span class="n">transaction</span><span class="p">)</span>
 

	
 
    <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">foo</span><span class="o">=</span><span class="s">&#39;bar&#39;</span><span class="p">)</span>
 

	
 
</div>
 
<span class="nd">@app.route</span><span class="p">(</span><span class="s">&#39;/parse-json&#39;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s">&#39;POST&#39;</span><span class="p">])</span>
 
<div class="viewcode-block" id="parse_json"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.parse_json">[docs]</a><span class="k">def</span> <span class="nf">parse_json</span><span class="p">():</span>
 
    <span class="sd">r&#39;&#39;&#39;</span>
 
<span class="sd">    Parses a __type__-annotated JSON payload and debug-logs the decoded version</span>
 
<span class="sd">    of it.</span>
 

	
 
<span class="sd">    Example:</span>
 

	
 
<span class="sd">    .. code-block:: bash</span>
 

	
 
<span class="sd">        wget http://127.0.0.1:5000/balance -O balance.json</span>
 
<span class="sd">        curl -X POST -H &#39;Content-Type: application/json&#39; -d @balance.json \</span>
 
<span class="sd">            http://127.0.0.1/parse-json</span>
 
<span class="sd">        # Logging output (linebreaks added for clarity)</span>
 
<span class="sd">        # DEBUG:accounting:json data: {&#39;balance_report&#39;:</span>
 
<span class="sd">        #    [&lt;Account &quot;None&quot; [</span>
 
<span class="sd">        #        &lt;Amount $ 0&gt;, &lt;Amount KARMA 0&gt;]</span>
 
<span class="sd">        #        [&lt;Account &quot;Assets&quot; [</span>
 
<span class="sd">        #            &lt;Amount $ 50&gt;, &lt;Amount KARMA 10&gt;]</span>
 
<span class="sd">        #            [&lt;Account &quot;Assets:Checking&quot; [</span>
 
<span class="sd">        #                &lt;Amount $ 50&gt;] []&gt;,</span>
 
<span class="sd">        #             &lt;Account &quot;Assets:Karma Account&quot; [</span>
 
<span class="sd">        #                &lt;Amount KARMA 10&gt;] []&gt;]&gt;,</span>
 
<span class="sd">        #         &lt;Account &quot;Expenses&quot; [</span>
 
<span class="sd">        #            &lt;Amount $ 500&gt;]</span>
 
<span class="sd">        #            [&lt;Account &quot;Expenses:Blah&quot; [</span>
 
<span class="sd">        #                &lt;Amount $ 250&gt;]</span>
 
<span class="sd">        #                [&lt;Account &quot;Expenses:Blah:Hosting&quot; [</span>
 
<span class="sd">        #                    &lt;Amount $ 250&gt;] []&gt;]&gt;,</span>
 
<span class="sd">        #             &lt;Account &quot;Expenses:Foo&quot; [</span>
 
<span class="sd">        #                &lt;Amount $ 250&gt;] [</span>
 
<span class="sd">        #                &lt;Account &quot;Expenses:Foo:Hosting&quot; [</span>
 
<span class="sd">        #                    &lt;Amount $ 250&gt;] []&gt;]&gt;]&gt;,</span>
 
<span class="sd">        #         &lt;Account &quot;Income&quot; [</span>
 
<span class="sd">        #            &lt;Amount $ -550&gt;,</span>
 
<span class="sd">        #            &lt;Amount KARMA -10&gt;]</span>
 
<span class="sd">        #            [&lt;Account &quot;Income:Donation&quot; [</span>
 
<span class="sd">        #                &lt;Amount $ -50&gt;] []&gt;,</span>
 
<span class="sd">        #             &lt;Account &quot;Income:Foo&quot; [</span>
 
<span class="sd">        #                &lt;Amount $ -500&gt;]</span>
 
<span class="sd">        #                [&lt;Account &quot;Income:Foo:Donation&quot; [</span>
 
<span class="sd">        #                    &lt;Amount $ -500&gt;] []&gt;]&gt;,</span>
 
<span class="sd">        #             &lt;Account &quot;Income:Karma&quot; [</span>
 
<span class="sd">        #             &lt;Amount KARMA -10&gt;] []&gt;]&gt;]&gt;]}</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="n">app</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;json data: </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">request</span><span class="o">.</span><span class="n">json</span><span class="p">)</span>
 
    <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">foo</span><span class="o">=</span><span class="s">&#39;bar&#39;</span><span class="p">)</span>
 

	
 
</div>
 
<span class="nd">@app.route</span><span class="p">(</span><span class="s">&#39;/register&#39;</span><span class="p">)</span>
 
<div class="viewcode-block" id="register_report"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.register_report">[docs]</a><span class="k">def</span> <span class="nf">register_report</span><span class="p">():</span>
 
    <span class="sd">&#39;&#39;&#39;</span>
 
<span class="sd">    Returns the JSON-serialized output of :py:meth:`accounting.Ledger.reg`</span>
 
<span class="sd">    &#39;&#39;&#39;</span>
 
    <span class="n">report_data</span> <span class="o">=</span> <span class="n">ledger</span><span class="o">.</span><span class="n">reg</span><span class="p">()</span>
 

	
 
    <span class="k">return</span> <span class="n">jsonify</span><span class="p">(</span><span class="n">register_report</span><span class="o">=</span><span class="n">report_data</span><span class="p">)</span>
 

	
 
</div>
 
<div class="viewcode-block" id="main"><a class="viewcode-back" href="../../api/accounting.html#accounting.web.main">[docs]</a><span class="k">def</span> <span class="nf">main</span><span class="p">(</span><span class="n">argv</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
 
    <span class="n">prog</span> <span class="o">=</span> <span class="n">__name__</span>
 
    <span class="k">if</span> <span class="n">argv</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
 
        <span class="n">prog</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
 
        <span class="n">argv</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">:]</span>
 

	
 
    <span class="n">parser</span> <span class="o">=</span> <span class="n">argparse</span><span class="o">.</span><span class="n">ArgumentParser</span><span class="p">(</span><span class="n">prog</span><span class="o">=</span><span class="n">prog</span><span class="p">)</span>
 
    <span class="n">parser</span><span class="o">.</span><span class="n">add_argument</span><span class="p">(</span><span class="s">&#39;-v&#39;</span><span class="p">,</span> <span class="s">&#39;--verbosity&#39;</span><span class="p">,</span>
 
                        <span class="n">default</span><span class="o">=</span><span class="s">&#39;INFO&#39;</span><span class="p">,</span>
 
                        <span class="n">help</span><span class="o">=</span><span class="p">(</span><span class="s">&#39;Filter logging output. Possible values:&#39;</span> <span class="o">+</span>
 
                        <span class="s">&#39; CRITICAL, ERROR, WARNING, INFO, DEBUG&#39;</span><span class="p">))</span>
 

	
 
    <span class="n">args</span> <span class="o">=</span> <span class="n">parser</span><span class="o">.</span><span class="n">parse_args</span><span class="p">(</span><span class="n">argv</span><span class="p">)</span>
 

	
 
    <span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="nb">getattr</span><span class="p">(</span><span class="n">logging</span><span class="p">,</span> <span class="n">args</span><span class="o">.</span><span class="n">verbosity</span><span class="p">,</span> <span class="s">&#39;INFO&#39;</span><span class="p">))</span>
 

	
 
    <span class="n">app</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s">&#39;HOST&#39;</span><span class="p">],</span> <span class="n">port</span><span class="o">=</span><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s">&#39;PORT&#39;</span><span class="p">])</span>
 
</div>
 
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;__main__&#39;</span><span class="p">:</span>
 
    <span class="n">main</span><span class="p">()</span>
 
</pre></div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="../index.html" >Module code</a> &raquo;</li>
 
          <li><a href="../accounting.html" >accounting</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_modules/index.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>Overview: module code &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../index.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1>All modules for which code is available</h1>
 
<ul><li><a href="accounting.html">accounting</a></li>
 
<ul><li><a href="accounting/client.html">accounting.client</a></li>
 
<li><a href="accounting/decorators.html">accounting.decorators</a></li>
 
<li><a href="accounting/exceptions.html">accounting.exceptions</a></li>
 
<li><a href="accounting/gtkclient.html">accounting.gtkclient</a></li>
 
<li><a href="accounting/models.html">accounting.models</a></li>
 
<li><a href="accounting/storage.html">accounting.storage</a></li>
 
<ul><li><a href="accounting/storage/ledgercli.html">accounting.storage.ledgercli</a></li>
 
<li><a href="accounting/storage/sql.html">accounting.storage.sql</a></li>
 
<ul><li><a href="accounting/storage/sql/models.html">accounting.storage.sql.models</a></li>
 
</ul></ul><li><a href="accounting/transport.html">accounting.transport</a></li>
 
<li><a href="accounting/web.html">accounting.web</a></li>
 
</ul></ul>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/_static/default.css
Show inline comments
 
/*
 
 * default.css_t
 
 * ~~~~~~~~~~~~~
 
 *
 
 * Sphinx stylesheet -- default theme.
 
 *
 
 * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
 
 * :license: BSD, see LICENSE for details.
 
 *
 
 */
 

	
 
@import url("basic.css");
 

	
 
/* -- page layout ----------------------------------------------------------- */
 

	
 
body {
 
    font-family: sans-serif;
 
    font-family: 'Lucida Grande', Arial, sans-serif;
 
    font-size: 100%;
 
    background-color: #11303d;
 
    background-color: white;
 
    color: #000;
 
    margin: 0;
 
    padding: 0;
 
}
 

	
 
div.document {
 
    background-color: #1c4e63;
 
    background-color: white;
 
}
 

	
 
div.documentwrapper {
 
    float: left;
 
    width: 100%;
 
}
 

	
 
div.bodywrapper {
 
    margin: 0 0 0 230px;
 
}
 

	
 
div.body {
 
    background-color: #ffffff;
 
    color: #000000;
 
    background-color: white;
 
    color: #222222;
 
    padding: 0 20px 30px 20px;
 
}
 

	
 
div.footer {
 
    color: #ffffff;
 
    color: #555555;
 
    width: 100%;
 
    padding: 9px 0 9px 0;
 
    text-align: center;
 
    font-size: 75%;
 
}
 

	
 
div.footer a {
 
    color: #ffffff;
 
    color: #555555;
 
    text-decoration: underline;
 
}
 

	
 
div.related {
 
    background-color: #133f52;
 
    background-color: white;
 
    line-height: 30px;
 
    color: #ffffff;
 
    color: #666666;
 
}
 

	
 
div.related a {
 
    color: #ffffff;
 
    color: #444444;
 
}
 

	
 
div.sphinxsidebar {
 
}
 

	
 
div.sphinxsidebar h3 {
 
    font-family: 'Trebuchet MS', sans-serif;
 
    color: #ffffff;
 
    font-family: 'Lucida Grande', Arial, sans-serif;
 
    color: #444444;
 
    font-size: 1.4em;
 
    font-weight: normal;
 
    margin: 0;
 
    padding: 0;
 
}
 

	
 
div.sphinxsidebar h3 a {
 
    color: #ffffff;
 
    color: #444444;
 
}
 

	
 
div.sphinxsidebar h4 {
 
    font-family: 'Trebuchet MS', sans-serif;
 
    color: #ffffff;
 
    font-family: 'Lucida Grande', Arial, sans-serif;
 
    color: #444444;
 
    font-size: 1.3em;
 
    font-weight: normal;
 
    margin: 5px 0 0 0;
 
    padding: 0;
 
}
 

	
 
div.sphinxsidebar p {
 
    color: #ffffff;
 
    color: #444444;
 
}
 

	
 
div.sphinxsidebar p.topless {
 
    margin: 5px 10px 10px 10px;
 
}
 

	
 
div.sphinxsidebar ul {
 
    margin: 10px;
 
    padding: 0;
 
    color: #ffffff;
 
    color: #444444;
 
}
 

	
 
div.sphinxsidebar a {
 
    color: #98dbcc;
 
    color: #444444;
 
}
 

	
 
div.sphinxsidebar input {
 
    border: 1px solid #98dbcc;
 
    border: 1px solid #444444;
 
    font-family: sans-serif;
 
    font-size: 1em;
 
}
 

	
 

	
 

	
 
/* -- hyperlink styles ------------------------------------------------------ */
 

	
 
a {
 
    color: #355f7c;
 
    color: #0090c0;
 
    text-decoration: none;
 
}
 

	
 
a:visited {
 
    color: #355f7c;
 
    color: #00608f;
 
    text-decoration: none;
 
}
 

	
 
a:hover {
 
    text-decoration: underline;
 
}
 

	
 

	
 

	
 
/* -- body styles ----------------------------------------------------------- */
 

	
 
div.body h1,
 
div.body h2,
 
div.body h3,
 
div.body h4,
 
div.body h5,
 
div.body h6 {
 
    font-family: 'Trebuchet MS', sans-serif;
 
    background-color: #f2f2f2;
 
    font-family: 'Lucida Grande', Arial, sans-serif;
 
    background-color: white;
 
    font-weight: normal;
 
    color: #20435c;
 
    color: #1a1a1a;
 
    border-bottom: 1px solid #ccc;
 
    margin: 20px -20px 10px -20px;
 
    padding: 3px 0 3px 10px;
 
}
 

	
 
div.body h1 { margin-top: 0; font-size: 200%; }
 
div.body h2 { font-size: 160%; }
 
div.body h3 { font-size: 140%; }
 
div.body h4 { font-size: 120%; }
 
div.body h5 { font-size: 110%; }
 
div.body h6 { font-size: 100%; }
 

	
 
a.headerlink {
 
    color: #c60f0f;
 
    color: #aaaaaa;
 
    font-size: 0.8em;
 
    padding: 0 4px 0 4px;
 
    text-decoration: none;
 
}
 

	
 
a.headerlink:hover {
 
    background-color: #c60f0f;
 
    background-color: #aaaaaa;
 
    color: white;
 
}
 

	
 
div.body p, div.body dd, div.body li {
 
    text-align: justify;
 
    line-height: 130%;
 
}
 

	
 
div.admonition p.admonition-title + p {
 
    display: inline;
 
}
 

	
 
div.admonition p {
 
    margin-bottom: 5px;
 
}
 

	
 
div.admonition pre {
 
    margin-bottom: 5px;
 
}
 

	
 
div.admonition ul, div.admonition ol {
 
    margin-bottom: 5px;
 
}
 

	
 
div.note {
 
    background-color: #eee;
 
    border: 1px solid #ccc;
 
}
 

	
 
div.seealso {
 
    background-color: #ffc;
 
    border: 1px solid #ff6;
 
}
 

	
 
div.topic {
 
    background-color: #eee;
 
}
 

	
 
div.warning {
 
    background-color: #ffe4e4;
 
    border: 1px solid #f66;
 
}
 

	
 
p.admonition-title {
 
    display: inline;
 
}
 

	
 
p.admonition-title:after {
 
    content: ":";
 
}
 

	
 
pre {
 
    padding: 5px;
 
    background-color: #eeffcc;
 
    color: #333333;
 
    line-height: 120%;
 
    border: 1px solid #ac9;
 
    border-left: none;
 
    border-right: none;
 
}
 

	
 
tt {
 
    background-color: #ecf0f3;
 
    padding: 0 1px 0 1px;
 
    font-size: 0.95em;
 
}
 

	
 
th {
 
    background-color: #ede;
 
}
 

	
 
.warning tt {
 
    background: #efc2c2;
 
}
 

	
 
.note tt {
 
    background: #d6d6d6;
 
}
 

	
 
.viewcode-back {
 
    font-family: sans-serif;
 
    font-family: 'Lucida Grande', Arial, sans-serif;
 
}
 

	
 
div.viewcode-block:target {
 
    background-color: #f4debf;
 
    border-top: 1px solid #ac9;
 
    border-bottom: 1px solid #ac9;
 
}
...
 
\ No newline at end of file
doc/build/html/_static/pydoctheme.css
Show inline comments
 
new file 100644
 
@import url("default.css");
 

	
 
body {
 
    background-color: white;
 
    margin-left: 1em;
 
    margin-right: 1em;
 
}
 

	
 
div.related {
 
    margin-bottom: 1.2em;
 
    padding: 0.5em 0;
 
    border-top: 1px solid #ccc;
 
    margin-top: 0.5em;
 
}
 

	
 
div.related a:hover {
 
    color: #0095C4;
 
}
 

	
 
div.related:first-child {
 
    border-top: 0;
 
    border-bottom: 1px solid #ccc;
 
}
 

	
 
div.sphinxsidebar {
 
    background-color: #eeeeee;
 
    border-radius: 5px;
 
    line-height: 130%;
 
    font-size: smaller;
 
}
 

	
 
div.sphinxsidebar h3, div.sphinxsidebar h4 {
 
    margin-top: 1.5em;
 
}
 

	
 
div.sphinxsidebarwrapper > h3:first-child {
 
    margin-top: 0.2em;
 
}
 

	
 
div.sphinxsidebarwrapper > ul > li > ul > li {
 
    margin-bottom: 0.4em;
 
}
 

	
 
div.sphinxsidebar a:hover {
 
    color: #0095C4;
 
}
 

	
 
div.sphinxsidebar input {
 
    font-family: 'Lucida Grande',Arial,sans-serif;
 
    border: 1px solid #999999;
 
    font-size: smaller;
 
    border-radius: 3px;
 
}
 

	
 
div.sphinxsidebar input[type=text] {
 
    max-width: 150px;
 
}
 

	
 
div.body {
 
    padding: 0 0 0 1.2em;
 
}
 

	
 
div.body p {
 
    line-height: 140%;
 
}
 

	
 
div.body h1, div.body h2, div.body h3, div.body h4, div.body h5, div.body h6 {
 
    margin: 0;
 
    border: 0;
 
    padding: 0.3em 0;
 
}
 

	
 
div.body hr {
 
    border: 0;
 
    background-color: #ccc;
 
    height: 1px;
 
}
 

	
 
div.body pre {
 
    border-radius: 3px;
 
    border: 1px solid #ac9;
 
}
 

	
 
div.body div.admonition, div.body div.impl-detail {
 
    border-radius: 3px;
 
}
 

	
 
div.body div.impl-detail > p {
 
    margin: 0;
 
}
 

	
 
div.body div.seealso {
 
    border: 1px solid #dddd66;
 
}
 

	
 
div.body a {
 
    color: #00608f;
 
}
 

	
 
div.body a:visited {
 
    color: #30306f;
 
}
 

	
 
div.body a:hover {
 
    color: #00B0E4;
 
}
 

	
 
tt, pre {
 
    font-family: monospace, sans-serif;
 
    font-size: 96.5%;
 
}
 

	
 
div.body tt {
 
    border-radius: 3px;
 
}
 

	
 
div.body tt.descname {
 
    font-size: 120%;
 
}
 

	
 
div.body tt.xref, div.body a tt {
 
    font-weight: normal;
 
}
 

	
 
p.deprecated {
 
    border-radius: 3px;
 
}
 

	
 
table.docutils {
 
    border: 1px solid #ddd;
 
    min-width: 20%;
 
    border-radius: 3px;
 
    margin-top: 10px;
 
    margin-bottom: 10px;
 
}
 

	
 
table.docutils td, table.docutils th {
 
    border: 1px solid #ddd !important;
 
    border-radius: 3px;
 
}
 

	
 
table p, table li {
 
    text-align: left !important;
 
}
 

	
 
table.docutils th {
 
    background-color: #eee;
 
    padding: 0.3em 0.5em;
 
}
 

	
 
table.docutils td {
 
    background-color: white;
 
    padding: 0.3em 0.5em;
 
}
 

	
 
table.footnote, table.footnote td {
 
    border: 0 !important;
 
}
 

	
 
div.footer {
 
    line-height: 150%;
 
    margin-top: -2em;
 
    text-align: right;
 
    width: auto;
 
    margin-right: 10px;
 
}
 

	
 
div.footer a:hover {
 
    color: #0095C4;
 
}
doc/build/html/api/accounting.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting package &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../index.html" />
 
    <link rel="next" title="accounting.storage package" href="accounting.storage.html" />
 
    <link rel="prev" title="Welcome to Accounting API’s documentation!" href="../index.html" /> 
 
    <link rel="prev" title="The Accounting API" href="../README.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.storage.html" title="accounting.storage package"
 
             accesskey="N">next</a> |</li>
 
        <li class="right" >
 
          <a href="../index.html" title="Welcome to Accounting API’s documentation!"
 
          <a href="../README.html" title="The Accounting API"
 
             accesskey="P">previous</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <div class="section" id="accounting-package">
 
<h1>accounting package<a class="headerlink" href="#accounting-package" title="Permalink to this headline">¶</a></h1>
 
<div class="section" id="subpackages">
 
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2>
 
<div class="toctree-wrapper compound">
 
<ul>
 
<li class="toctree-l1"><a class="reference internal" href="accounting.storage.html">accounting.storage package</a><ul>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.html#subpackages">Subpackages</a><ul>
 
<li class="toctree-l3"><a class="reference internal" href="accounting.storage.sql.html">accounting.storage.sql package</a><ul>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.sql.html#submodules">Submodules</a></li>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.sql.html#module-accounting.storage.sql.models">accounting.storage.sql.models module</a></li>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.sql.html#module-accounting.storage.sql">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 
</li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.html#submodules">Submodules</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.html#module-accounting.storage.ledgercli">accounting.storage.ledgercli module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.html#module-accounting.storage">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 
</div>
 
</div>
 
<div class="section" id="submodules">
 
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 
</div>
 
<div class="section" id="module-accounting.client">
 
<span id="accounting-client-module"></span><h2>accounting.client module<a class="headerlink" href="#module-accounting.client" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.client.Client">
 
<em class="property">class </em><tt class="descclassname">accounting.client.</tt><tt class="descname">Client</tt><big>(</big><em>host=None</em>, <em>json_encoder=None</em>, <em>json_decoder=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#Client"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.Client" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
<dl class="method">
 
<dt id="accounting.client.Client.get">
 
<tt class="descname">get</tt><big>(</big><em>path</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#Client.get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.Client.get" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.client.Client.get_balance">
 
<tt class="descname">get_balance</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#Client.get_balance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.Client.get_balance" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.client.Client.get_register">
 
<tt class="descname">get_register</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#Client.get_register"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.Client.get_register" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.client.Client.post">
 
<tt class="descname">post</tt><big>(</big><em>path</em>, <em>payload</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#Client.post"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.Client.post" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.client.Client.simple_transaction">
 
<tt class="descname">simple_transaction</tt><big>(</big><em>from_acc</em>, <em>to_acc</em>, <em>amount</em>, <em>symbol=None</em>, <em>payee=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#Client.simple_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.Client.simple_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.client.main">
 
<tt class="descclassname">accounting.client.</tt><tt class="descname">main</tt><big>(</big><em>argv=None</em>, <em>prog=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.main" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.client.print_balance_accounts">
 
<tt class="descclassname">accounting.client.</tt><tt class="descname">print_balance_accounts</tt><big>(</big><em>accounts</em>, <em>level=0</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#print_balance_accounts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.print_balance_accounts" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.client.print_transactions">
 
<tt class="descclassname">accounting.client.</tt><tt class="descname">print_transactions</tt><big>(</big><em>transactions</em><big>)</big><a class="reference internal" href="../_modules/accounting/client.html#print_transactions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.client.print_transactions" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.config">
 
<span id="accounting-config-module"></span><h2>accounting.config module<a class="headerlink" href="#module-accounting.config" title="Permalink to this headline">¶</a></h2>
 
</div>
 
<div class="section" id="module-accounting.decorators">
 
<span id="accounting-decorators-module"></span><h2>accounting.decorators module<a class="headerlink" href="#module-accounting.decorators" title="Permalink to this headline">¶</a></h2>
 
<dl class="function">
 
<dt id="accounting.decorators.jsonify_exceptions">
 
<tt class="descclassname">accounting.decorators.</tt><tt class="descname">jsonify_exceptions</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="../_modules/accounting/decorators.html#jsonify_exceptions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.decorators.jsonify_exceptions" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Wraps a Flask endpoint and catches any AccountingException-based
 
exceptions which are returned to the client as JSON.</p>
 
</dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.exceptions">
 
<span id="accounting-exceptions-module"></span><h2>accounting.exceptions module<a class="headerlink" href="#module-accounting.exceptions" title="Permalink to this headline">¶</a></h2>
 
<dl class="exception">
 
<dt id="accounting.exceptions.AccountingException">
 
<em class="property">exception </em><tt class="descclassname">accounting.exceptions.</tt><tt class="descname">AccountingException</tt><a class="reference internal" href="../_modules/accounting/exceptions.html#AccountingException"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.exceptions.AccountingException" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.Exception</span></tt></p>
 
<p>Used as a base for exceptions that are returned to the caller via the
 
jsonify_exceptions decorator</p>
 
</dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.gtkclient">
 
<span id="accounting-gtkclient-module"></span><h2>accounting.gtkclient module<a class="headerlink" href="#module-accounting.gtkclient" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.gtkclient.AccountingApplication">
 
<em class="property">class </em><tt class="descclassname">accounting.gtkclient.</tt><tt class="descname">AccountingApplication</tt><a class="reference internal" href="../_modules/accounting/gtkclient.html#AccountingApplication"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.AccountingApplication" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
<dl class="method">
 
<dt id="accounting.gtkclient.AccountingApplication.load_ui">
 
<tt class="descname">load_ui</tt><big>(</big><em>path</em><big>)</big><a class="reference internal" href="../_modules/accounting/gtkclient.html#AccountingApplication.load_ui"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.AccountingApplication.load_ui" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.gtkclient.AccountingApplication.on_about_dialog_response">
 
<tt class="descname">on_about_dialog_response</tt><big>(</big><em>widget</em>, <em>response_type</em><big>)</big><a class="headerlink" href="#accounting.gtkclient.AccountingApplication.on_about_dialog_response" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.gtkclient.AccountingApplication.on_show_about_activate">
 
<tt class="descname">on_show_about_activate</tt><big>(</big><em>widget</em><big>)</big><a class="reference internal" href="../_modules/accounting/gtkclient.html#AccountingApplication.on_show_about_activate"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.AccountingApplication.on_show_about_activate" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.gtkclient.AccountingApplication.on_transaction_refresh_activate">
 
<tt class="descname">on_transaction_refresh_activate</tt><big>(</big><em>widget</em><big>)</big><a class="headerlink" href="#accounting.gtkclient.AccountingApplication.on_transaction_refresh_activate" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.gtkclient.AccountingApplication.on_transaction_view_cursor_changed">
 
<tt class="descname">on_transaction_view_cursor_changed</tt><big>(</big><em>widget</em><big>)</big><a class="headerlink" href="#accounting.gtkclient.AccountingApplication.on_transaction_view_cursor_changed" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.gtkclient.AccountingApplication.on_transactions_loaded">
 
<tt class="descname">on_transactions_loaded</tt><big>(</big><em>transactions</em><big>)</big><a class="reference internal" href="../_modules/accounting/gtkclient.html#AccountingApplication.on_transactions_loaded"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.AccountingApplication.on_transactions_loaded" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.gtkclient.indicate_activity">
 
<tt class="descclassname">accounting.gtkclient.</tt><tt class="descname">indicate_activity</tt><big>(</big><em>func_or_str</em><big>)</big><a class="reference internal" href="../_modules/accounting/gtkclient.html#indicate_activity"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.indicate_activity" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.gtkclient.indicate_activity_done">
 
<tt class="descclassname">accounting.gtkclient.</tt><tt class="descname">indicate_activity_done</tt><big>(</big><em>func</em><big>)</big><a class="reference internal" href="../_modules/accounting/gtkclient.html#indicate_activity_done"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.indicate_activity_done" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.gtkclient.main">
 
<tt class="descclassname">accounting.gtkclient.</tt><tt class="descname">main</tt><big>(</big><em>argv=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/gtkclient.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.gtkclient.main" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.models">
 
<span id="accounting-models-module"></span><h2>accounting.models module<a class="headerlink" href="#module-accounting.models" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.models.Account">
 
<em class="property">class </em><tt class="descclassname">accounting.models.</tt><tt class="descname">Account</tt><big>(</big><em>name=None</em>, <em>amounts=None</em>, <em>accounts=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/models.html#Account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.models.Account" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
</dd></dl>
 

	
 
<dl class="class">
 
<dt id="accounting.models.Amount">
 
<em class="property">class </em><tt class="descclassname">accounting.models.</tt><tt class="descname">Amount</tt><big>(</big><em>amount=None</em>, <em>symbol=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/models.html#Amount"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.models.Amount" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
</dd></dl>
 

	
 
<dl class="class">
 
<dt id="accounting.models.Posting">
 
<em class="property">class </em><tt class="descclassname">accounting.models.</tt><tt class="descname">Posting</tt><big>(</big><em>account=None</em>, <em>amount=None</em>, <em>metadata=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/models.html#Posting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.models.Posting" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
</dd></dl>
 

	
 
<dl class="class">
 
<dt id="accounting.models.Transaction">
 
<em class="property">class </em><tt class="descclassname">accounting.models.</tt><tt class="descname">Transaction</tt><big>(</big><em>id=None</em>, <em>date=None</em>, <em>payee=None</em>, <em>postings=None</em>, <em>metadata=None</em>, <em>_generate_id=False</em><big>)</big><a class="reference internal" href="../_modules/accounting/models.html#Transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.models.Transaction" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
<dl class="method">
 
<dt id="accounting.models.Transaction.generate_id">
 
<tt class="descname">generate_id</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/models.html#Transaction.generate_id"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.models.Transaction.generate_id" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.transport">
 
<span id="accounting-transport-module"></span><h2>accounting.transport module<a class="headerlink" href="#module-accounting.transport" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.transport.AccountingDecoder">
 
<em class="property">class </em><tt class="descclassname">accounting.transport.</tt><tt class="descname">AccountingDecoder</tt><a class="reference internal" href="../_modules/accounting/transport.html#AccountingDecoder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.transport.AccountingDecoder" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <a class="reference external" href="http://flask.pocoo.org/docs/api/#flask.json.JSONDecoder" title="(in Flask v0.10)"><tt class="xref py py-class docutils literal"><span class="pre">flask.json.JSONDecoder</span></tt></a></p>
 
<dl class="method">
 
<dt id="accounting.transport.AccountingDecoder.dict_to_object">
 
<tt class="descname">dict_to_object</tt><big>(</big><em>d</em><big>)</big><a class="reference internal" href="../_modules/accounting/transport.html#AccountingDecoder.dict_to_object"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.transport.AccountingDecoder.dict_to_object" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="class">
 
<dt id="accounting.transport.AccountingEncoder">
 
<em class="property">class </em><tt class="descclassname">accounting.transport.</tt><tt class="descname">AccountingEncoder</tt><big>(</big><em>skipkeys=False</em>, <em>ensure_ascii=True</em>, <em>check_circular=True</em>, <em>allow_nan=True</em>, <em>sort_keys=False</em>, <em>indent=None</em>, <em>separators=None</em>, <em>default=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/transport.html#AccountingEncoder"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.transport.AccountingEncoder" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <a class="reference external" href="http://flask.pocoo.org/docs/api/#flask.json.JSONEncoder" title="(in Flask v0.10)"><tt class="xref py py-class docutils literal"><span class="pre">flask.json.JSONEncoder</span></tt></a></p>
 
<dl class="method">
 
<dt id="accounting.transport.AccountingEncoder.default">
 
<tt class="descname">default</tt><big>(</big><em>o</em><big>)</big><a class="reference internal" href="../_modules/accounting/transport.html#AccountingEncoder.default"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.transport.AccountingEncoder.default" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.web">
 
<span id="accounting-web-module"></span><h2>accounting.web module<a class="headerlink" href="#module-accounting.web" title="Permalink to this headline">¶</a></h2>
 
<p>This module contains the high-level webservice logic such as the Flask setup
 
and the Flask endpoints.</p>
 
<dl class="function">
 
<dt id="accounting.web.index">
 
<tt class="descclassname">accounting.web.</tt><tt class="descname">index</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/web.html#index"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.web.index" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Hello World!</p>
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.web.init_ledger">
 
<tt class="descclassname">accounting.web.</tt><tt class="descname">init_ledger</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/web.html#init_ledger"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.web.init_ledger" title="Permalink to this definition">¶</a></dt>
 
<dd><p><a class="reference external" href="http://flask.pocoo.org/docs/api/#flask.Flask.before_request" title="(in Flask v0.10)"><tt class="xref py py-meth docutils literal"><span class="pre">flask.Flask.before_request()</span></tt></a>-decorated method that initializes an
 
<tt class="xref py py-class docutils literal"><span class="pre">accounting.Ledger</span></tt> object.</p>
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.web.main">
 
<tt class="descclassname">accounting.web.</tt><tt class="descname">main</tt><big>(</big><em>argv=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/web.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.web.main" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.web.transaction_get">
 
<tt class="descclassname">accounting.web.</tt><tt class="descname">transaction_get</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/web.html#transaction_get"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.web.transaction_get" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Returns the JSON-serialized output of <tt class="xref py py-meth docutils literal"><span class="pre">accounting.Ledger.reg()</span></tt></p>
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.web.transaction_post">
 
<tt class="descclassname">accounting.web.</tt><tt class="descname">transaction_post</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/web.html#transaction_post"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.web.transaction_post" title="Permalink to this definition">¶</a></dt>
 
<dd><p>REST/JSON endpoint for transactions.</p>
 
<p>Current state:</p>
 
<p>Takes a POST request with a <tt class="docutils literal"><span class="pre">transactions</span></tt> JSON payload and writes it to
 
the ledger file.</p>
 
<p>Requires the <tt class="docutils literal"><span class="pre">transactions</span></tt> payload to be __type__-annotated:</p>
 
<div class="highlight-json"><pre>{
 
  &quot;transactions&quot;: [
 
    {
 
      &quot;__type__&quot;: &quot;Transaction&quot;,
 
      &quot;date&quot;: &quot;2013-01-01&quot;,
 
      &quot;payee&quot;: &quot;Kindly T. Donor&quot;,
 
      &quot;postings&quot;: [
 
        {
 
          &quot;__type__&quot;: &quot;Posting&quot;,
 
          &quot;account&quot;: &quot;Income:Foo:Donation&quot;,
 
          &quot;amount&quot;: {
 
            &quot;__type__&quot;: &quot;Amount&quot;,
 
            &quot;amount&quot;: &quot;-100&quot;,
 
            &quot;symbol&quot;: &quot;$&quot;
 
          }
 
        },
 
        {
 
          &quot;__type__&quot;: &quot;Posting&quot;,
 
          &quot;account&quot;: &quot;Assets:Checking&quot;,
 
          &quot;amount&quot;: {
 
            &quot;__type__&quot;: &quot;Amount&quot;,
 
            &quot;amount&quot;: &quot;100&quot;,
 
            &quot;symbol&quot;: &quot;$&quot;
 
          }
 
        }
 
      ]
 
    }
 
}</pre>
 
</div>
 
<p>becomes:</p>
 
<div class="highlight-python"><pre>2013-01-01 Kindly T. Donor
 
  Income:Foo:Donation                                         $ -100
 
  Assets:Checking                                              $ 100</pre>
 
</div>
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.web.transaction_update">
 
<tt class="descclassname">accounting.web.</tt><tt class="descname">transaction_update</tt><big>(</big><em>transaction_id=None</em><big>)</big><a class="headerlink" href="#accounting.web.transaction_update" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting">
 
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-accounting" title="Permalink to this headline">¶</a></h2>
 
</div>
 
</div>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
  <h3><a href="../index.html">Table Of Contents</a></h3>
 
  <ul>
 
<li><a class="reference internal" href="#">accounting package</a><ul>
 
<li><a class="reference internal" href="#subpackages">Subpackages</a><ul>
 
</ul>
 
</li>
 
<li><a class="reference internal" href="#submodules">Submodules</a></li>
 
<li><a class="reference internal" href="#module-accounting.client">accounting.client module</a></li>
 
<li><a class="reference internal" href="#module-accounting.config">accounting.config module</a></li>
 
<li><a class="reference internal" href="#module-accounting.decorators">accounting.decorators module</a></li>
 
<li><a class="reference internal" href="#module-accounting.exceptions">accounting.exceptions module</a></li>
 
<li><a class="reference internal" href="#module-accounting.gtkclient">accounting.gtkclient module</a></li>
 
<li><a class="reference internal" href="#module-accounting.models">accounting.models module</a></li>
 
<li><a class="reference internal" href="#module-accounting.transport">accounting.transport module</a></li>
 
<li><a class="reference internal" href="#module-accounting.web">accounting.web module</a></li>
 
<li><a class="reference internal" href="#module-accounting">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 

	
 
  <h4>Previous topic</h4>
 
  <p class="topless"><a href="../index.html"
 
                        title="previous chapter">Welcome to Accounting API&#8217;s documentation!</a></p>
 
  <p class="topless"><a href="../README.html"
 
                        title="previous chapter">The Accounting API</a></p>
 
  <h4>Next topic</h4>
 
  <p class="topless"><a href="accounting.storage.html"
 
                        title="next chapter">accounting.storage package</a></p>
 
  <h3>This Page</h3>
 
  <ul class="this-page-menu">
 
    <li><a href="../_sources/api/accounting.txt"
 
           rel="nofollow">Show Source</a></li>
 
  </ul>
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.storage.html" title="accounting.storage package"
 
             >next</a> |</li>
 
        <li class="right" >
 
          <a href="../index.html" title="Welcome to Accounting API’s documentation!"
 
          <a href="../README.html" title="The Accounting API"
 
             >previous</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/api/accounting.storage.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.storage package &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../index.html" />
 
    <link rel="up" title="accounting package" href="accounting.html" />
 
    <link rel="next" title="accounting.storage.sql package" href="accounting.storage.sql.html" />
 
    <link rel="prev" title="accounting package" href="accounting.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.storage.sql.html" title="accounting.storage.sql package"
 
             accesskey="N">next</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.html" title="accounting package"
 
             accesskey="P">previous</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="accounting.html" accesskey="U">accounting package</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <div class="section" id="accounting-storage-package">
 
<h1>accounting.storage package<a class="headerlink" href="#accounting-storage-package" title="Permalink to this headline">¶</a></h1>
 
<div class="section" id="subpackages">
 
<h2>Subpackages<a class="headerlink" href="#subpackages" title="Permalink to this headline">¶</a></h2>
 
<div class="toctree-wrapper compound">
 
<ul>
 
<li class="toctree-l1"><a class="reference internal" href="accounting.storage.sql.html">accounting.storage.sql package</a><ul>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.sql.html#submodules">Submodules</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.sql.html#module-accounting.storage.sql.models">accounting.storage.sql.models module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.storage.sql.html#module-accounting.storage.sql">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 
</div>
 
</div>
 
<div class="section" id="submodules">
 
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 
</div>
 
<div class="section" id="module-accounting.storage.ledgercli">
 
<span id="accounting-storage-ledgercli-module"></span><h2>accounting.storage.ledgercli module<a class="headerlink" href="#module-accounting.storage.ledgercli" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.storage.ledgercli.Ledger">
 
<em class="property">class </em><tt class="descclassname">accounting.storage.ledgercli.</tt><tt class="descname">Ledger</tt><big>(</big><em>app=None</em>, <em>ledger_file=None</em>, <em>ledger_bin=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <a class="reference internal" href="#accounting.storage.Storage" title="accounting.storage.Storage"><tt class="xref py py-class docutils literal"><span class="pre">accounting.storage.Storage</span></tt></a></p>
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.add_transaction">
 
<tt class="descname">add_transaction</tt><big>(</big><em>transaction</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.add_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.add_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Writes a transaction to the ledger file by opening it in &#8216;ab&#8217; mode and
 
writing a ledger transaction based on the
 
<a class="reference internal" href="accounting.html#accounting.models.Transaction" title="accounting.models.Transaction"><tt class="xref py py-class docutils literal"><span class="pre">Transaction</span></tt></a> instance in
 
<tt class="xref py py-data docutils literal"><span class="pre">transaction</span></tt>.</p>
 
</dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.assemble_arguments">
 
<tt class="descname">assemble_arguments</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.assemble_arguments"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.assemble_arguments" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Returns a list of arguments suitable for <a class="reference external" href="http://docs.python.org/3.3/library/subprocess.html#subprocess.Popen" title="(in Python v3.3)"><tt class="xref py py-class docutils literal"><span class="pre">subprocess.Popen</span></tt></a>
 
based on <tt class="xref py py-attr docutils literal"><span class="pre">self.ledger_bin</span></tt> and <tt class="xref py py-attr docutils literal"><span class="pre">self.ledger_file</span></tt>.</p>
 
</dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.bal">
 
<tt class="descname">bal</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.bal"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.bal" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.delete_transaction">
 
<tt class="descname">delete_transaction</tt><big>(</big><em>transaction_id</em><big>)</big><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.delete_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.get_process">
 
<tt class="descname">get_process</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.get_process"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.get_process" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Returns <tt class="xref py py-attr docutils literal"><span class="pre">self.ledger_process</span></tt> if it evaluates to <tt class="docutils literal"><span class="pre">True</span></tt>. If
 
<tt class="xref py py-attr docutils literal"><span class="pre">self.ledger_process</span></tt> is not set the result of
 
<a class="reference internal" href="#accounting.storage.ledgercli.Ledger.init_process" title="accounting.storage.ledgercli.Ledger.init_process"><tt class="xref py py-meth docutils literal"><span class="pre">self.init_process()</span></tt></a> is returned.</p>
 
</dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.get_transaction">
 
<tt class="descname">get_transaction</tt><big>(</big><em>transaction_id</em><big>)</big><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.get_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.get_transactions">
 
<tt class="descname">get_transactions</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.get_transactions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.get_transactions" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.init_process">
 
<tt class="descname">init_process</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.init_process"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.init_process" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Creates a new (presumably) ledger subprocess based on the args from
 
<a class="reference internal" href="#accounting.storage.ledgercli.Ledger.assemble_arguments" title="accounting.storage.ledgercli.Ledger.assemble_arguments"><tt class="xref py py-meth docutils literal"><span class="pre">Ledger.assemble_arguments()</span></tt></a> and then runs
 
<a class="reference internal" href="#accounting.storage.ledgercli.Ledger.read_until_prompt" title="accounting.storage.ledgercli.Ledger.read_until_prompt"><tt class="xref py py-meth docutils literal"><span class="pre">Ledger.read_until_prompt()</span></tt></a> once (which should return the banner
 
text) and discards the output.</p>
 
</dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.locked_process">
 
<tt class="descname">locked_process</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.locked_process"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.locked_process" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Context manager that checks that the ledger process is not already
 
locked, then &#8220;locks&#8221; the process and yields the process handle and
 
unlocks the process when execution is returned.</p>
 
<p>Since this decorated as a <a class="reference external" href="http://docs.python.org/3.3/library/contextlib.html#contextlib.contextmanager" title="(in Python v3.3)"><tt class="xref py py-func docutils literal"><span class="pre">contextlib.contextmanager()</span></tt></a> the
 
recommended use is with the <tt class="docutils literal"><span class="pre">with</span></tt>-statement.</p>
 
<div class="highlight-python"><div class="highlight"><pre><span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">locked_process</span><span class="p">()</span> <span class="k">as</span> <span class="n">p</span><span class="p">:</span>
 
    <span class="n">p</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">b</span><span class="s">&#39;bal</span><span class="se">\n</span><span class="s">&#39;</span><span class="p">)</span>
 

	
 
    <span class="n">output</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">read_until_prompt</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
 
</pre></div>
 
</div>
 
</dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.read_until_prompt">
 
<tt class="descname">read_until_prompt</tt><big>(</big><em>process</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.read_until_prompt"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.read_until_prompt" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Reads from the subprocess instance <tt class="xref py py-data docutils literal"><span class="pre">process</span></tt> until it finds a
 
combination of <tt class="docutils literal"><span class="pre">\n]\x20</span></tt> (the prompt), then returns the output
 
without the prompt.</p>
 
</dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.reg">
 
<tt class="descname">reg</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.reg"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.reg" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.send_command">
 
<tt class="descname">send_command</tt><big>(</big><em>command</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.send_command"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.send_command" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.ledgercli.Ledger.update_transaction">
 
<tt class="descname">update_transaction</tt><big>(</big><em>transaction</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#Ledger.update_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.Ledger.update_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="function">
 
<dt id="accounting.storage.ledgercli.main">
 
<tt class="descclassname">accounting.storage.ledgercli.</tt><tt class="descname">main</tt><big>(</big><em>argv=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/ledgercli.html#main"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.ledgercli.main" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.storage">
 
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-accounting.storage" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.storage.Storage">
 
<em class="property">class </em><tt class="descclassname">accounting.storage.</tt><tt class="descname">Storage</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage.html#Storage"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.Storage" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">builtins.object</span></tt></p>
 
<p>ABC for accounting storage</p>
 
<dl class="method">
 
<dt id="accounting.storage.Storage.add_transaction">
 
<tt class="descname">add_transaction</tt><big>(</big><em>transaction</em><big>)</big><a class="headerlink" href="#accounting.storage.Storage.add_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.Storage.get_account">
 
<tt class="descname">get_account</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage.html#Storage.get_account"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.Storage.get_account" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.Storage.get_accounts">
 
<tt class="descname">get_accounts</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage.html#Storage.get_accounts"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.Storage.get_accounts" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.Storage.get_transaction">
 
<tt class="descname">get_transaction</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage.html#Storage.get_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.Storage.get_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.Storage.get_transactions">
 
<tt class="descname">get_transactions</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage.html#Storage.get_transactions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.Storage.get_transactions" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.Storage.reverse_transaction">
 
<tt class="descname">reverse_transaction</tt><big>(</big><em>transaction_id</em><big>)</big><a class="headerlink" href="#accounting.storage.Storage.reverse_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.Storage.update_transaction">
 
<tt class="descname">update_transaction</tt><big>(</big><em>transaction</em><big>)</big><a class="headerlink" href="#accounting.storage.Storage.update_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="exception">
 
<dt id="accounting.storage.TransactionNotFound">
 
<em class="property">exception </em><tt class="descclassname">accounting.storage.</tt><tt class="descname">TransactionNotFound</tt><a class="headerlink" href="#accounting.storage.TransactionNotFound" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <a class="reference internal" href="accounting.html#accounting.exceptions.AccountingException" title="accounting.exceptions.AccountingException"><tt class="xref py py-class docutils literal"><span class="pre">accounting.exceptions.AccountingException</span></tt></a></p>
 
</dd></dl>
 

	
 
</div>
 
</div>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
  <h3><a href="../index.html">Table Of Contents</a></h3>
 
  <ul>
 
<li><a class="reference internal" href="#">accounting.storage package</a><ul>
 
<li><a class="reference internal" href="#subpackages">Subpackages</a><ul>
 
</ul>
 
</li>
 
<li><a class="reference internal" href="#submodules">Submodules</a></li>
 
<li><a class="reference internal" href="#module-accounting.storage.ledgercli">accounting.storage.ledgercli module</a></li>
 
<li><a class="reference internal" href="#module-accounting.storage">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 

	
 
  <h4>Previous topic</h4>
 
  <p class="topless"><a href="accounting.html"
 
                        title="previous chapter">accounting package</a></p>
 
  <h4>Next topic</h4>
 
  <p class="topless"><a href="accounting.storage.sql.html"
 
                        title="next chapter">accounting.storage.sql package</a></p>
 
  <h3>This Page</h3>
 
  <ul class="this-page-menu">
 
    <li><a href="../_sources/api/accounting.storage.txt"
 
           rel="nofollow">Show Source</a></li>
 
  </ul>
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.storage.sql.html" title="accounting.storage.sql package"
 
             >next</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.html" title="accounting package"
 
             >previous</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="accounting.html" >accounting package</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/api/accounting.storage.sql.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting.storage.sql package &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../index.html" />
 
    <link rel="up" title="accounting.storage package" href="accounting.storage.html" />
 
    <link rel="prev" title="accounting.storage package" href="accounting.storage.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.storage.html" title="accounting.storage package"
 
             accesskey="P">previous</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="accounting.html" >accounting package</a> &raquo;</li>
 
          <li><a href="accounting.storage.html" accesskey="U">accounting.storage package</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <div class="section" id="accounting-storage-sql-package">
 
<h1>accounting.storage.sql package<a class="headerlink" href="#accounting-storage-sql-package" title="Permalink to this headline">¶</a></h1>
 
<div class="section" id="submodules">
 
<h2>Submodules<a class="headerlink" href="#submodules" title="Permalink to this headline">¶</a></h2>
 
</div>
 
<div class="section" id="module-accounting.storage.sql.models">
 
<span id="accounting-storage-sql-models-module"></span><h2>accounting.storage.sql.models module<a class="headerlink" href="#module-accounting.storage.sql.models" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.storage.sql.models.Amount">
 
<em class="property">class </em><tt class="descclassname">accounting.storage.sql.models.</tt><tt class="descname">Amount</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql/models.html#Amount"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.models.Amount" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">flask_sqlalchemy.Model</span></tt></p>
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Amount.amount">
 
<tt class="descname">amount</tt><a class="headerlink" href="#accounting.storage.sql.models.Amount.amount" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.sql.models.Amount.as_dict">
 
<tt class="descname">as_dict</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql/models.html#Amount.as_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.models.Amount.as_dict" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Amount.id">
 
<tt class="descname">id</tt><a class="headerlink" href="#accounting.storage.sql.models.Amount.id" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Amount.symbol">
 
<tt class="descname">symbol</tt><a class="headerlink" href="#accounting.storage.sql.models.Amount.symbol" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="class">
 
<dt id="accounting.storage.sql.models.Posting">
 
<em class="property">class </em><tt class="descclassname">accounting.storage.sql.models.</tt><tt class="descname">Posting</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql/models.html#Posting"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.models.Posting" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">flask_sqlalchemy.Model</span></tt></p>
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.account">
 
<tt class="descname">account</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.account" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.amount">
 
<tt class="descname">amount</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.amount" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.amount_id">
 
<tt class="descname">amount_id</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.amount_id" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.sql.models.Posting.as_dict">
 
<tt class="descname">as_dict</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql/models.html#Posting.as_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.models.Posting.as_dict" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.id">
 
<tt class="descname">id</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.id" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.meta">
 
<tt class="descname">meta</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.meta" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.transaction">
 
<tt class="descname">transaction</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Posting.transaction_uuid">
 
<tt class="descname">transaction_uuid</tt><a class="headerlink" href="#accounting.storage.sql.models.Posting.transaction_uuid" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
<dl class="class">
 
<dt id="accounting.storage.sql.models.Transaction">
 
<em class="property">class </em><tt class="descclassname">accounting.storage.sql.models.</tt><tt class="descname">Transaction</tt><big>(</big><em>**kwargs</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql/models.html#Transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.models.Transaction" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <tt class="xref py py-class docutils literal"><span class="pre">flask_sqlalchemy.Model</span></tt></p>
 
<dl class="method">
 
<dt id="accounting.storage.sql.models.Transaction.as_dict">
 
<tt class="descname">as_dict</tt><big>(</big><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql/models.html#Transaction.as_dict"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.models.Transaction.as_dict" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Transaction.date">
 
<tt class="descname">date</tt><a class="headerlink" href="#accounting.storage.sql.models.Transaction.date" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Transaction.id">
 
<tt class="descname">id</tt><a class="headerlink" href="#accounting.storage.sql.models.Transaction.id" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Transaction.meta">
 
<tt class="descname">meta</tt><a class="headerlink" href="#accounting.storage.sql.models.Transaction.meta" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Transaction.payee">
 
<tt class="descname">payee</tt><a class="headerlink" href="#accounting.storage.sql.models.Transaction.payee" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="attribute">
 
<dt id="accounting.storage.sql.models.Transaction.uuid">
 
<tt class="descname">uuid</tt><a class="headerlink" href="#accounting.storage.sql.models.Transaction.uuid" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
</div>
 
<div class="section" id="module-accounting.storage.sql">
 
<span id="module-contents"></span><h2>Module contents<a class="headerlink" href="#module-accounting.storage.sql" title="Permalink to this headline">¶</a></h2>
 
<dl class="class">
 
<dt id="accounting.storage.sql.SQLStorage">
 
<em class="property">class </em><tt class="descclassname">accounting.storage.sql.</tt><tt class="descname">SQLStorage</tt><big>(</big><em>app=None</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql.html#SQLStorage"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.SQLStorage" title="Permalink to this definition">¶</a></dt>
 
<dd><p>Bases: <a class="reference internal" href="accounting.storage.html#accounting.storage.Storage" title="accounting.storage.Storage"><tt class="xref py py-class docutils literal"><span class="pre">accounting.storage.Storage</span></tt></a></p>
 
<dl class="method">
 
<dt id="accounting.storage.sql.SQLStorage.add_transaction">
 
<tt class="descname">add_transaction</tt><big>(</big><em>transaction</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql.html#SQLStorage.add_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.SQLStorage.add_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.sql.SQLStorage.get_transactions">
 
<tt class="descname">get_transactions</tt><big>(</big><em>*args</em>, <em>**kw</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql.html#SQLStorage.get_transactions"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.SQLStorage.get_transactions" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
<dl class="method">
 
<dt id="accounting.storage.sql.SQLStorage.update_transaction">
 
<tt class="descname">update_transaction</tt><big>(</big><em>transaction</em><big>)</big><a class="reference internal" href="../_modules/accounting/storage/sql.html#SQLStorage.update_transaction"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#accounting.storage.sql.SQLStorage.update_transaction" title="Permalink to this definition">¶</a></dt>
 
<dd></dd></dl>
 

	
 
</dd></dl>
 

	
 
</div>
 
</div>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
  <h3><a href="../index.html">Table Of Contents</a></h3>
 
  <ul>
 
<li><a class="reference internal" href="#">accounting.storage.sql package</a><ul>
 
<li><a class="reference internal" href="#submodules">Submodules</a></li>
 
<li><a class="reference internal" href="#module-accounting.storage.sql.models">accounting.storage.sql.models module</a></li>
 
<li><a class="reference internal" href="#module-accounting.storage.sql">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 

	
 
  <h4>Previous topic</h4>
 
  <p class="topless"><a href="accounting.storage.html"
 
                        title="previous chapter">accounting.storage package</a></p>
 
  <h3>This Page</h3>
 
  <ul class="this-page-menu">
 
    <li><a href="../_sources/api/accounting.storage.sql.txt"
 
           rel="nofollow">Show Source</a></li>
 
  </ul>
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="accounting.storage.html" title="accounting.storage package"
 
             >previous</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li>
 
          <li><a href="accounting.html" >accounting package</a> &raquo;</li>
 
          <li><a href="accounting.storage.html" >accounting.storage package</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/api/modules.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>accounting &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    '../',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="../index.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <div class="section" id="accounting">
 
<h1>accounting<a class="headerlink" href="#accounting" title="Permalink to this headline">¶</a></h1>
 
<div class="toctree-wrapper compound">
 
<ul>
 
<li class="toctree-l1"><a class="reference internal" href="accounting.html">accounting package</a><ul>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#subpackages">Subpackages</a><ul>
 
<li class="toctree-l3"><a class="reference internal" href="accounting.storage.html">accounting.storage package</a><ul>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.html#subpackages">Subpackages</a></li>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.html#submodules">Submodules</a></li>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.html#module-accounting.storage.ledgercli">accounting.storage.ledgercli module</a></li>
 
<li class="toctree-l4"><a class="reference internal" href="accounting.storage.html#module-accounting.storage">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 
</li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#submodules">Submodules</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.client">accounting.client module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.config">accounting.config module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.decorators">accounting.decorators module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.exceptions">accounting.exceptions module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.gtkclient">accounting.gtkclient module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.models">accounting.models module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.transport">accounting.transport module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting.web">accounting.web module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="accounting.html#module-accounting">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 
</div>
 
</div>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
  <h3>This Page</h3>
 
  <ul class="this-page-menu">
 
    <li><a href="../_sources/api/modules.txt"
 
           rel="nofollow">Show Source</a></li>
 
  </ul>
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="../search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="../genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="../py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="../index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/genindex.html
Show inline comments
 

	
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>Index &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    './',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="_static/jquery.js"></script>
 
    <script type="text/javascript" src="_static/underscore.js"></script>
 
    <script type="text/javascript" src="_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="index.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="#" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 

	
 
<h1 id="index">Index</h1>
 

	
 
<div class="genindex-jumpbox">
 
 <a href="#A"><strong>A</strong></a>
 
 | <a href="#B"><strong>B</strong></a>
 
 | <a href="#C"><strong>C</strong></a>
 
 | <a href="#D"><strong>D</strong></a>
 
 | <a href="#G"><strong>G</strong></a>
 
 | <a href="#I"><strong>I</strong></a>
 
 | <a href="#J"><strong>J</strong></a>
 
 | <a href="#L"><strong>L</strong></a>
 
 | <a href="#M"><strong>M</strong></a>
 
 | <a href="#O"><strong>O</strong></a>
 
 | <a href="#P"><strong>P</strong></a>
 
 | <a href="#R"><strong>R</strong></a>
 
 | <a href="#S"><strong>S</strong></a>
 
 | <a href="#T"><strong>T</strong></a>
 
 | <a href="#U"><strong>U</strong></a>
 
 
 
</div>
 
<h2 id="A">A</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.account">account (accounting.storage.sql.models.Posting attribute)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.models.Account">Account (class in accounting.models)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting">accounting (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.client">accounting.client (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.config">accounting.config (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.decorators">accounting.decorators (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.exceptions">accounting.exceptions (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.gtkclient">accounting.gtkclient (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.models">accounting.models (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#module-accounting.storage">accounting.storage (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#module-accounting.storage.ledgercli">accounting.storage.ledgercli (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.sql.html#module-accounting.storage.sql">accounting.storage.sql (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.sql.html#module-accounting.storage.sql.models">accounting.storage.sql.models (module)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#module-accounting.transport">accounting.transport (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#module-accounting.web">accounting.web (module)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication">AccountingApplication (class in accounting.gtkclient)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.transport.AccountingDecoder">AccountingDecoder (class in accounting.transport)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.transport.AccountingEncoder">AccountingEncoder (class in accounting.transport)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.exceptions.AccountingException">AccountingException</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.add_transaction">add_transaction() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage.add_transaction">(accounting.storage.Storage method)</a>
 
  </dt>
 

	
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage.add_transaction">(accounting.storage.sql.SQLStorage method)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Amount.amount">amount (accounting.storage.sql.models.Amount attribute)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.amount">(accounting.storage.sql.models.Posting attribute)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
      
 
  <dt><a href="api/accounting.html#accounting.models.Amount">Amount (class in accounting.models)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Amount">(class in accounting.storage.sql.models)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.amount_id">amount_id (accounting.storage.sql.models.Posting attribute)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Amount.as_dict">as_dict() (accounting.storage.sql.models.Amount method)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.as_dict">(accounting.storage.sql.models.Posting method)</a>
 
  </dt>
 

	
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction.as_dict">(accounting.storage.sql.models.Transaction method)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.assemble_arguments">assemble_arguments() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="B">B</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.bal">bal() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="C">C</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.client.Client">Client (class in accounting.client)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="D">D</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction.date">date (accounting.storage.sql.models.Transaction attribute)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.transport.AccountingEncoder.default">default() (accounting.transport.AccountingEncoder method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.delete_transaction">delete_transaction() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.transport.AccountingDecoder.dict_to_object">dict_to_object() (accounting.transport.AccountingDecoder method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="G">G</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.models.Transaction.generate_id">generate_id() (accounting.models.Transaction method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.client.Client.get">get() (accounting.client.Client method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage.get_account">get_account() (accounting.storage.Storage method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage.get_accounts">get_accounts() (accounting.storage.Storage method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.client.Client.get_balance">get_balance() (accounting.client.Client method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.get_process">get_process() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.client.Client.get_register">get_register() (accounting.client.Client method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.get_transaction">get_transaction() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage.get_transaction">(accounting.storage.Storage method)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.get_transactions">get_transactions() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage.get_transactions">(accounting.storage.Storage method)</a>
 
  </dt>
 

	
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage.get_transactions">(accounting.storage.sql.SQLStorage method)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="I">I</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Amount.id">id (accounting.storage.sql.models.Amount attribute)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.id">(accounting.storage.sql.models.Posting attribute)</a>
 
  </dt>
 

	
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction.id">(accounting.storage.sql.models.Transaction attribute)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
      
 
  <dt><a href="api/accounting.html#accounting.web.index">index() (in module accounting.web)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.indicate_activity">indicate_activity() (in module accounting.gtkclient)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.indicate_activity_done">indicate_activity_done() (in module accounting.gtkclient)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.web.init_ledger">init_ledger() (in module accounting.web)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.init_process">init_process() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="J">J</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.decorators.jsonify_exceptions">jsonify_exceptions() (in module accounting.decorators)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="L">L</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger">Ledger (class in accounting.storage.ledgercli)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication.load_ui">load_ui() (accounting.gtkclient.AccountingApplication method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.locked_process">locked_process() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="M">M</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.client.main">main() (in module accounting.client)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.html#accounting.gtkclient.main">(in module accounting.gtkclient)</a>
 
  </dt>
 

	
 
        
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.main">(in module accounting.storage.ledgercli)</a>
 
  </dt>
 

	
 
        
 
  <dt><a href="api/accounting.html#accounting.web.main">(in module accounting.web)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting.meta">meta (accounting.storage.sql.models.Posting attribute)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction.meta">(accounting.storage.sql.models.Transaction attribute)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="O">O</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication.on_about_dialog_response">on_about_dialog_response() (accounting.gtkclient.AccountingApplication method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication.on_show_about_activate">on_show_about_activate() (accounting.gtkclient.AccountingApplication method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication.on_transaction_refresh_activate">on_transaction_refresh_activate() (accounting.gtkclient.AccountingApplication method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication.on_transaction_view_cursor_changed">on_transaction_view_cursor_changed() (accounting.gtkclient.AccountingApplication method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.gtkclient.AccountingApplication.on_transactions_loaded">on_transactions_loaded() (accounting.gtkclient.AccountingApplication method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="P">P</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Transaction.payee">payee (accounting.storage.sql.models.Transaction attribute)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.client.Client.post">post() (accounting.client.Client method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.models.Posting">Posting (class in accounting.models)</a>
 
  </dt>
 

	
 
      <dd><dl>
 
        
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.models.Posting">(class in accounting.storage.sql.models)</a>
 
  </dt>
 

	
 
      </dl></dd>
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.html#accounting.client.print_balance_accounts">print_balance_accounts() (in module accounting.client)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.client.print_transactions">print_transactions() (in module accounting.client)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="R">R</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.read_until_prompt">read_until_prompt() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.reg">reg() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage.reverse_transaction">reverse_transaction() (accounting.storage.Storage method)</a>
 
  </dt>
 

	
 
  </dl></td>
 
</tr></table>
 

	
 
<h2 id="S">S</h2>
 
<table style="width: 100%" class="indextable genindextable"><tr>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.ledgercli.Ledger.send_command">send_command() (accounting.storage.ledgercli.Ledger method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.html#accounting.client.Client.simple_transaction">simple_transaction() (accounting.client.Client method)</a>
 
  </dt>
 

	
 
      
 
  <dt><a href="api/accounting.storage.sql.html#accounting.storage.sql.SQLStorage">SQLStorage (class in accounting.storage.sql)</a>
 
  </dt>
 

	
 
  </dl></td>
 
  <td style="width: 33%" valign="top"><dl>
 
      
 
  <dt><a href="api/accounting.storage.html#accounting.storage.Storage">Storage (class in accounting.storage)</a>
 
  </dt>
 

	
 
      
doc/build/html/index.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>Welcome to Accounting API’s documentation! &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    './',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="_static/jquery.js"></script>
 
    <script type="text/javascript" src="_static/underscore.js"></script>
 
    <script type="text/javascript" src="_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="#" />
 
    <link rel="next" title="The Accounting API" href="README.html" /> 
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="README.html" title="The Accounting API"
 
             accesskey="N">next</a> |</li>
 
        <li><a href="#">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <div class="section" id="welcome-to-accounting-api-s-documentation">
 
<h1>Welcome to Accounting API&#8217;s documentation!<a class="headerlink" href="#welcome-to-accounting-api-s-documentation" title="Permalink to this headline">¶</a></h1>
 
<p>Contents:</p>
 
<div class="toctree-wrapper compound">
 
<ul>
 
<li class="toctree-l1"><a class="reference internal" href="README.html">The Accounting API</a><ul>
 
<li class="toctree-l2"><a class="reference internal" href="README.html#dependencies">Dependencies</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="README.html#installation-i-e-development-setup">Installation (i.e. Development Setup)</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="README.html#usage">Usage</a></li>
 
</ul>
 
</li>
 
<li class="toctree-l1"><a class="reference internal" href="api/accounting.html">accounting package</a><ul>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#subpackages">Subpackages</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#submodules">Submodules</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.client">accounting.client module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.config">accounting.config module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.decorators">accounting.decorators module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.exceptions">accounting.exceptions module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.gtkclient">accounting.gtkclient module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.models">accounting.models module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.transport">accounting.transport module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting.web">accounting.web module</a></li>
 
<li class="toctree-l2"><a class="reference internal" href="api/accounting.html#module-accounting">Module contents</a></li>
 
</ul>
 
</li>
 
</ul>
 
</div>
 
</div>
 
<div class="section" id="indices-and-tables">
 
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
 
<ul class="simple">
 
<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
 
<li><a class="reference internal" href="py-modindex.html"><em>Module Index</em></a></li>
 
<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
 
</ul>
 
</div>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
  <h3><a href="#">Table Of Contents</a></h3>
 
  <ul>
 
<li><a class="reference internal" href="#">Welcome to Accounting API&#8217;s documentation!</a><ul>
 
</ul>
 
</li>
 
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
 
</ul>
 

	
 
  <h4>Next topic</h4>
 
  <p class="topless"><a href="README.html"
 
                        title="next chapter">The Accounting API</a></p>
 
  <h3>This Page</h3>
 
  <ul class="this-page-menu">
 
    <li><a href="_sources/index.txt"
 
           rel="nofollow">Show Source</a></li>
 
  </ul>
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li class="right" >
 
          <a href="README.html" title="The Accounting API"
 
             >next</a> |</li>
 
        <li><a href="#">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/objects.inv
Show inline comments
 
binary diff not shown
doc/build/html/py-modindex.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>Python Module Index &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    './',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="_static/jquery.js"></script>
 
    <script type="text/javascript" src="_static/underscore.js"></script>
 
    <script type="text/javascript" src="_static/doctools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="index.html" />
 
 
 

	
 

	
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="#" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 

	
 
   <h1>Python Module Index</h1>
 

	
 
   <div class="modindex-jumpbox">
 
   <a href="#cap-a"><strong>a</strong></a>
 
   </div>
 

	
 
   <table class="indextable modindextable" cellspacing="0" cellpadding="2">
 
     <tr class="pcap"><td></td><td>&nbsp;</td><td></td></tr>
 
     <tr class="cap" id="cap-a"><td></td><td>
 
       <strong>a</strong></td><td></td></tr>
 
     <tr>
 
       <td><img src="_static/minus.png" class="toggler"
 
              id="toggle-1" style="display: none" alt="-" /></td>
 
       <td>
 
       <a href="api/accounting.html#module-accounting"><tt class="xref">accounting</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.client"><tt class="xref">accounting.client</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.config"><tt class="xref">accounting.config</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.decorators"><tt class="xref">accounting.decorators</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.exceptions"><tt class="xref">accounting.exceptions</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.gtkclient"><tt class="xref">accounting.gtkclient</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.models"><tt class="xref">accounting.models</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.storage.html#module-accounting.storage"><tt class="xref">accounting.storage</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.storage.html#module-accounting.storage.ledgercli"><tt class="xref">accounting.storage.ledgercli</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.storage.sql.html#module-accounting.storage.sql"><tt class="xref">accounting.storage.sql</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.storage.sql.html#module-accounting.storage.sql.models"><tt class="xref">accounting.storage.sql.models</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.transport"><tt class="xref">accounting.transport</tt></a></td><td>
 
       <em></em></td></tr>
 
     <tr class="cg-1">
 
       <td></td>
 
       <td>&nbsp;&nbsp;&nbsp;
 
       <a href="api/accounting.html#module-accounting.web"><tt class="xref">accounting.web</tt></a></td><td>
 
       <em></em></td></tr>
 
   </table>
 

	
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
<div id="searchbox" style="display: none">
 
  <h3>Quick search</h3>
 
    <form class="search" action="search.html" method="get">
 
      <input type="text" name="q" />
 
      <input type="submit" value="Go" />
 
      <input type="hidden" name="check_keywords" value="yes" />
 
      <input type="hidden" name="area" value="default" />
 
    </form>
 
    <p class="searchtip" style="font-size: 90%">
 
    Enter search terms or a module, class or function name.
 
    </p>
 
</div>
 
<script type="text/javascript">$('#searchbox').show(0);</script>
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="#" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/search.html
Show inline comments
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 

	
 

	
 
<html xmlns="http://www.w3.org/1999/xhtml">
 
  <head>
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
    
 
    <title>Search &mdash; Accounting API 0.1-beta documentation</title>
 
    
 
    <link rel="stylesheet" href="_static/default.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pydoctheme.css" type="text/css" />
 
    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
 
    
 
    <script type="text/javascript">
 
      var DOCUMENTATION_OPTIONS = {
 
        URL_ROOT:    './',
 
        VERSION:     '0.1-beta',
 
        COLLAPSE_INDEX: false,
 
        FILE_SUFFIX: '.html',
 
        HAS_SOURCE:  true
 
      };
 
    </script>
 
    <script type="text/javascript" src="_static/jquery.js"></script>
 
    <script type="text/javascript" src="_static/underscore.js"></script>
 
    <script type="text/javascript" src="_static/doctools.js"></script>
 
    <script type="text/javascript" src="_static/searchtools.js"></script>
 
    <link rel="top" title="Accounting API 0.1-beta documentation" href="index.html" />
 
  <script type="text/javascript">
 
    jQuery(function() { Search.loadIndex("searchindex.js"); });
 
  </script>
 
  
 
  <script type="text/javascript" id="searchindexloader"></script>
 
   
 

	
 
  </head>
 
  <body>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             accesskey="I">index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>  
 

	
 
    <div class="document">
 
      <div class="documentwrapper">
 
        <div class="bodywrapper">
 
          <div class="body">
 
            
 
  <h1 id="search-documentation">Search</h1>
 
  <div id="fallback" class="admonition warning">
 
  <script type="text/javascript">$('#fallback').hide();</script>
 
  <p>
 
    Please activate JavaScript to enable the search
 
    functionality.
 
  </p>
 
  </div>
 
  <p>
 
    From here you can search these documents. Enter your search
 
    words into the box below and click "search". Note that the search
 
    function will automatically search for all of the words. Pages
 
    containing fewer words won't appear in the result list.
 
  </p>
 
  <form action="" method="get">
 
    <input type="text" name="q" value="" />
 
    <input type="submit" value="search" />
 
    <span id="search-progress" style="padding-left: 10px"></span>
 
  </form>
 
  
 
  <div id="search-results">
 
  
 
  </div>
 

	
 
          </div>
 
        </div>
 
      </div>
 
      <div class="sphinxsidebar">
 
        <div class="sphinxsidebarwrapper">
 
        </div>
 
      </div>
 
      <div class="clearer"></div>
 
    </div>
 
    <div class="related">
 
      <h3>Navigation</h3>
 
      <ul>
 
        <li class="right" style="margin-right: 10px">
 
          <a href="genindex.html" title="General Index"
 
             >index</a></li>
 
        <li class="right" >
 
          <a href="py-modindex.html" title="Python Module Index"
 
             >modules</a> |</li>
 
        <li><a href="index.html">Accounting API 0.1-beta documentation</a> &raquo;</li> 
 
      </ul>
 
    </div>
 
    <div class="footer">
 
        &copy; Copyright 2013, Joar Wandborg.
 
      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.
 
    </div>
 
  </body>
 
</html>
...
 
\ No newline at end of file
doc/build/html/searchindex.js
Show inline comments
 
Search.setIndex({objects:{"":{accounting:[0,0,0,"-"]},"accounting.storage.sql.SQLStorage":{update_transaction:[1,2,1,""],add_transaction:[1,2,1,""],get_transactions:[1,2,1,""]},accounting:{storage:[4,0,0,"-"],models:[0,0,0,"-"],web:[0,0,0,"-"],decorators:[0,0,0,"-"],gtkclient:[0,0,0,"-"],config:[0,0,0,"-"],exceptions:[0,0,0,"-"],transport:[0,0,0,"-"],client:[0,0,0,"-"]},"accounting.client.Client":{get:[0,2,1,""],get_balance:[0,2,1,""],post:[0,2,1,""],simple_transaction:[0,2,1,""],get_register:[0,2,1,""]},"accounting.gtkclient.AccountingApplication":{on_about_dialog_response:[0,2,1,""],on_transactions_loaded:[0,2,1,""],on_transaction_view_cursor_changed:[0,2,1,""],on_show_about_activate:[0,2,1,""],on_transaction_refresh_activate:[0,2,1,""],load_ui:[0,2,1,""]},"accounting.storage":{Storage:[4,3,1,""],sql:[1,0,0,"-"],ledgercli:[4,0,0,"-"],TransactionNotFound:[4,5,1,""]},"accounting.storage.sql.models.Transaction":{uuid:[1,4,1,""],date:[1,4,1,""],meta:[1,4,1,""],as_dict:[1,2,1,""],payee:[1,4,1,""],id:[1,4,1,""]},"accounting.storage.Storage":{reverse_transaction:[4,2,1,""],get_transactions:[4,2,1,""],get_accounts:[4,2,1,""],get_transaction:[4,2,1,""],get_account:[4,2,1,""],add_transaction:[4,2,1,""],update_transaction:[4,2,1,""]},"accounting.transport.AccountingEncoder":{"default":[0,2,1,""]},"accounting.decorators":{jsonify_exceptions:[0,1,1,""]},"accounting.storage.ledgercli.Ledger":{locked_process:[4,2,1,""],init_process:[4,2,1,""],get_process:[4,2,1,""],delete_transaction:[4,2,1,""],send_command:[4,2,1,""],reg:[4,2,1,""],bal:[4,2,1,""],assemble_arguments:[4,2,1,""],read_until_prompt:[4,2,1,""],add_transaction:[4,2,1,""],get_transactions:[4,2,1,""],get_transaction:[4,2,1,""],update_transaction:[4,2,1,""]},"accounting.exceptions":{AccountingException:[0,5,1,""]},"accounting.client":{Client:[0,3,1,""],print_balance_accounts:[0,1,1,""],main:[0,1,1,""],print_transactions:[0,1,1,""]},"accounting.storage.sql.models":{Posting:[1,3,1,""],Transaction:[1,3,1,""],Amount:[1,3,1,""]},"accounting.web":{init_ledger:[0,1,1,""],main:[0,1,1,""],transaction_get:[0,1,1,""],index:[0,1,1,""],transaction_update:[0,1,1,""],transaction_post:[0,1,1,""]},"accounting.models.Transaction":{generate_id:[0,2,1,""]},"accounting.storage.sql.models.Posting":{amount_id:[1,4,1,""],account:[1,4,1,""],amount:[1,4,1,""],meta:[1,4,1,""],as_dict:[1,2,1,""],transaction:[1,4,1,""],transaction_uuid:[1,4,1,""],id:[1,4,1,""]},"accounting.storage.sql":{models:[1,0,0,"-"],SQLStorage:[1,3,1,""]},"accounting.gtkclient":{AccountingApplication:[0,3,1,""],indicate_activity_done:[0,1,1,""],main:[0,1,1,""],indicate_activity:[0,1,1,""]},"accounting.storage.ledgercli":{main:[4,1,1,""],Ledger:[4,3,1,""]},"accounting.models":{Posting:[0,3,1,""],Transaction:[0,3,1,""],Account:[0,3,1,""],Amount:[0,3,1,""]},"accounting.transport":{AccountingDecoder:[0,3,1,""],AccountingEncoder:[0,3,1,""]},"accounting.transport.AccountingDecoder":{dict_to_object:[0,2,1,""]},"accounting.storage.sql.models.Amount":{as_dict:[1,2,1,""],amount:[1,4,1,""],id:[1,4,1,""],symbol:[1,4,1,""]}},terms:{workon:2,data:[],check:[0,2,4],local:2,path:[0,2],date:[0,1],yet:2,response_typ:0,follow:2,contextmanag:4,wget:[],type:[],accountingencod:0,func_or_str:0,get:[0,2],setup:0,stdin:4,uuid:1,"__type__":0,subprocess:4,indicate_activity_don:0,asset:[0,2],virtualenv:2,how:2,without:4,search:5,on_transaction_view_cursor_chang:0,transaction_uuid:1,from_acc:0,onc:4,widget:0,webservic:0,handl:4,on_aboutdialog_clos:[],karma:[],contextlib:4,currenc:2,regist:2,presum:4,purpos:2,mkvirtualenv:2,abc:4,print_transact:0,all:2,jsondecod:0,current:0,npoacct:2,symbol:[0,1,2],flask_sqlalchemi:1,indent:0,until:4,amount:[0,1],system:2,yield:4,fals:0,suitabl:4,transaction_post:0,context:4,metadata:0,termin:2,parse_json:[],on_transaction_select:[],your:2,arg:[1,4],prog:0,avaiabl:2,end:2,prompt:[2,4],to_acc:0,requir:[0,2],register_report:[],creat:4,recommend:4,storag:[],add_transact:[1,4],sort_kei:0,annot:0,repositori:2,accountingdecod:0,delete_transact:4,get_account:4,amount_id:1,process:4,hello:0,python:2,on_refresh_transactions_activ:[],serial:0,ppa:2,went:2,evalu:4,sourc:[0,1,2,4],transaction_get:0,write:[0,4],dict_to_object:0,index:[5,0],when:4,caller:0,gitori:2,jsonencod:0,debug:[],blah:[],freenod:2,discard:4,ledger:[0,2,4],print_balance_account:0,bin:2,wrap:0,exampl:[],content:[],ledger_fil:[2,4],on_transactions_load:0,ledger_bin:4,incom:0,user:2,log:2,via:[0,2],high:0,before_request:0,json_encod:0,main:[0,4],logic:0,text:4,object:[0,4],simpl:2,see:2,describ:2,set:[2,4],locked_process:4,clariti:[],accountingappl:0,sinc:4,transaction_id:[0,4],accountin:[],clone:2,skipkei:0,result:4,init_ledg:0,januari:2,manag:4,apt:2,out:2,have:2,argv:[0,4],transact:[0,1,2,4],updat:2,would:2,from:[2,4],world:0,page:5,ledgercli:[],conserv:2,assemble_argu:4,channel:2,base:[0,1,4],host:0,transactionnotfound:4,generate_id:0,section:2,alreadi:4,jsonify_except:0,builtin:[0,4],org:2,popen:4,shell:2,on_about_dialog_respons:0,"catch":0,combin:4,code:2,below:2,bal:4,can:2,head:2,git:2,well:2,should:4,servic:2,mean:2,name:0,state:0,curl:[],becom:0,get_process:4,want:2,http:[],get_bal:0,site:2,which:[0,2,4],on_transaction_refresh_activ:0,check_circular:0,find:4,init_process:4,also:2,transaction_upd:0,virtualenvwrapp:2,kindli:0,sqlstorag:1,donor:0,instanc:4,environ:2,payload:0,level:0,core:2,method:[0,2],indicate_act:0,json:0,list:4,lock:4,ani:0,endpoint:0,need:2,x20:4,simple_transact:0,contain:0,pip:2,work:2,autodetect:2,txt:2,mode:4,argument:4,func:0,sql:[],usd:2,doe:2,run:[2,4],rent:2,self:4,sudo:2,mbudd:2,report:2,ensure_ascii:0,none:[0,1,4],on_show_about_activ:0,post:[0,1],get_regist:0,thi:[0,2,4],applic:[],meta:1,usr:2,expens:2,send_command:4,"new":4,read_until_prompt:4,pars:[],open:4,unlock:4,"true":[0,4],ledger_process:4,"default":0,rest:0,"function":2,reverse_transact:4,output:[0,4],etc:2,allow_nan:0,execut:4,insert:2,banner:4,"return":[0,4],flag:2,version:2,add:2,reg:[0,4],tri:2,take:0,app:[1,4],donat:0,flask:[0,2],make:2,foo:0,accountingexcept:[0,4],balanc:2,file:[0,4],balance_report:[],python3:2,linebreak:[],"try":2,statement:4,paye:[0,1],anoth:2,load_ui:0,"class":[0,1,4],separ:0,json_decod:0,"_generate_id":0,you:2,decod:[],get_transact:[1,4],read:4,kwarg:1,serv:2,irc:2,net:2,as_dict:1,command:4,update_transact:[1,4],initi:0,request:0,sai:2},envversion:43,titleterms:{submodul:[0,1,4],ledgercli:4,content:[0,1,4],titl:[],test:[],asyncio:[],usag:2,client:[0,2],storag:[1,4],packag:[0,1,4],modul:[0,1,4],web:0,depend:2,develop:2,instal:2,transport:0,subpackag:[0,4],model:[0,1],document:5,api:[5,2],setup:2,ubuntu:2,gtkclient:0,account:[0,2,5,1,3,4],tabl:5,except:0,gtk:2,indic:5,config:0,decor:0,welcom:5,sql:1},objtypes:{"0":"py:module","1":"py:function","2":"py:method","3":"py:class","4":"py:attribute","5":"py:exception"},titles:["accounting package","accounting.storage.sql package","The Accounting API","accounting","accounting.storage package","Welcome to Accounting API&#8217;s documentation!"],filenames:["api/accounting","api/accounting.storage.sql","README","api/modules","api/accounting.storage","index"],objnames:{"0":["py","module","Python module"],"1":["py","function","Python function"],"2":["py","method","Python method"],"3":["py","class","Python class"],"4":["py","attribute","Python attribute"],"5":["py","exception","Python exception"]}})
...
 
\ No newline at end of file
 
Search.setIndex({objtypes:{"0":"py:module","1":"py:method","2":"py:class","3":"py:exception","4":"py:attribute","5":"py:function"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","class","Python class"],"3":["py","exception","Python exception"],"4":["py","attribute","Python attribute"],"5":["py","function","Python function"]},titles:["accounting.storage.sql package","accounting package","accounting.storage package","accounting","The Accounting API","Welcome to Accounting API&#8217;s documentation!"],envversion:43,filenames:["api/accounting.storage.sql","api/accounting","api/accounting.storage","api/modules","README","index"],terms:{"function":4,func:1,make:4,caller:1,run:[2,4],follow:4,transaction_get:1,index:[1,5],"_generate_id":1,how:4,pars:[],search:5,shell:4,on_transactions_load:1,world:1,execut:2,transaction_uuid:0,transaction_post:1,open:2,lock:2,file:[1,2],well:4,want:4,out:4,asset:[1,4],foo:1,tri:4,onc:2,which:[1,2,4],json_decod:1,net:4,user:4,need:4,builtin:[1,2],argument:2,init_ledg:1,also:4,prog:1,describ:4,servic:4,get_bal:1,simpl:4,method:[1,4],json:1,updat:4,wrap:1,name:1,print_transact:1,on_transaction_select:[],jsonencod:1,send_command:2,on_refresh_transactions_activ:[],statement:2,high:1,requir:[1,4],dict_to_object:1,report:4,sort_kei:1,have:4,recommend:2,post:[0,1],object:[1,2],generate_id:1,state:1,blah:[],head:4,webservic:1,json_encod:1,flag:4,endpoint:1,http:[],avaiabl:4,get_account:2,combin:2,amount:[0,1],none:[0,1,2],main:[1,2],type:[],abc:2,before_request:1,on_transaction_refresh_activ:1,ledger_bin:2,register_report:[],contextmanag:2,ledger_process:2,get_regist:1,virtualenvwrapp:4,argv:[1,2],clariti:[],wget:[],mkvirtualenv:4,level:1,func_or_str:1,becom:1,banner:2,from_acc:1,"try":4,end:4,accountingappl:1,kindli:1,indicate_activity_don:1,amount_id:0,went:4,reg:[1,2],paye:[0,1],uuid:0,get:[1,4],karma:[],delete_transact:2,rent:4,yield:2,x20:2,ledgercli:[],take:1,your:4,ensure_ascii:1,balance_report:[],environ:4,widget:1,usr:4,"default":1,get_transact:[0,2],rest:1,update_transact:[0,2],from:[2,4],npoacct:4,termin:4,you:4,to_acc:1,get_process:2,all:4,as_dict:0,"class":[0,1,2],see:4,output:[1,2],python:4,should:2,accountingdecod:1,list:2,subprocess:2,repositori:4,transaction_upd:1,process:2,path:[1,4],sourc:[0,1,2,4],fals:1,locked_process:2,kwarg:0,discard:2,sql:[],pip:4,site:4,evalu:2,yet:4,"return":[1,2],current:1,incom:1,page:5,write:[1,2],balanc:4,instanc:2,flask:[1,4],payload:1,sqlstorag:0,channel:4,currenc:4,decod:[],add_transact:[0,2],logic:1,context:2,check_circular:1,indent:1,linebreak:[],conserv:4,regist:4,allow_nan:1,local:4,ledger:[1,2,4],mbudd:4,read:2,parse_json:[],clone:4,handl:2,expens:4,"new":2,request:1,"catch":1,storag:[],workon:4,contextlib:2,annot:1,section:4,sudo:4,flask_sqlalchemi:0,data:[],print_balance_account:1,serv:4,read_until_prompt:2,date:[0,1],mode:2,sai:4,init_process:2,hello:1,initi:1,transactionnotfound:2,base:[0,1,2],text:2,serial:1,metadata:1,until:2,transact:[0,1,2,4],presum:2,check:[1,2,4],contain:1,usd:4,ledger_fil:[2,4],creat:2,core:4,suitabl:2,host:1,setup:[],jsonify_except:1,jsondecod:1,arg:[0,2],content:[],command:2,on_show_about_activ:1,etc:4,below:4,donor:1,self:2,virtualenv:4,donat:1,assemble_argu:2,symbol:[0,1,4],insert:4,reverse_transact:2,applic:[],add:4,on_aboutdialog_clos:[],ani:1,response_typ:1,result:2,bal:2,accountin:[],gitori:4,without:2,accountingexcept:[1,2],sinc:2,popen:2,curl:[],txt:4,transaction_id:[1,2],anoth:4,system:4,log:4,meta:0,load_ui:1,unlock:2,version:4,simple_transact:1,"true":[1,2],via:[1,4],prompt:[2,4],git:4,"__type__":1,separ:1,app:[0,2],work:4,manag:2,apt:4,irc:4,accountingencod:1,doe:4,code:4,skipkei:1,autodetect:4,when:2,would:4,purpos:4,bin:4,alreadi:2,mean:4,on_transaction_view_cursor_chang:1,python3:4,exampl:[],debug:[],stdin:2,org:4,can:4,indicate_act:1,freenod:4,on_about_dialog_respons:1,find:2,januari:4,ppa:4,set:[2,4],thi:[1,2,4]},objects:{"":{accounting:[1,0,0,"-"]},"accounting.transport":{AccountingEncoder:[1,2,1,""],AccountingDecoder:[1,2,1,""]},"accounting.storage.sql.models":{Posting:[0,2,1,""],Transaction:[0,2,1,""],Amount:[0,2,1,""]},"accounting.storage.ledgercli":{Ledger:[2,2,1,""],main:[2,5,1,""]},"accounting.gtkclient.AccountingApplication":{on_about_dialog_response:[1,1,1,""],on_transaction_view_cursor_changed:[1,1,1,""],on_transactions_loaded:[1,1,1,""],load_ui:[1,1,1,""],on_transaction_refresh_activate:[1,1,1,""],on_show_about_activate:[1,1,1,""]},"accounting.models.Transaction":{generate_id:[1,1,1,""]},accounting:{storage:[2,0,0,"-"],config:[1,0,0,"-"],decorators:[1,0,0,"-"],web:[1,0,0,"-"],models:[1,0,0,"-"],client:[1,0,0,"-"],exceptions:[1,0,0,"-"],gtkclient:[1,0,0,"-"],transport:[1,0,0,"-"]},"accounting.client":{print_transactions:[1,5,1,""],Client:[1,2,1,""],print_balance_accounts:[1,5,1,""],main:[1,5,1,""]},"accounting.decorators":{jsonify_exceptions:[1,5,1,""]},"accounting.storage.sql.models.Posting":{account:[0,4,1,""],meta:[0,4,1,""],amount:[0,4,1,""],amount_id:[0,4,1,""],transaction_uuid:[0,4,1,""],transaction:[0,4,1,""],as_dict:[0,1,1,""],id:[0,4,1,""]},"accounting.models":{Posting:[1,2,1,""],Account:[1,2,1,""],Transaction:[1,2,1,""],Amount:[1,2,1,""]},"accounting.client.Client":{simple_transaction:[1,1,1,""],post:[1,1,1,""],get:[1,1,1,""],get_register:[1,1,1,""],get_balance:[1,1,1,""]},"accounting.storage.ledgercli.Ledger":{bal:[2,1,1,""],get_process:[2,1,1,""],read_until_prompt:[2,1,1,""],get_transactions:[2,1,1,""],add_transaction:[2,1,1,""],reg:[2,1,1,""],get_transaction:[2,1,1,""],update_transaction:[2,1,1,""],locked_process:[2,1,1,""],send_command:[2,1,1,""],assemble_arguments:[2,1,1,""],delete_transaction:[2,1,1,""],init_process:[2,1,1,""]},"accounting.web":{init_ledger:[1,5,1,""],main:[1,5,1,""],transaction_get:[1,5,1,""],transaction_post:[1,5,1,""],transaction_update:[1,5,1,""],index:[1,5,1,""]},"accounting.storage.sql":{models:[0,0,0,"-"],SQLStorage:[0,2,1,""]},"accounting.storage":{Storage:[2,2,1,""],sql:[0,0,0,"-"],TransactionNotFound:[2,3,1,""],ledgercli:[2,0,0,"-"]},"accounting.storage.sql.SQLStorage":{get_transactions:[0,1,1,""],update_transaction:[0,1,1,""],add_transaction:[0,1,1,""]},"accounting.storage.Storage":{get_transaction:[2,1,1,""],get_account:[2,1,1,""],reverse_transaction:[2,1,1,""],update_transaction:[2,1,1,""],get_accounts:[2,1,1,""],get_transactions:[2,1,1,""],add_transaction:[2,1,1,""]},"accounting.storage.sql.models.Amount":{symbol:[0,4,1,""],as_dict:[0,1,1,""],id:[0,4,1,""],amount:[0,4,1,""]},"accounting.storage.sql.models.Transaction":{uuid:[0,4,1,""],as_dict:[0,1,1,""],payee:[0,4,1,""],meta:[0,4,1,""],date:[0,4,1,""],id:[0,4,1,""]},"accounting.gtkclient":{indicate_activity_done:[1,5,1,""],indicate_activity:[1,5,1,""],AccountingApplication:[1,2,1,""],main:[1,5,1,""]},"accounting.transport.AccountingDecoder":{dict_to_object:[1,1,1,""]},"accounting.transport.AccountingEncoder":{"default":[1,1,1,""]},"accounting.exceptions":{AccountingException:[1,3,1,""]}},titleterms:{sql:0,content:[0,1,2],client:[1,4],config:1,model:[0,1],api:[4,5],ledgercli:2,indic:5,account:[2,4,5,0,1,3],ubuntu:4,packag:[0,1,2],gtkclient:1,modul:[0,1,2],transport:1,usag:4,welcom:5,tabl:5,subpackag:[1,2],web:1,depend:4,decor:1,test:[],document:5,asyncio:[],develop:4,gtk:4,storag:[0,2],except:1,setup:4,instal:4,titl:[],submodul:[0,1,2]}})
...
 
\ No newline at end of file
0 comments (0 inline, 0 general)