style: format code with black

This commit is contained in:
Ankush Menat
2022-03-28 18:52:46 +05:30
parent 21e00da3d6
commit 494bd9ef78
1395 changed files with 91704 additions and 62532 deletions

View File

@@ -10,7 +10,9 @@ from frappe.utils import cint, cstr, flt, get_time, now_datetime
from erpnext.controllers.status_updater import StatusUpdater
class UOMMustBeIntegerError(frappe.ValidationError): pass
class UOMMustBeIntegerError(frappe.ValidationError):
pass
class TransactionBase(StatusUpdater):
def validate_posting_time(self):
@@ -18,69 +20,79 @@ class TransactionBase(StatusUpdater):
if frappe.flags.in_import and self.posting_date:
self.set_posting_time = 1
if not getattr(self, 'set_posting_time', None):
if not getattr(self, "set_posting_time", None):
now = now_datetime()
self.posting_date = now.strftime('%Y-%m-%d')
self.posting_time = now.strftime('%H:%M:%S.%f')
self.posting_date = now.strftime("%Y-%m-%d")
self.posting_time = now.strftime("%H:%M:%S.%f")
elif self.posting_time:
try:
get_time(self.posting_time)
except ValueError:
frappe.throw(_('Invalid Posting Time'))
frappe.throw(_("Invalid Posting Time"))
def add_calendar_event(self, opts, force=False):
if cstr(self.contact_by) != cstr(self._prev.contact_by) or \
cstr(self.contact_date) != cstr(self._prev.contact_date) or force or \
(hasattr(self, "ends_on") and cstr(self.ends_on) != cstr(self._prev.ends_on)):
if (
cstr(self.contact_by) != cstr(self._prev.contact_by)
or cstr(self.contact_date) != cstr(self._prev.contact_date)
or force
or (hasattr(self, "ends_on") and cstr(self.ends_on) != cstr(self._prev.ends_on))
):
self.delete_events()
self._add_calendar_event(opts)
def delete_events(self):
participations = frappe.get_all("Event Participants", filters={"reference_doctype": self.doctype, "reference_docname": self.name,
"parenttype": "Event"}, fields=["name", "parent"])
participations = frappe.get_all(
"Event Participants",
filters={
"reference_doctype": self.doctype,
"reference_docname": self.name,
"parenttype": "Event",
},
fields=["name", "parent"],
)
if participations:
for participation in participations:
total_participants = frappe.get_all("Event Participants", filters={"parenttype": "Event", "parent": participation.parent})
total_participants = frappe.get_all(
"Event Participants", filters={"parenttype": "Event", "parent": participation.parent}
)
if len(total_participants) <= 1:
frappe.db.sql("delete from `tabEvent` where name='%s'" % participation.parent)
frappe.db.sql("delete from `tabEvent Participants` where name='%s'" % participation.name)
def _add_calendar_event(self, opts):
opts = frappe._dict(opts)
if self.contact_date:
event = frappe.get_doc({
"doctype": "Event",
"owner": opts.owner or self.owner,
"subject": opts.subject,
"description": opts.description,
"starts_on": self.contact_date,
"ends_on": opts.ends_on,
"event_type": "Private"
})
event.append('event_participants', {
"reference_doctype": self.doctype,
"reference_docname": self.name
event = frappe.get_doc(
{
"doctype": "Event",
"owner": opts.owner or self.owner,
"subject": opts.subject,
"description": opts.description,
"starts_on": self.contact_date,
"ends_on": opts.ends_on,
"event_type": "Private",
}
)
event.append(
"event_participants", {"reference_doctype": self.doctype, "reference_docname": self.name}
)
event.insert(ignore_permissions=True)
if frappe.db.exists("User", self.contact_by):
frappe.share.add("Event", event.name, self.contact_by,
flags={"ignore_share_permission": True})
frappe.share.add("Event", event.name, self.contact_by, flags={"ignore_share_permission": True})
def validate_uom_is_integer(self, uom_field, qty_fields):
validate_uom_is_integer(self, uom_field, qty_fields)
def validate_with_previous_doc(self, ref):
self.exclude_fields = ["conversion_factor", "uom"] if self.get('is_return') else []
self.exclude_fields = ["conversion_factor", "uom"] if self.get("is_return") else []
for key, val in ref.items():
is_child = val.get("is_child_table")
@@ -105,8 +117,9 @@ class TransactionBase(StatusUpdater):
def compare_values(self, ref_doc, fields, doc=None):
for reference_doctype, ref_dn_list in ref_doc.items():
for reference_name in ref_dn_list:
prevdoc_values = frappe.db.get_value(reference_doctype, reference_name,
[d[0] for d in fields], as_dict=1)
prevdoc_values = frappe.db.get_value(
reference_doctype, reference_name, [d[0] for d in fields], as_dict=1
)
if not prevdoc_values:
frappe.throw(_("Invalid reference {0} {1}").format(reference_doctype, reference_name))
@@ -115,7 +128,6 @@ class TransactionBase(StatusUpdater):
if prevdoc_values[field] is not None and field not in self.exclude_fields:
self.validate_value(field, condition, prevdoc_values[field], doc)
def validate_rate_with_reference_doc(self, ref_details):
buying_doctypes = ["Purchase Order", "Purchase Invoice", "Purchase Receipt"]
@@ -131,17 +143,26 @@ class TransactionBase(StatusUpdater):
if d.get(ref_link_field):
ref_rate = frappe.db.get_value(ref_dt + " Item", d.get(ref_link_field), "rate")
if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= .01:
if abs(flt(d.rate - ref_rate, d.precision("rate"))) >= 0.01:
if action == "Stop":
role_allowed_to_override = frappe.db.get_single_value(settings_doc, 'role_to_override_stop_action')
role_allowed_to_override = frappe.db.get_single_value(
settings_doc, "role_to_override_stop_action"
)
if role_allowed_to_override not in frappe.get_roles():
frappe.throw(_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4})").format(
d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate))
frappe.throw(
_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4})").format(
d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate
)
)
else:
frappe.msgprint(_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4})").format(
d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate), title=_("Warning"), indicator="orange")
frappe.msgprint(
_("Row #{0}: Rate must be same as {1}: {2} ({3} / {4})").format(
d.idx, ref_dt, d.get(ref_dn_field), d.rate, ref_rate
),
title=_("Warning"),
indicator="orange",
)
def get_link_filters(self, for_doctype):
if hasattr(self, "prev_link_mapper") and self.prev_link_mapper.get(for_doctype):
@@ -150,11 +171,7 @@ class TransactionBase(StatusUpdater):
values = filter(None, tuple(item.as_dict()[fieldname] for item in self.items))
if values:
ret = {
for_doctype : {
"filters": [[for_doctype, "name", "in", values]]
}
}
ret = {for_doctype: {"filters": [[for_doctype, "name", "in", values]]}}
else:
ret = None
else:
@@ -163,17 +180,17 @@ class TransactionBase(StatusUpdater):
return ret
def reset_default_field_value(self, default_field: str, child_table: str, child_table_field: str):
""" Reset "Set default X" fields on forms to avoid confusion.
"""Reset "Set default X" fields on forms to avoid confusion.
example:
doc = {
"set_from_warehouse": "Warehouse A",
"items": [{"from_warehouse": "warehouse B"}, {"from_warehouse": "warehouse A"}],
}
Since this has dissimilar values in child table, the default field will be erased.
example:
doc = {
"set_from_warehouse": "Warehouse A",
"items": [{"from_warehouse": "warehouse B"}, {"from_warehouse": "warehouse A"}],
}
Since this has dissimilar values in child table, the default field will be erased.
doc.reset_default_field_value("set_from_warehouse", "items", "from_warehouse")
"""
doc.reset_default_field_value("set_from_warehouse", "items", "from_warehouse")
"""
child_table_values = set()
for row in self.get(child_table):
@@ -182,8 +199,11 @@ class TransactionBase(StatusUpdater):
if len(child_table_values) > 1:
self.set(default_field, None)
def delete_events(ref_type, ref_name):
events = frappe.db.sql_list(""" SELECT
events = (
frappe.db.sql_list(
""" SELECT
distinct `tabEvent`.name
from
`tabEvent`, `tabEvent Participants`
@@ -191,18 +211,27 @@ def delete_events(ref_type, ref_name):
`tabEvent`.name = `tabEvent Participants`.parent
and `tabEvent Participants`.reference_doctype = %s
and `tabEvent Participants`.reference_docname = %s
""", (ref_type, ref_name)) or []
""",
(ref_type, ref_name),
)
or []
)
if events:
frappe.delete_doc("Event", events, for_reload=True)
def validate_uom_is_integer(doc, uom_field, qty_fields, child_dt=None):
if isinstance(qty_fields, str):
qty_fields = [qty_fields]
distinct_uoms = list(set(d.get(uom_field) for d in doc.get_all_children()))
integer_uoms = list(filter(lambda uom: frappe.db.get_value("UOM", uom,
"must_be_whole_number", cache=True) or None, distinct_uoms))
integer_uoms = list(
filter(
lambda uom: frappe.db.get_value("UOM", uom, "must_be_whole_number", cache=True) or None,
distinct_uoms,
)
)
if not integer_uoms:
return
@@ -213,6 +242,11 @@ def validate_uom_is_integer(doc, uom_field, qty_fields, child_dt=None):
qty = d.get(f)
if qty:
if abs(cint(qty) - flt(qty)) > 0.0000001:
frappe.throw(_("Row {1}: Quantity ({0}) cannot be a fraction. To allow this, disable '{2}' in UOM {3}.") \
.format(qty, d.idx, frappe.bold(_("Must be Whole Number")), frappe.bold(d.get(uom_field))),
UOMMustBeIntegerError)
frappe.throw(
_(
"Row {1}: Quantity ({0}) cannot be a fraction. To allow this, disable '{2}' in UOM {3}."
).format(
qty, d.idx, frappe.bold(_("Must be Whole Number")), frappe.bold(d.get(uom_field))
),
UOMMustBeIntegerError,
)