Skip to content

Commit ab9a95b

Browse files
committed
new columns for demon usage record
1 parent fbc535f commit ab9a95b

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

metering/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ PyMySQL==0.9.3
55
python-dateutil==2.8.0
66
python-editor==1.0.4
77
six==1.12.0
8-
SQLAlchemy==1.3.6
8+
SQLAlchemy==1.3.6
9+
requests==2.22.0

metering/services.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
1+
import requests
2+
3+
from settings import MARKETPLACE_CHANNEL_USER_URL
14
from storage import DatabaseStorage
25

36

7+
def is_free_call(usage_details_dict):
8+
if not usage_details_dict['username'] or len(usage_details_dict['username']):
9+
return False
10+
return True
11+
12+
413
class UsageService(object):
514
storage_service = DatabaseStorage()
615

@@ -18,5 +27,25 @@ def get_free_call_details(self, username, org_id, service_id, group_id=None):
1827

1928
def save_usage_details(self, usage_details_dict):
2029
# nedd to introduce entities when we enhance feature to this service right now directly using dicts
30+
if is_free_call(usage_details_dict):
31+
channel_id = usage_details_dict['channel_id']
32+
group_id = usage_details_dict['group_id']
33+
username = APIUtilityService().get_user_name(channel_id, group_id)
34+
usage_details_dict['username'] = username
2135
self.storage_service.add_usage_data(usage_details_dict)
2236
return
37+
38+
39+
class APIUtilityService:
40+
41+
@staticmethod
42+
def get_user_name(channel_id, group_id):
43+
url = MARKETPLACE_CHANNEL_USER_URL.format(group_id, channel_id)
44+
response = requests.get(url)
45+
user_data = response.json()
46+
try:
47+
username = user_data[0]['username']
48+
except Exception as e:
49+
print(e)
50+
raise Exception("Failed to get username from marketplace")
51+
return username

0 commit comments

Comments
 (0)