Browse Source

Rate limit to other api

master
venkataakhil 2 years ago
parent
commit
ca9d13d777
  1. 18
      smart_service/apis/addon_api.py
  2. 36
      smart_service/apis/app_user_login.py
  3. 13
      smart_service/apis/publish_api.py
  4. 4
      smart_service/apis/transaction_api.py
  5. 15
      smart_service/apis/update_validation.py
  6. 53
      smart_service/fixtures/custom_field.json
  7. 91
      smart_service/fixtures/dashboard_chart.json
  8. 1376
      smart_service/fixtures/property_setter.json
  9. 821
      smart_service/fixtures/report.json
  10. 50
      smart_service/fixtures/role.json
  11. 2714
      smart_service/fixtures/workspace.json

18
smart_service/apis/addon_api.py

@ -6,10 +6,13 @@ import os
from frappe.utils import cstr
from smart_service.apis.app_user_login import input_validation
current_db_name = frappe.conf.get("db_name")
from smart_service.apis.master_api import rate_limit
@frappe.whitelist()
def addon(args=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
# if args == None:
# return {"status": 0, "error": "Parameter missing: args"}
val=input_validation(args=args)
@ -75,6 +78,10 @@ def addon(args=None):
@frappe.whitelist()
def bookmark(args=None, request=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val=input_validation(args=args,request=request)
if val!='':
return {"status": 0, "error": "Input parameter Missing: " + val}
@ -134,6 +141,9 @@ def bookmark(args=None, request=None):
@frappe.whitelist()
def feedback(args=None, request=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val=input_validation(args=args,request=request)
if val!='':
return {"status": 0, "error": "Input parameter Missing: " + val}
@ -216,6 +226,9 @@ def feedback(args=None, request=None):
@frappe.whitelist()
def model_hit(args=None, request=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val=input_validation(args=args,request=request)
if val!='':
return {"status": 0, "error": "Input parameter Missing: " + val}
@ -259,6 +272,9 @@ def model_hit(args=None, request=None):
@frappe.whitelist()
def model_usage(args=None, request=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val=input_validation(args=args,request=request)
if val!='':
return {"status": 0, "error": "Input parameter Missing: " + val}

36
smart_service/apis/app_user_login.py

@ -10,7 +10,7 @@ from cryptography.fernet import Fernet, InvalidToken
from frappe.utils import cstr, encode
from datetime import datetime
from datetime import timedelta
from smart_service.apis.master_api import rate_limit
current_db_name = frappe.conf.get("db_name")
@ -30,6 +30,9 @@ def app_user_validation_test():
@frappe.whitelist(allow_guest=True)
def app_user_validation(usr=None, pwd=None):
# rate_res = rate_limit(limit=5, seconds=15)
# if rate_res != 1:
# return rate_res
val = input_validation(usr=usr, pwd=pwd)
if val != '':
return {'status': 0, 'error': "Parameter's missing: " + val}
@ -174,6 +177,9 @@ def app_user_validation(usr=None, pwd=None):
@frappe.whitelist(allow_guest=True)
def grant_user_access(userdata=None, iid=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(userdata=userdata, iid=iid)
if val != '':
return {'status': 0, 'error': "Parameter's missing: " + val}
@ -393,6 +399,9 @@ def grant_user_access(userdata=None, iid=None):
@frappe.whitelist(allow_guest=True)
def new_app_user_validation(usr=None, pwd=None, iid=None, device_data=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(usr=usr, pwd=pwd, iid=iid, device_data=device_data)
if val != '':
return {'status': 0, 'error': "Parameter's missing: " + val}
@ -531,6 +540,9 @@ def new_app_user_validation(usr=None, pwd=None, iid=None, device_data=None):
def new_grant_user_access(userdata=None, iid=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
try:
user_id = userdata['ID']
email = userdata['EmailId']
@ -739,6 +751,10 @@ def new_grant_user_access(userdata=None, iid=None):
@frappe.whitelist(allow_guest=1)
def generate_keys(user_name):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
frappe.set_user("Administrator")
user_details = frappe.get_doc('User', user_name)
api_secret = frappe.generate_hash(length=15)
@ -753,6 +769,9 @@ def generate_keys(user_name):
@frappe.whitelist()
def login_generate_token(doc=None, method=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
new_tok = generate_keys('cms@guidedsmartservice.com')
water = frappe.get_doc("Fish", None)
water.apple = new_tok
@ -779,6 +798,9 @@ def xml_to_dict(node):
@frappe.whitelist(allow_guest=True)
def generate_user_token(user_email):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
access_token = generate_access_token(user_email)
refresh_token = generate_refresh_token()
token_details = update_tokens_in_doc(
@ -788,6 +810,9 @@ def generate_user_token(user_email):
@frappe.whitelist(allow_guest=True)
def generate_access_token(user_email):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
frappe.set_user("Administrator")
user_details = frappe.get_doc('User', user_email)
@ -814,6 +839,9 @@ def generate_refresh_token():
@frappe.whitelist(allow_guest=1, methods=['POST'])
def refresh_token(refresh_token):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
if refresh_token:
frappe.set_user("Administrator")
# req = json.loads(frappe.request.data)
@ -843,6 +871,9 @@ def refresh_token(refresh_token):
@frappe.whitelist(allow_guest=1, methods=['POST'])
def invalidate_token(refresh_token):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
if refresh_token:
frappe.set_user("Administrator")
ref_token = refresh_token
@ -933,6 +964,9 @@ def get_encryption_key():
@frappe.whitelist(allow_guest=1)
def deactivate_tokens():
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
frappe.set_user("Administrator")
doc_details = frappe.db.sql('''
SELECT * FROM `tabRefresh Token`;''', as_dict=1)

13
smart_service/apis/publish_api.py

@ -7,6 +7,7 @@ import frappe.utils
import os
from frappe.utils import cstr
from smart_service.apis.app_user_login import input_validation
from smart_service.apis.master_api import rate_limit
current_db_name = frappe.conf.get("db_name")
site_name = cstr(frappe.local.site)
@ -38,6 +39,9 @@ def get_parent_map(input_list, parameter):
@frappe.whitelist(allow_guest=True)
def api_procedure(args, publish_type, vehicle, language, version):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(args=args, publish_type=publish_type,
vehicle=vehicle, language=language, version=version)
if val != '':
@ -229,6 +233,9 @@ def print(sts):
@frappe.whitelist(allow_guest=True)
def new_publish(args, publish_type, vehicle, language, version):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(args=args, publish_type=publish_type,
vehicle=vehicle, language=language, version=version)
if val != '':
@ -308,6 +315,9 @@ def new_publish(args, publish_type, vehicle, language, version):
@frappe.whitelist(allow_guest=True)
def new_update(vehicle_list=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(vehicle_list=vehicle_list)
if val != '':
return {'status': 0, 'error': "Parameter missing :"+val}
@ -353,6 +363,9 @@ def new_update(vehicle_list=None):
@frappe.whitelist(allow_guest=True)
def merge_json_files(old_json_path, new_json_path, out_file_path):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(old_json_path=old_json_path,
new_json_path=new_json_path, out_file_path=out_file_path)
if val != '':

4
smart_service/apis/transaction_api.py

@ -4,6 +4,7 @@ import json
import os
from frappe.utils import cstr
from smart_service.apis.app_user_login import input_validation
from smart_service.apis.master_api import rate_limit
current_db_name = frappe.conf.get("db_name")
site_name = cstr(frappe.local.site)
@ -13,6 +14,9 @@ base_url = os.path.expanduser(
@frappe.whitelist()
def get_technical_manual(args=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
# if args == None:
# return {'status': 0, 'error': "Parameter missing : args"}
val = input_validation(args=args)

15
smart_service/apis/update_validation.py

@ -5,6 +5,7 @@ import os
from frappe.utils import cstr
import time
from smart_service.apis.app_user_login import input_validation
from smart_service.apis.master_api import rate_limit
current_db_name = frappe.conf.get("db_name")
site_name = cstr(frappe.local.site)
base_url = os.path.expanduser(
@ -30,6 +31,9 @@ def get_parent_map(input_list, parameter):
@frappe.whitelist()
def check_all_vehicle_updates(vehicle_list=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
# if vehicle_list == None:
# return {"status": 0, "error": "Parameter missing: Vehicle List"}
val = input_validation(vehicle_list=vehicle_list)
@ -108,6 +112,9 @@ def check_all_vehicle_updates(vehicle_list=None):
@frappe.whitelist()
def check_vehicle_update(vehicle_list=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
# if vehicle_list == None:
# return {"status": 0, "error": "Parameter missing: Vehicle List"}
val = input_validation(vehicle_list=vehicle_list)
@ -780,7 +787,10 @@ def get_publish_ver(vehicle, l_id):
@frappe.whitelist()
def update_completed(FileName=None):
val = input_validation(vehicle_list=vehicle_list)
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
val = input_validation(FileName=FileName)
if val != '':
return {"status": 0, "error": "Parameter missing:"+val}
# if FileName == None:
@ -798,6 +808,9 @@ def update_completed(FileName=None):
@frappe.whitelist()
def delete_complete(doc=None, method=None):
rate_res = rate_limit(limit=5, seconds=15)
if rate_res != 1:
return rate_res
base_url1 = os.path.expanduser(
"~") + "/frappe-bench/sites/" + site_name + "/public"
path = base_url1 + '/files/json_files/temp/'

53
smart_service/fixtures/custom_field.json

@ -51,5 +51,58 @@
"translatable": 0,
"unique": 0,
"width": null
},
{
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"collapsible_depends_on": null,
"columns": 0,
"default": null,
"depends_on": null,
"description": null,
"docstatus": 0,
"doctype": "Custom Field",
"dt": "User",
"fetch_from": null,
"fetch_if_empty": 0,
"fieldname": "pwd",
"fieldtype": "Data",
"hidden": 1,
"hide_border": 0,
"hide_days": 0,
"hide_seconds": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_preview": 0,
"in_standard_filter": 0,
"insert_after": "new_password",
"label": "PWD",
"length": 0,
"mandatory_depends_on": null,
"modified": "2022-02-11 19:13:04.645496",
"name": "User-pwd",
"no_copy": 0,
"non_negative": 0,
"options": "",
"parent": null,
"parentfield": null,
"parenttype": null,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"print_width": null,
"read_only": 0,
"read_only_depends_on": null,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"translatable": 0,
"unique": 0,
"width": null
}
]

91
smart_service/fixtures/dashboard_chart.json

@ -17,7 +17,7 @@
"heatmap_year": null,
"is_public": 1,
"is_standard": 0,
"last_synced_on": "2022-05-10 12:32:46.535932",
"last_synced_on": "2023-02-08 09:55:09.460016",
"modified": "2022-03-28 14:33:10.648848",
"module": null,
"name": "Variant mapping",
@ -95,11 +95,50 @@
"heatmap_year": null,
"is_public": 1,
"is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.898783",
"modified": "2022-04-11 18:20:02.591953",
"last_synced_on": "2022-11-07 15:36:06.864894",
"modified": "2022-04-21 10:00:30.763417",
"module": null,
"name": "Publish",
"number_of_groups": 10,
"number_of_groups": 0,
"parent": null,
"parent_document_type": "",
"parentfield": null,
"parenttype": null,
"report_name": null,
"source": "",
"time_interval": "Yearly",
"timeseries": 0,
"timespan": "Last Year",
"to_date": null,
"type": "Bar",
"use_report_chart": 0,
"value_based_on": "",
"x_field": null,
"y_axis": []
},
{
"aggregate_function_based_on": null,
"based_on": "",
"chart_name": "Publish Status",
"chart_type": "Group By",
"color": "#7cbcf7",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Publish",
"dynamic_filters_json": "[]",
"filters_json": "[[\"Publish\",\"publish_status\",\"=\",null,false]]",
"from_date": null,
"group_by_based_on": "vehicle",
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 1,
"is_standard": 0,
"last_synced_on": "2022-11-07 15:36:06.930763",
"modified": "2022-04-11 18:23:00.494268",
"module": null,
"name": "Publish Status",
"number_of_groups": 0,
"parent": null,
"parent_document_type": "",
"parentfield": null,
@ -134,7 +173,7 @@
"heatmap_year": null,
"is_public": 1,
"is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.477102",
"last_synced_on": "2022-11-07 15:36:06.728398",
"modified": "2022-04-12 19:59:36.324953",
"module": null,
"name": "Procedure",
@ -157,26 +196,26 @@
},
{
"aggregate_function_based_on": null,
"based_on": "",
"chart_name": "KM Mapping",
"chart_type": "Group By",
"color": "#449CF0",
"based_on": "creation",
"chart_name": "Test",
"chart_type": "Count",
"color": "#CB2929",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Kilometer Mapping",
"document_type": "App Device",
"dynamic_filters_json": "[]",
"filters_json": "[[\"Kilometer Mapping\",\"workflow_state\",\"=\",null,false]]",
"filters_json": "[]",
"from_date": null,
"group_by_based_on": "workflow_state",
"group_by_based_on": null,
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 1,
"is_public": 0,
"is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.649487",
"modified": "2022-05-10 13:05:25.011604",
"last_synced_on": null,
"modified": "2022-05-11 11:06:15.280730",
"module": null,
"name": "KM Mapping",
"name": "Test",
"number_of_groups": 0,
"parent": null,
"parent_document_type": "",
@ -185,10 +224,10 @@
"report_name": null,
"source": "",
"time_interval": "Yearly",
"timeseries": 0,
"timeseries": 1,
"timespan": "Last Year",
"to_date": null,
"type": "Bar",
"type": "Line",
"use_report_chart": 0,
"value_based_on": "",
"x_field": null,
@ -197,25 +236,25 @@
{
"aggregate_function_based_on": null,
"based_on": "",
"chart_name": "Publish Status",
"chart_name": "KM Mapping",
"chart_type": "Group By",
"color": "#7cbcf7",
"color": "#449CF0",
"custom_options": null,
"docstatus": 0,
"doctype": "Dashboard Chart",
"document_type": "Publish",
"document_type": "Kilometer Mapping",
"dynamic_filters_json": "[]",
"filters_json": "[[\"Publish\",\"publish_status\",\"=\",null,false]]",
"filters_json": "[[\"Kilometer Mapping\",\"workflow_state\",\"=\",null,false]]",
"from_date": null,
"group_by_based_on": "vehicle",
"group_by_based_on": "workflow_state",
"group_by_type": "Count",
"heatmap_year": null,
"is_public": 1,
"is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.737960",
"modified": "2022-04-11 18:23:00.494268",
"last_synced_on": "2022-11-07 15:36:06.500997",
"modified": "2022-05-10 13:05:25.011604",
"module": null,
"name": "Publish Status",
"name": "KM Mapping",
"number_of_groups": 0,
"parent": null,
"parent_document_type": "",

1376
smart_service/fixtures/property_setter.json

File diff suppressed because it is too large

821
smart_service/fixtures/report.json

File diff suppressed because it is too large

50
smart_service/fixtures/role.json

@ -418,7 +418,7 @@
"home_page": null,
"is_custom": 0,
"list_sidebar": 1,
"modified": "2022-02-07 13:11:48.057238",
"modified": "2022-02-22 10:28:00.880225",
"name": "CMS User",
"notifications": 1,
"parent": null,
@ -431,6 +431,30 @@
"two_factor_auth": 0,
"view_switcher": 1
},
{
"bulk_actions": 1,
"dashboard": 1,
"desk_access": 1,
"disabled": 0,
"docstatus": 0,
"doctype": "Role",
"form_sidebar": 1,
"home_page": null,
"is_custom": 0,
"list_sidebar": 1,
"modified": "2022-02-25 12:09:33.176233",
"name": "User_Account_Manager",
"notifications": 1,
"parent": null,
"parentfield": null,
"parenttype": null,
"restrict_to_domain": null,
"role_name": "User_Account_Manager",
"search_bar": 1,
"timeline": 1,
"two_factor_auth": 0,
"view_switcher": 1
},
{
"bulk_actions": 0,
"dashboard": 0,
@ -790,29 +814,5 @@
"timeline": 1,
"two_factor_auth": 0,
"view_switcher": 1
},
{
"bulk_actions": 1,
"dashboard": 1,
"desk_access": 1,
"disabled": 0,
"docstatus": 0,
"doctype": "Role",
"form_sidebar": 1,
"home_page": null,
"is_custom": 0,
"list_sidebar": 1,
"modified": "2022-02-25 10:48:10.932318",
"name": "User_Account_Manager",
"notifications": 1,
"parent": null,
"parentfield": null,
"parenttype": null,
"restrict_to_domain": null,
"role_name": "User_Account_Manager",
"search_bar": 1,
"timeline": 1,
"two_factor_auth": 0,
"view_switcher": 1
}
]

2714
smart_service/fixtures/workspace.json

File diff suppressed because it is too large
Loading…
Cancel
Save