some more work
This commit is contained in:
@@ -1,9 +1,10 @@
|
|||||||
from rowers.models import Rower, PaidPlan, CoachingGroup
|
from rowers.models import Rower, PaidPlan, CoachingGroup, iDokladToken
|
||||||
from rowers.utils import ProcessorCustomerError
|
from rowers.utils import ProcessorCustomerError
|
||||||
from rowsandall_app.settings import (
|
from rowsandall_app.settings import (
|
||||||
BRAINTREE_MERCHANT_ID, BRAINTREE_PUBLIC_KEY, BRAINTREE_PRIVATE_KEY,
|
BRAINTREE_MERCHANT_ID, BRAINTREE_PUBLIC_KEY, BRAINTREE_PRIVATE_KEY,
|
||||||
BRAINTREE_SANDBOX_MERCHANT_ID, BRAINTREE_SANDBOX_PUBLIC_KEY,
|
BRAINTREE_SANDBOX_MERCHANT_ID, BRAINTREE_SANDBOX_PUBLIC_KEY,
|
||||||
BRAINTREE_SANDBOX_PRIVATE_KEY, BRAINTREE_MERCHANT_ACCOUNT_ID
|
BRAINTREE_SANDBOX_PRIVATE_KEY, BRAINTREE_MERCHANT_ACCOUNT_ID,
|
||||||
|
IDOKLAD_CLIENT_ID, IDOKLAD_CLIENT_SECRET, IDOKLAD_REDIRECT_URI,
|
||||||
)
|
)
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from rowers.utils import dologging
|
from rowers.utils import dologging
|
||||||
@@ -52,6 +53,46 @@ else:
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def idoklad_token():
|
||||||
|
try:
|
||||||
|
token = iDokladToken.objects.get(id=1)
|
||||||
|
except iDokladToken.DoesNotExist:
|
||||||
|
return None
|
||||||
|
|
||||||
|
if token.updated_at + datetime.timedelta(seconds=token.expires_in) < timezone.now():
|
||||||
|
headers = {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
}
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'grant_type': 'refresh_token',
|
||||||
|
'client_id': IDOKLAD_CLIENT_ID,
|
||||||
|
'client_secret': IDOKLAD_CLIENT_SECRET,
|
||||||
|
'scope': 'eet offline_access',
|
||||||
|
'refresh_token': token.refresh_token,
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.post('https://app.idoklad.cz/identity/server/connect/token', headers=headers, data=data)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
token = response.json()
|
||||||
|
token['updated_at'] = timezone.now()
|
||||||
|
iDokladToken.objects.filter(id=1).update(**token)
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return token
|
||||||
|
|
||||||
|
def prepare_invoice():
|
||||||
|
token = idoklad_token()
|
||||||
|
if token is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'templateId': 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def process_webhook(notification):
|
def process_webhook(notification):
|
||||||
if not settings.TESTING: # pragma: no cover
|
if not settings.TESTING: # pragma: no cover
|
||||||
|
|||||||
@@ -5374,5 +5374,5 @@ class iDokladToken(models.Model):
|
|||||||
expires_in = models.IntegerField() # Store token expiry duration in seconds
|
expires_in = models.IntegerField() # Store token expiry duration in seconds
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f"iDoklad Token updated at {self.updated_at}"
|
return f"iDoklad Token updated at {self.updated_at}, expires at {self.updated_at+datetime.timedelta(seconds=self.expires_in)}"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user