- MagicPython
- atom-beautify
- bracket-colorizer
- linter-eslint
- linter-pycodestyle - also requires you to install
pycodestyle
python -m pip install pycodestyle --user
I use an 89 character line length and ignore these error codes:
from requests import request | |
from base64 import b64encode | |
api_secret = get_decrypted_password("User", "example_username", "api_secret") # this is an internal frappe method | |
token = frappe.get_value("User", "example_username", "api_key") # this is an internal frappe method | |
url = "https://" + subdomain + ".some_domain.com" | |
headers = { | |
"Content-Type": "application/json", | |
"Authorization": "Basic " | |
+ b64encode(bytes(token + ":" + api_secret, "ascii")).decode("ascii"), |
import asyncio | |
from functools import wraps | |
def dec(fn): | |
@wraps(fn) | |
async def wrapper(*args, **kwargs): | |
print(fn, args, kwargs) # <function foo at 0x10952d598> () {} | |
await asyncio.sleep(5) |
pycodestyle
python -m pip install pycodestyle --user
I use an 89 character line length and ignore these error codes:
doc_events = { | |
"Sales Order": { | |
"on_submit": "my_custom_app.workflows.make_stock_entry_on_so_submit" | |
}, | |
"on_cancel": "my_custom_app.workflows.cancel_stock_entry_on_so_cancel" | |
} | |
} |
#this can be done in a either a document hook or | |
import types | |
import rounding_error_monkey_patch | |
doc = frappe.new_doc("Journal Entry") | |
# monkey patch validate_invoices method to bypass (incorrect) rounding error | |
doc.validate_invoices = types.MethodType(rounding_error_monkey_patch, doc) | |
return doc |
""" | |
# graphql query to run in the playground | |
{ | |
hello | |
} | |
""" | |
from ariadne import QueryType, graphql, make_executable_schema | |
from ariadne.constants import PLAYGROUND_HTML | |
from quart import Quart, request, jsonify |
# Overriding Whitelisted Methods (in my_app/hooks.py) | |
# ------------------------------ | |
override_whitelisted_methods = { | |
"frappe.model.workflow.apply_workflow": "my_app.workflows.apply_workflow" | |
} | |
# in my_app/workflows.py | |
import frappe | |
from frappe.model.workflow import apply_workflow as model_apply_workflow |
import requests | |
from base64 import b64encode | |
import json | |
def push_po(doc, method): | |
# additional business logic or other validations | |
# prune document fields and turn into json | |
payload = json.loads({"docfield": doc}) | |
api_key, api_secret = frappe.get_value("User", frappe.session.user, ["api_key", "api_secret"]) |
{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead) -%} | |
{% if letter_head and not no_letterhead %} | |
<div class="letter-head">{{ letter_head }}</div> | |
{% endif %} | |
{%- if doc.meta.is_submittable and doc.docstatus==0-%} | |
<div class="alert alert-info text-center"> | |
<h4 style="margin: 0px;">{{ _("DRAFT") }}</h4></div> | |
{%- endif -%} | |
{%- if doc.meta.is_submittable and doc.docstatus==2-%} | |
<div class="alert alert-danger text-center"> |