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

13
smart_service/apis/publish_api.py

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

4
smart_service/apis/transaction_api.py

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

15
smart_service/apis/update_validation.py

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

53
smart_service/fixtures/custom_field.json

@ -51,5 +51,58 @@
"translatable": 0, "translatable": 0,
"unique": 0, "unique": 0,
"width": null "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, "heatmap_year": null,
"is_public": 1, "is_public": 1,
"is_standard": 0, "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", "modified": "2022-03-28 14:33:10.648848",
"module": null, "module": null,
"name": "Variant mapping", "name": "Variant mapping",
@ -95,11 +95,50 @@
"heatmap_year": null, "heatmap_year": null,
"is_public": 1, "is_public": 1,
"is_standard": 0, "is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.898783", "last_synced_on": "2022-11-07 15:36:06.864894",
"modified": "2022-04-11 18:20:02.591953", "modified": "2022-04-21 10:00:30.763417",
"module": null, "module": null,
"name": "Publish", "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": null,
"parent_document_type": "", "parent_document_type": "",
"parentfield": null, "parentfield": null,
@ -134,7 +173,7 @@
"heatmap_year": null, "heatmap_year": null,
"is_public": 1, "is_public": 1,
"is_standard": 0, "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", "modified": "2022-04-12 19:59:36.324953",
"module": null, "module": null,
"name": "Procedure", "name": "Procedure",
@ -157,26 +196,26 @@
}, },
{ {
"aggregate_function_based_on": null, "aggregate_function_based_on": null,
"based_on": "", "based_on": "creation",
"chart_name": "KM Mapping", "chart_name": "Test",
"chart_type": "Group By", "chart_type": "Count",
"color": "#449CF0", "color": "#CB2929",
"custom_options": null, "custom_options": null,
"docstatus": 0, "docstatus": 0,
"doctype": "Dashboard Chart", "doctype": "Dashboard Chart",
"document_type": "Kilometer Mapping", "document_type": "App Device",
"dynamic_filters_json": "[]", "dynamic_filters_json": "[]",
"filters_json": "[[\"Kilometer Mapping\",\"workflow_state\",\"=\",null,false]]", "filters_json": "[]",
"from_date": null, "from_date": null,
"group_by_based_on": "workflow_state", "group_by_based_on": null,
"group_by_type": "Count", "group_by_type": "Count",
"heatmap_year": null, "heatmap_year": null,
"is_public": 1, "is_public": 0,
"is_standard": 0, "is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.649487", "last_synced_on": null,
"modified": "2022-05-10 13:05:25.011604", "modified": "2022-05-11 11:06:15.280730",
"module": null, "module": null,
"name": "KM Mapping", "name": "Test",
"number_of_groups": 0, "number_of_groups": 0,
"parent": null, "parent": null,
"parent_document_type": "", "parent_document_type": "",
@ -185,10 +224,10 @@
"report_name": null, "report_name": null,
"source": "", "source": "",
"time_interval": "Yearly", "time_interval": "Yearly",
"timeseries": 0, "timeseries": 1,
"timespan": "Last Year", "timespan": "Last Year",
"to_date": null, "to_date": null,
"type": "Bar", "type": "Line",
"use_report_chart": 0, "use_report_chart": 0,
"value_based_on": "", "value_based_on": "",
"x_field": null, "x_field": null,
@ -197,25 +236,25 @@
{ {
"aggregate_function_based_on": null, "aggregate_function_based_on": null,
"based_on": "", "based_on": "",
"chart_name": "Publish Status", "chart_name": "KM Mapping",
"chart_type": "Group By", "chart_type": "Group By",
"color": "#7cbcf7", "color": "#449CF0",
"custom_options": null, "custom_options": null,
"docstatus": 0, "docstatus": 0,
"doctype": "Dashboard Chart", "doctype": "Dashboard Chart",
"document_type": "Publish", "document_type": "Kilometer Mapping",
"dynamic_filters_json": "[]", "dynamic_filters_json": "[]",
"filters_json": "[[\"Publish\",\"publish_status\",\"=\",null,false]]", "filters_json": "[[\"Kilometer Mapping\",\"workflow_state\",\"=\",null,false]]",
"from_date": null, "from_date": null,
"group_by_based_on": "vehicle", "group_by_based_on": "workflow_state",
"group_by_type": "Count", "group_by_type": "Count",
"heatmap_year": null, "heatmap_year": null,
"is_public": 1, "is_public": 1,
"is_standard": 0, "is_standard": 0,
"last_synced_on": "2022-05-11 13:13:51.737960", "last_synced_on": "2022-11-07 15:36:06.500997",
"modified": "2022-04-11 18:23:00.494268", "modified": "2022-05-10 13:05:25.011604",
"module": null, "module": null,
"name": "Publish Status", "name": "KM Mapping",
"number_of_groups": 0, "number_of_groups": 0,
"parent": null, "parent": null,
"parent_document_type": "", "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, "home_page": null,
"is_custom": 0, "is_custom": 0,
"list_sidebar": 1, "list_sidebar": 1,
"modified": "2022-02-07 13:11:48.057238", "modified": "2022-02-22 10:28:00.880225",
"name": "CMS User", "name": "CMS User",
"notifications": 1, "notifications": 1,
"parent": null, "parent": null,
@ -431,6 +431,30 @@
"two_factor_auth": 0, "two_factor_auth": 0,
"view_switcher": 1 "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, "bulk_actions": 0,
"dashboard": 0, "dashboard": 0,
@ -790,29 +814,5 @@
"timeline": 1, "timeline": 1,
"two_factor_auth": 0, "two_factor_auth": 0,
"view_switcher": 1 "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