Skip to content

Instantly share code, notes, and snippets.

@nathando
Created July 9, 2014 10:21
Show Gist options
  • Save nathando/ecbbf41596b7eced9f45 to your computer and use it in GitHub Desktop.
Save nathando/ecbbf41596b7eced9f45 to your computer and use it in GitHub Desktop.
Authenticated API
@frappe.whitelist(allow_guest=True)
@post_only
def login_test():
try:
frappe.local.login_manager.login()
full_name = frappe.response.pop("full_name")
# Return encrypted token
session_token = AESencrypt('password', str(frappe.local.session.get('sid')))
frappe.local.cookie_manager.set_cookie("sid", "")
return {"status": 1, "full_name": full_name, "s_token": session_token }
except frappe.AuthenticationError:
return {"status": -1, "error": "Authentication failed"}
@frappe.whitelist(allow_guest=True)
def list_po_test():
# Descrypt token
s_token = frappe.local.form_dict.get('s_token')
sid = AESdecrypt ('password', s_token)
frappe.form_dict['sid'] = sid
# Resume session
frappe.local.session_obj = Session(user=None, resume=True)
frappe.local.session = frappe.local.session_obj.data
frappe.session.user = frappe.local.session_obj.user
if frappe.local.request.method=="GET":
# For fields
default_dict = ["name", "per_received", "transaction_date"]
if frappe.local.form_dict.get('fields'):
frappe.local.form_dict['fields'] = list(set(default_dict + (json.loads(frappe.local.form_dict['fields']))))
else:
frappe.local.form_dict['fields'] = default_dict
# For filters - need to take only confirmed order
frappe.local.form_dict['filters'] = []
if frappe.local.form_dict.get('name'):
frappe.local.form_dict['filters'].append(["Purchase Order", "name", "=", frappe.local.form_dict.get('name')])
# Date format yyyy-mm-dd
if frappe.local.form_dict.get('from_date'):
frappe.local.form_dict['filters'].append(["Purchase Order", "transaction_date", ">=", frappe.local.form_dict.get('from_date')])
if frappe.local.form_dict.get('to_date'):
frappe.local.form_dict['filters'].append(["Purchase Order", "transaction_date", "<=", frappe.local.form_dict.get('to_date')])
# It failed here when call has_permission inside frappe.widgets.reportview.execute
# Raise Permission Error -> frappe.session.user seems unset ?
data = frappe.call(frappe.widgets.reportview.execute, "Purchase Order", **frappe.local.form_dict)
for d in data:
per_received = d.pop('per_received', None)
d.po_status = 0
if (per_received is not None):
d.po_status = 1 if (per_received == 100) else 0
return {'status':1, 'data': data}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment