diff --git a/doc/build/html/_modules/accounting/client.html b/doc/build/html/_modules/accounting/client.html new file mode 100644 index 0000000000000000000000000000000000000000..8688152ede7cb0a0eb2c3cc833c3f000d98fe9bc --- /dev/null +++ b/doc/build/html/_modules/accounting/client.html @@ -0,0 +1,225 @@ + + + + + + + + accounting.client — Accounting API 0.1-beta documentation + + + + + + + + + + + + + + +
+
+
+
+ +

Source code for accounting.client

+import sys
+import argparse
+import json
+import logging
+
+from datetime import datetime
+from decimal import Decimal
+
+import requests
+
+from accounting.models import Transaction, Posting, Amount
+from accounting.transport import AccountingDecoder, AccountingEncoder
+
+_log = logging.getLogger(__name__)
+
+
+
[docs]class Client: + def __init__(self, host=None, json_encoder=None, + json_decoder=None): + self.host = host or 'http://localhost:5000' + self.json_encoder = json_encoder or AccountingEncoder + self.json_decoder = json_decoder or AccountingDecoder + +
[docs] def get_balance(self): + balance = self.get('/balance') + return balance['balance_report'] +
+
[docs] def get(self, path): + response = requests.get(self.host + path) + + return self._decode_response(response) +
+ def _decode_response(self, response): + response_data = response.json(cls=self.json_decoder) + + _log.debug('response_data: %s', response_data) + + return response_data + +
[docs] def post(self, path, payload, **kw): + kw.update({'headers': {'Content-Type': 'application/json'}}) + kw.update({'data': json.dumps(payload, cls=self.json_encoder)}) + + return self._decode_response(requests.post(self.host + path, **kw)) +
+
[docs] def simple_transaction(self, from_acc, to_acc, amount): + t = Transaction( + date=datetime.today(), + payee='PayPal donation', + postings=[ + Posting(account=from_acc, + amount=Amount(symbol='$', amount=-amount)), + Posting(account=to_acc, + amount=Amount(symbol='$', amount=amount)) + ] + ) + + return self.post('/transaction', {'transactions': [t]}) +
+
[docs] def get_register(self): + register = self.get('/register') + + return register['register_report'] + +
+ + +
[docs]def main(argv=None, prog=None): + global HOST + if argv is None: + prog = sys.argv[0] + argv = sys.argv[1:] + + parser = argparse.ArgumentParser(prog=prog) + actions = parser.add_subparsers(title='Actions', dest='action') + + insert = actions.add_parser('insert', + aliases=['in']) + insert.add_argument('from_account') + insert.add_argument('to_account') + insert.add_argument('amount', type=Decimal) + + balance = actions.add_parser('balance', aliases=['bal']) + + register = actions.add_parser('register', aliases=['reg']) + + parser.add_argument('-v', '--verbosity', + default='WARNING', + help=('Filter logging output. Possible values:' + + ' CRITICAL, ERROR, WARNING, INFO, DEBUG')) + parser.add_argument('--host', default='http://localhost:5000') + + args = parser.parse_args(argv) + + logging.basicConfig(level=getattr(logging, args.verbosity)) + + client = Client(args.host) + + if args.action in ['insert', 'in']: + print(client.simple_transaction(args.from_account, args.to_account, + args.amount)) + elif args.action in ['balance', 'bal']: + print_balance_accounts(client.get_balance()) + elif args.action in ['register', 'reg']: + print_transactions(client.get_register()) + else: + parser.print_help() +
+if __name__ == '__main__': + sys.exit(main()) +
+ +
+
+
+
+
+ + +
+
+
+
+ + + + \ No newline at end of file