diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/akaunting-py.iml b/.idea/akaunting-py.iml
new file mode 100644
index 0000000..60b03b1
--- /dev/null
+++ b/.idea/akaunting-py.iml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..2e094ae
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..31df754
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/akauntingpy/api.py b/akauntingpy/api.py
index 7b03cef..249fc9b 100644
--- a/akauntingpy/api.py
+++ b/akauntingpy/api.py
@@ -1,19 +1,18 @@
-from importlib.metadata import version, PackageNotFoundError
-from unittest.mock import seal
import requests
-import json
from requests.auth import HTTPBasicAuth
-from akauntingpy.helpers import *
-from akauntingpy import exceptions
-
from setuptools_scm import get_version
+from akauntingpy import exceptions
+from akauntingpy.helpers import *
+
__version__ = get_version(root='..', relative_to=__file__)
+
class Client(object):
"""
Akaunting interface.
"""
+
def __init__(
self,
url,
@@ -38,18 +37,18 @@ class Client(object):
self.default_params = {'company_id': company_id}
self.currency_code = currency_code
self.currency_rate = currency_rate
-
- def call(self, method="get", endpoint=None,
+
+ def call(self, method="get", endpoint=None,
**params) -> dict():
response = None
-
+
response = requests.request(method=method,
url=self.url + "/" + endpoint,
headers=self.headers,
auth=self.authentication,
params=MergeDict(self.default_params, params)
)
-
+
print(response)
response_ = response.json()
print(response_)
@@ -59,23 +58,23 @@ class Client(object):
elif response.status_code == 422:
errors = []
for key in response_['errors']:
- errors.append(RemoveFromString(["",""],
- response_['errors'][key][0])
- + " (" + key + ")")
+ errors.append(RemoveFromString(["", ""],
+ response_['errors'][key][0])
+ + " (" + key + ")")
raise exceptions.InvalidData(response_['message'] +
"\n" +
"\n".join(errors))
# elif response.status_code != 200 and response.status_code != 201:
# raise exceptions.Error(response_['message'])
return response_
-
+
def ping(self):
data = self.call(endpoint="ping")
return data
-
+
def get_accounts(self, **params):
data = self.call(endpoint="accounts", **params)
-
+
if params.get('search', False):
# Check if there is an account returned
if data['meta']['pagination'].get('count') == 0:
@@ -83,33 +82,33 @@ class Client(object):
raise exceptions.AccountNotFound("Sorry, account not found matching search parameters: %s".format(
params.get('search')
))
-
+
return data['data']
-
+
def create_transaction(self,
- type='income', # Payment method type
- account_id=None, # Account ID to assign
- category_id=None, # Category ID to assign
- contact_id=None, # Contact ID/Client to assign
- description=None, # Description
- paid_at=None, # Date of expense/transfer or income
- reference=None, # Reference for the payment
- payment_method=None, # Payment method
- currency_code=None, # Currency code
- currency_rate=None,# Currency rate
- amount=None, # Amount received/paid
- **params # Any additional parameters
- ):
-
+ type='income', # Payment method type
+ account_id=None, # Account ID to assign
+ category_id=None, # Category ID to assign
+ contact_id=None, # Contact ID/Client to assign
+ description=None, # Description
+ paid_at=None, # Date of expense/transfer or income
+ reference=None, # Reference for the payment
+ payment_method=None, # Payment method
+ currency_code=None, # Currency code
+ currency_rate=None, # Currency rate
+ amount=None, # Amount received/paid
+ **params # Any additional parameters
+ ):
+
if currency_code is None:
# Set default value from class
currency_code = self.currency_code
if currency_rate is None:
# Set default value from class
currency_rate = self.currency_rate
-
- data = self.call(endpoint="transactions",
- method="POST",
+
+ data = self.call(endpoint="transactions",
+ method="POST",
search="type:" + type,
type=type,
account_id=account_id,
@@ -124,4 +123,4 @@ class Client(object):
description=description,
**params
)
- return data
\ No newline at end of file
+ return data
diff --git a/requirements.txt b/requirements.txt
index 5286fa0..a4516a8 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
requests ~= 2.27.0
requests-mock ~= 1.9.3
pytest ~= 7.1.2
-pytest-cov ~= 3.0.0
+pytest-cov ~= 3.0
+setuptools-scm ~= 6.4.2
diff --git a/setup.py b/setup.py
index af6c343..cfd5656 100644
--- a/setup.py
+++ b/setup.py
@@ -20,6 +20,7 @@ setup(
packages=find_packages(),
install_requires=[
'requests >= 2.21.0',
+ 'setuptools-scm >= 6.4.2'
],
classifiers=[
'Programming Language :: Python :: 3',