12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- from django.contrib.auth.models import User
- from django.utils import timezone
- from requests import post
- from django.conf import settings
- from .models import UserModel
- from requests import get
- def has_expired(credentials):
- expiry_time = credentials['expiry']
- now = str(timezone.datetime.now())
- return now > expiry_time
- def get_access_token(request):
- if 'credentials' in request.session and not has_expired(request.session['credentials']):
- cred = request.session['credentials']
- return cred['access_token']
- access_token, expires_in = refresh_access_token()
- expired_at = timezone.datetime.now() + timezone.timedelta(seconds=expires_in)
- expiry = str(expired_at)
- credentials = {
- 'access_token': access_token,
- 'expiry': expiry
- }
- request.session['credentials'] = credentials
- return credentials['access_token']
- def refresh_access_token():
- user = User.objects.filter(username='admin@ercare').first()
- uid = user.id
- user = UserModel.objects.filter(pk=uid).first()
- if user:
- refresh_token = user.refresh_token
- else:
- return None
- client_id = settings.CLIENT_ID
- client_secret = settings.CLIENT_SECRET
- token_uri = settings.TOKEN_URI
- params = {
- "grant_type": "refresh_token",
- "client_id": client_id,
- "client_secret": client_secret,
- "refresh_token": refresh_token
- }
- response = post(token_uri, data=params).json()
- access_token = response['access_token']
- expires_in = response['expires_in']
- return access_token, expires_in
- def get_google_account_id(access_token):
- uri = 'https://mybusiness.googleapis.com/v4/accounts'
- headers = {
- 'authorization': 'Bearer '+access_token,
- 'content-type': 'application/json'
- }
- res = get(uri, headers=headers).json()
- accounts_name = res['accounts'][0]['name']
- id = accounts_name.split('/')[-1]
- return id
- def get_gmb_id():
- user = User.objects.get(username='admin@ercare')
- gmb_id = UserModel.objects.get(user=user).gmb_account_id
- return user, gmb_id
|