Merge pull request #27288 from ankush/strict_linting
chore: cleanup linting errors and introduce strict linting checks
This commit is contained in:
commit
81eb6fde07
@ -16,3 +16,4 @@
|
||||
|
||||
# Whitespace fix throughout codebase
|
||||
4551d7d6029b6f587f6c99d4f8df5519241c6a86
|
||||
b147b85e6ac19a9220cd1e2958a6ebd99373283a
|
||||
|
72
.github/helper/.flake8_strict
vendored
Normal file
72
.github/helper/.flake8_strict
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
[flake8]
|
||||
ignore =
|
||||
B007,
|
||||
B950,
|
||||
E101,
|
||||
E111,
|
||||
E114,
|
||||
E116,
|
||||
E117,
|
||||
E121,
|
||||
E122,
|
||||
E123,
|
||||
E124,
|
||||
E125,
|
||||
E126,
|
||||
E127,
|
||||
E128,
|
||||
E131,
|
||||
E201,
|
||||
E202,
|
||||
E203,
|
||||
E211,
|
||||
E221,
|
||||
E222,
|
||||
E223,
|
||||
E224,
|
||||
E225,
|
||||
E226,
|
||||
E228,
|
||||
E231,
|
||||
E241,
|
||||
E242,
|
||||
E251,
|
||||
E261,
|
||||
E262,
|
||||
E265,
|
||||
E266,
|
||||
E271,
|
||||
E272,
|
||||
E273,
|
||||
E274,
|
||||
E301,
|
||||
E302,
|
||||
E303,
|
||||
E305,
|
||||
E306,
|
||||
E401,
|
||||
E402,
|
||||
E501,
|
||||
E502,
|
||||
E701,
|
||||
E702,
|
||||
E703,
|
||||
E741,
|
||||
F401,
|
||||
F403,
|
||||
W191,
|
||||
W291,
|
||||
W292,
|
||||
W293,
|
||||
W391,
|
||||
W503,
|
||||
W504,
|
||||
E711,
|
||||
E129,
|
||||
F841,
|
||||
E713,
|
||||
E712,
|
||||
|
||||
|
||||
max-line-length = 200
|
||||
exclude=.github/helper/semgrep_rules,test_*.py
|
@ -1,11 +1,12 @@
|
||||
name: Semgrep
|
||||
name: Linters
|
||||
|
||||
on:
|
||||
pull_request: { }
|
||||
|
||||
jobs:
|
||||
semgrep:
|
||||
name: Frappe Linter
|
||||
|
||||
linters:
|
||||
name: linters
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
@ -16,3 +17,11 @@ jobs:
|
||||
config: >-
|
||||
r/python.lang.correctness
|
||||
.github/helper/semgrep_rules
|
||||
|
||||
- name: Set up Python 3.8
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
|
||||
- name: Install and Run Pre-commit
|
||||
uses: pre-commit/action@v2.0.0
|
29
.pre-commit-config.yaml
Normal file
29
.pre-commit-config.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
exclude: 'node_modules|.git'
|
||||
default_stages: [commit]
|
||||
fail_fast: false
|
||||
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v4.0.1
|
||||
hooks:
|
||||
- id: trailing-whitespace
|
||||
files: "erpnext.*"
|
||||
exclude: ".*json$|.*txt$|.*csv|.*md"
|
||||
- id: check-yaml
|
||||
- id: no-commit-to-branch
|
||||
args: ['--branch', 'develop']
|
||||
- id: check-merge-conflict
|
||||
- id: check-ast
|
||||
|
||||
- repo: https://gitlab.com/pycqa/flake8
|
||||
rev: 3.9.2
|
||||
hooks:
|
||||
- id: flake8
|
||||
args: ['--config', '.github/helper/.flake8_strict']
|
||||
exclude: ".*setup.py$"
|
||||
|
||||
ci:
|
||||
autoupdate_schedule: weekly
|
||||
skip: []
|
||||
submodules: false
|
@ -359,7 +359,7 @@ def make_gl_entries(doc, credit_account, debit_account, against,
|
||||
try:
|
||||
make_gl_entries(gl_entries, cancel=(doc.docstatus == 2), merge_entries=True)
|
||||
frappe.db.commit()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
traceback = frappe.get_traceback()
|
||||
frappe.log_error(message=traceback)
|
||||
@ -430,7 +430,7 @@ def book_revenue_via_journal_entry(doc, credit_account, debit_account, against,
|
||||
|
||||
if submit:
|
||||
journal_entry.submit()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
traceback = frappe.get_traceback()
|
||||
frappe.log_error(message=traceback)
|
||||
|
@ -315,9 +315,8 @@ def update_args_for_pricing_rule(args):
|
||||
if not (args.item_group and args.brand):
|
||||
try:
|
||||
args.item_group, args.brand = frappe.get_cached_value("Item", args.item_code, ["item_group", "brand"])
|
||||
except TypeError:
|
||||
# invalid item_code
|
||||
return item_details
|
||||
except frappe.DoesNotExistError:
|
||||
return
|
||||
if not args.item_group:
|
||||
frappe.throw(_("Item Group not mentioned in item master for item {0}").format(args.item_code))
|
||||
|
||||
|
@ -81,7 +81,7 @@ def filter_pricing_rule_based_on_condition(pricing_rules, doc=None):
|
||||
try:
|
||||
if frappe.safe_eval(pricing_rule.condition, None, doc.as_dict()):
|
||||
filtered_pricing_rules.append(pricing_rule)
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
filtered_pricing_rules.append(pricing_rule)
|
||||
|
@ -158,7 +158,7 @@ def get_recipients_and_cc(customer, doc):
|
||||
if doc.cc_to != '':
|
||||
try:
|
||||
cc=[frappe.get_value('User', doc.cc_to, 'email')]
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return recipients, cc
|
||||
|
@ -24,7 +24,6 @@ from erpnext.accounts.deferred_revenue import validate_service_stop_date
|
||||
from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category import get_party_tax_withholding_details
|
||||
from frappe.model.utils import get_fetch_values
|
||||
from frappe.contacts.doctype.address.address import get_address_display
|
||||
from erpnext.accounts.doctype.tax_withholding_category.tax_withholding_category import get_party_tax_withholding_details
|
||||
|
||||
from erpnext.healthcare.utils import manage_invoice_submit_cancel
|
||||
|
||||
|
@ -4,4 +4,3 @@
|
||||
cur_frm.cscript.tax_table = "Sales Taxes and Charges";
|
||||
|
||||
{% include "erpnext/public/js/controllers/accounts.js" %}
|
||||
|
||||
|
@ -648,7 +648,7 @@ def get_default_contact(doctype, name):
|
||||
if out:
|
||||
try:
|
||||
return out[0][0]
|
||||
except:
|
||||
except Exception:
|
||||
return None
|
||||
else:
|
||||
return None
|
||||
|
@ -339,7 +339,7 @@ def sort_accounts(accounts, is_root=False, key="name"):
|
||||
"""Sort root types as Asset, Liability, Equity, Income, Expense"""
|
||||
|
||||
def compare_accounts(a, b):
|
||||
if re.split('\W+', a[key])[0].isdigit():
|
||||
if re.split(r'\W+', a[key])[0].isdigit():
|
||||
# if chart of accounts is numbered, then sort by number
|
||||
return cmp(a[key], b[key])
|
||||
elif is_root:
|
||||
|
@ -6,7 +6,6 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe import _
|
||||
|
||||
class Disease(Document):
|
||||
def validate(self):
|
||||
|
@ -7,7 +7,6 @@ import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import flt, cint
|
||||
from frappe import _
|
||||
|
||||
class SoilTexture(Document):
|
||||
soil_edit_order = [2, 1, 0]
|
||||
|
@ -6,7 +6,6 @@ from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe import _
|
||||
|
||||
class WaterAnalysis(Document):
|
||||
@frappe.whitelist()
|
||||
|
@ -11,7 +11,7 @@ from frappe.model.document import Document
|
||||
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
|
||||
from erpnext.assets.doctype.asset.depreciation \
|
||||
import get_disposal_account_and_cost_center, get_depreciation_accounts
|
||||
from erpnext.accounts.general_ledger import make_gl_entries, make_reverse_gl_entries
|
||||
from erpnext.accounts.general_ledger import make_reverse_gl_entries
|
||||
from erpnext.accounts.utils import get_account_currency
|
||||
from erpnext.controllers.accounts_controller import AccountsController
|
||||
|
||||
@ -546,7 +546,7 @@ class Asset(AccountsController):
|
||||
cwip_account = None
|
||||
try:
|
||||
cwip_account = get_asset_account("capital_work_in_progress_account", self.name, self.asset_category, self.company)
|
||||
except:
|
||||
except Exception:
|
||||
# if no cwip account found in category or company and "cwip is enabled" then raise else silently pass
|
||||
if cwip_enabled:
|
||||
raise
|
||||
|
@ -63,7 +63,7 @@ def validate_returned_items(doc):
|
||||
|
||||
if doc.doctype in ("Delivery Note", "Sales Invoice"):
|
||||
for d in frappe.db.sql("""select item_code, qty, serial_no, batch_no from `tabPacked Item`
|
||||
where parent = %s""".format(doc.doctype), doc.return_against, as_dict=1):
|
||||
where parent = %s""", doc.return_against, as_dict=1):
|
||||
valid_items = get_ref_item_dict(valid_items, d)
|
||||
|
||||
already_returned_items = get_already_returned_items(doc)
|
||||
|
@ -28,10 +28,10 @@ class AppointmentBookingSettings(Document):
|
||||
to_time = datetime.datetime.strptime(
|
||||
self.min_date+record.to_time, self.format_string)
|
||||
timedelta = to_time-from_time
|
||||
self.validate_from_and_to_time(from_time, to_time)
|
||||
self.validate_from_and_to_time(from_time, to_time, record)
|
||||
self.duration_is_divisible(from_time, to_time)
|
||||
|
||||
def validate_from_and_to_time(self, from_time, to_time):
|
||||
def validate_from_and_to_time(self, from_time, to_time, record):
|
||||
if from_time > to_time:
|
||||
err_msg = _('<b>From Time</b> cannot be later than <b>To Time</b> for {0}').format(record.day_of_week)
|
||||
frappe.throw(_(err_msg))
|
||||
|
@ -371,4 +371,3 @@ def add_lead_to_prospect(lead, prospect):
|
||||
prospect.save(ignore_permissions=True)
|
||||
frappe.msgprint(_('Lead {0} has been added to prospect {1}.').format(frappe.bold(lead), frappe.bold(prospect.name)),
|
||||
title=_('Lead Added'), indicator='green')
|
||||
|
@ -67,7 +67,7 @@ class SocialMediaPost(Document):
|
||||
self.db_set("linkedin_post_id", linkedin_post.headers['X-RestLi-Id'])
|
||||
self.db_set("post_status", "Posted")
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
self.db_set("post_status", "Error")
|
||||
title = _("Error while POSTING {0}").format(self.name)
|
||||
frappe.log_error(message=frappe.get_traceback(), title=title)
|
||||
|
@ -88,7 +88,7 @@ def simulate(domain='Manufacturing', days=100):
|
||||
elif domain=='Education':
|
||||
edu.work()
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.set_global('demo_last_date', current_date)
|
||||
raise
|
||||
finally:
|
||||
|
@ -95,7 +95,7 @@ class CourseSchedulingTool(Document):
|
||||
if self.day == calendar.day_name[getdate(d.schedule_date).weekday()]:
|
||||
frappe.delete_doc("Course Schedule", d.name)
|
||||
rescheduled.append(d.name)
|
||||
except:
|
||||
except Exception:
|
||||
reschedule_errors.append(d.name)
|
||||
return rescheduled, reschedule_errors
|
||||
|
||||
|
@ -219,7 +219,7 @@ def get_quiz(quiz_name, course):
|
||||
try:
|
||||
quiz = frappe.get_doc("Quiz", quiz_name)
|
||||
questions = quiz.get_questions()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.throw(_("Quiz {0} does not exist").format(quiz_name), frappe.DoesNotExistError)
|
||||
return None
|
||||
|
||||
|
@ -88,7 +88,7 @@ class xml2dict(object):
|
||||
ns = http://cs.sfsu.edu/csc867/myscheduler
|
||||
name = patients
|
||||
"""
|
||||
result = re.compile("\{(.*)\}(.*)").search(tag)
|
||||
result = re.compile(r"\{(.*)\}(.*)").search(tag)
|
||||
if result:
|
||||
value.namespace, tag = result.groups()
|
||||
|
||||
|
@ -266,7 +266,7 @@ class TallyMigration(Document):
|
||||
|
||||
self.is_master_data_processed = 1
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
self.publish("Process Master Data", _("Process Failed"), -1, 5)
|
||||
self.log()
|
||||
|
||||
@ -302,14 +302,14 @@ class TallyMigration(Document):
|
||||
try:
|
||||
party_doc = frappe.get_doc(party)
|
||||
party_doc.insert()
|
||||
except:
|
||||
except Exception:
|
||||
self.log(party_doc)
|
||||
addresses_file = frappe.get_doc("File", {"file_url": addresses_file_url})
|
||||
for address in json.loads(addresses_file.get_content()):
|
||||
try:
|
||||
address_doc = frappe.get_doc(address)
|
||||
address_doc.insert(ignore_mandatory=True)
|
||||
except:
|
||||
except Exception:
|
||||
self.log(address_doc)
|
||||
|
||||
def create_items_uoms(items_file_url, uoms_file_url):
|
||||
@ -319,7 +319,7 @@ class TallyMigration(Document):
|
||||
try:
|
||||
uom_doc = frappe.get_doc(uom)
|
||||
uom_doc.insert()
|
||||
except:
|
||||
except Exception:
|
||||
self.log(uom_doc)
|
||||
|
||||
items_file = frappe.get_doc("File", {"file_url": items_file_url})
|
||||
@ -327,7 +327,7 @@ class TallyMigration(Document):
|
||||
try:
|
||||
item_doc = frappe.get_doc(item)
|
||||
item_doc.insert()
|
||||
except:
|
||||
except Exception:
|
||||
self.log(item_doc)
|
||||
|
||||
try:
|
||||
@ -346,7 +346,7 @@ class TallyMigration(Document):
|
||||
self.is_master_data_imported = 1
|
||||
frappe.db.commit()
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
self.publish("Import Master Data", _("Process Failed"), -1, 5)
|
||||
frappe.db.rollback()
|
||||
self.log()
|
||||
@ -370,7 +370,7 @@ class TallyMigration(Document):
|
||||
if processed_voucher:
|
||||
vouchers.append(processed_voucher)
|
||||
frappe.db.commit()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
self.log(voucher)
|
||||
return vouchers
|
||||
@ -494,7 +494,7 @@ class TallyMigration(Document):
|
||||
|
||||
self.is_day_book_data_processed = 1
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
self.publish("Process Day Book Data", _("Process Failed"), -1, 5)
|
||||
self.log()
|
||||
|
||||
@ -564,7 +564,7 @@ class TallyMigration(Document):
|
||||
is_last = True
|
||||
frappe.enqueue_doc(self.doctype, self.name, "_import_vouchers", queue="long", timeout=3600, start=index+1, total=total, is_last=is_last)
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
self.log()
|
||||
|
||||
finally:
|
||||
@ -583,7 +583,7 @@ class TallyMigration(Document):
|
||||
voucher_doc.submit()
|
||||
self.publish("Importing Vouchers", _("{} of {}").format(index, total), index, total)
|
||||
frappe.db.commit()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
self.log(voucher_doc)
|
||||
|
||||
|
@ -48,7 +48,7 @@ class LabTest(Document):
|
||||
if item.result_value and item.secondary_uom and item.conversion_factor:
|
||||
try:
|
||||
item.secondary_uom_result = float(item.result_value) * float(item.conversion_factor)
|
||||
except:
|
||||
except Exception:
|
||||
item.secondary_uom_result = ''
|
||||
frappe.msgprint(_('Row #{0}: Result for Secondary UOM not calculated').format(item.idx), title = _('Warning'))
|
||||
|
||||
|
@ -7,7 +7,6 @@ import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import cstr, getdate, add_days
|
||||
from frappe import _
|
||||
from frappe.model.mapper import get_mapped_doc
|
||||
|
||||
|
||||
|
@ -18,4 +18,3 @@
|
||||
<div class="patient-details">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -82,7 +82,7 @@ class DailyWorkSummary(Document):
|
||||
crop=True
|
||||
)
|
||||
d.image = thumbnail_image
|
||||
except:
|
||||
except Exception:
|
||||
d.image = original_image
|
||||
|
||||
if d.sender in did_not_reply:
|
||||
|
@ -235,4 +235,3 @@ def make_payment_entry(expense_claim, payable_account, amt):
|
||||
pe.references[0].allocated_amount = amt
|
||||
pe.insert()
|
||||
pe.submit()
|
||||
|
||||
|
@ -51,7 +51,7 @@ class LeaveControlPanel(Document):
|
||||
la.docstatus = 1
|
||||
la.save()
|
||||
leave_allocated_for.append(d[0])
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
if leave_allocated_for:
|
||||
msgprint(_("Leaves Allocated Successfully for {0}").format(comma_and(leave_allocated_for)))
|
||||
|
@ -5,7 +5,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.utils import getdate, cstr, add_days, date_diff, getdate, ceil
|
||||
from frappe.utils import getdate, cstr, add_days, date_diff, ceil
|
||||
from frappe.model.document import Document
|
||||
from erpnext.hr.utils import validate_overlap
|
||||
from frappe.utils.background_jobs import enqueue
|
||||
|
@ -96,8 +96,6 @@ def get_columns():
|
||||
}
|
||||
]
|
||||
|
||||
return columns
|
||||
|
||||
|
||||
def get_vehicle_log_data(filters):
|
||||
start_date, end_date = get_period_dates(filters)
|
||||
|
@ -7,7 +7,7 @@ import frappe, erpnext
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import (nowdate, getdate, now_datetime, get_datetime, flt, date_diff, get_last_day, cint,
|
||||
get_first_day, get_datetime, add_days)
|
||||
get_first_day, add_days)
|
||||
from erpnext.controllers.accounts_controller import AccountsController
|
||||
from erpnext.accounts.general_ledger import make_gl_entries
|
||||
|
||||
|
@ -6,10 +6,9 @@ from __future__ import unicode_literals
|
||||
import frappe, erpnext
|
||||
import json
|
||||
from frappe import _
|
||||
from frappe.utils import flt, getdate, cint
|
||||
from six import iteritems
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import date_diff, add_days, getdate, add_months, get_first_day, get_datetime
|
||||
from frappe.utils import flt, cint, date_diff, add_days, getdate, add_months, get_first_day, get_datetime
|
||||
from erpnext.controllers.accounts_controller import AccountsController
|
||||
from erpnext.accounts.general_ledger import make_gl_entries
|
||||
from erpnext.loan_management.doctype.loan_security_shortfall.loan_security_shortfall import update_shortfall_status
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
|
||||
class SanctionedLoanAmount(Document):
|
||||
|
@ -82,4 +82,3 @@ frappe.tour['Routing'] = [
|
||||
description: __("Enter the Operation, the table will fetch the Operation details like Hourly Rate, Workstation automatically.\n\n After that, set the Operation Time in minutes and the table will calculate the Operation Costs based on the Hourly Rate and Operation Time.")
|
||||
}
|
||||
];
|
||||
|
||||
|
@ -7,7 +7,7 @@ from frappe import _
|
||||
from frappe.utils.data import comma_and
|
||||
|
||||
def execute(filters=None):
|
||||
# if not filters: filters = {}
|
||||
# if not filters: filters = {}
|
||||
columns = get_columns()
|
||||
summ_data = []
|
||||
|
||||
|
@ -207,7 +207,7 @@ def get_member_based_on_subscription(subscription_id, email=None, customer_id=No
|
||||
|
||||
try:
|
||||
return frappe.get_doc("Member", members[0]["name"])
|
||||
except:
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
@ -393,7 +393,7 @@ def notify_failure(log):
|
||||
""".format(get_link_to_form("Error Log", log.name))
|
||||
|
||||
sendmail_to_system_managers("[Important] [ERPNext] Razorpay membership webhook failed , please check.", content)
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
@ -402,7 +402,7 @@ def get_plan_from_razorpay_id(plan_id):
|
||||
|
||||
try:
|
||||
return plan[0]["name"]
|
||||
except:
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@ def execute():
|
||||
buying_cost_center, selling_cost_center, expense_account, income_account, default_supplier
|
||||
FROM `tabItem`;
|
||||
''', companies[0].name)
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
item_details = frappe.db.sql(""" SELECT name, default_warehouse,
|
||||
|
@ -11,5 +11,5 @@ def execute():
|
||||
|
||||
frappe.reload_doc("stock", "doctype", "stock_ledger_entry")
|
||||
frappe.reload_doc("stock", "doctype", "serial_no")
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
@ -86,7 +86,7 @@ def execute():
|
||||
try:
|
||||
employee_other_income.submit()
|
||||
migrated.append([proof.employee, proof.payroll_period])
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
if not frappe.db.table_exists("Employee Tax Exemption Declaration"):
|
||||
@ -108,5 +108,5 @@ def execute():
|
||||
|
||||
try:
|
||||
employee_other_income.submit()
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
@ -20,5 +20,5 @@ def execute():
|
||||
})
|
||||
if count % 200 == 0:
|
||||
frappe.db.commit()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
|
@ -887,4 +887,3 @@ def delete_gst_settings_for_company(doc, method):
|
||||
gst_settings.remove(d)
|
||||
|
||||
gst_settings.save()
|
||||
|
||||
|
@ -41,7 +41,7 @@ def get_data(filters):
|
||||
}
|
||||
|
||||
# Regular expression set to remove all the special characters
|
||||
special_characters = "[$%^*()+\\[\]{};':\"\\|<>.?]"
|
||||
special_characters = r"[$%^*()+\\[\]{};':\"\\|<>.?]"
|
||||
|
||||
for row in data:
|
||||
set_defaults(row)
|
||||
|
@ -116,7 +116,7 @@ def get_result_as_list(data, filters):
|
||||
if d.get("voucher_no").startswith("{0}-".format(JournalCode)) or d.get("voucher_no").startswith("{0}/".format(JournalCode)):
|
||||
EcritureNum = re.split("-|/", d.get("voucher_no"))[1]
|
||||
else:
|
||||
EcritureNum = re.search("{0}(\d+)".format(JournalCode), d.get("voucher_no"), re.IGNORECASE).group(1)
|
||||
EcritureNum = re.search(r"{0}(\d+)".format(JournalCode), d.get("voucher_no"), re.IGNORECASE).group(1)
|
||||
|
||||
EcritureDate = format_datetime(d.get("GlPostDate"), "yyyyMMdd")
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe, json
|
||||
import json
|
||||
import frappe
|
||||
from frappe.utils.nestedset import get_root_of
|
||||
from frappe.utils import cint
|
||||
from erpnext.accounts.doctype.pos_profile.pos_profile import get_item_groups
|
||||
@ -209,7 +210,6 @@ def check_opening_entry(user):
|
||||
|
||||
@frappe.whitelist()
|
||||
def create_opening_voucher(pos_profile, company, balance_details):
|
||||
import json
|
||||
balance_details = json.loads(balance_details)
|
||||
|
||||
new_pos_opening = frappe.get_doc({
|
||||
|
@ -79,7 +79,8 @@ class NamingSeries(Document):
|
||||
options = self.scrub_options_list(ol)
|
||||
|
||||
# validate names
|
||||
for i in options: self.validate_series_name(i)
|
||||
for i in options:
|
||||
self.validate_series_name(i)
|
||||
|
||||
if options and self.user_must_always_select:
|
||||
options = [''] + options
|
||||
@ -138,7 +139,7 @@ class NamingSeries(Document):
|
||||
|
||||
def validate_series_name(self, n):
|
||||
import re
|
||||
if not re.match("^[\w\- /.#{}]*$", n, re.UNICODE):
|
||||
if not re.match(r"^[\w\- \/.#{}]+$", n, re.UNICODE):
|
||||
throw(_('Special Characters except "-", "#", ".", "/", "{" and "}" not allowed in naming series'))
|
||||
|
||||
@frappe.whitelist()
|
||||
|
@ -106,7 +106,7 @@ def fin(args):
|
||||
def make_sample_data(domains):
|
||||
try:
|
||||
sample_data.make_sample_data(domains)
|
||||
except:
|
||||
except Exception:
|
||||
# clear message
|
||||
if frappe.message_log:
|
||||
frappe.message_log.pop()
|
||||
|
@ -109,7 +109,7 @@ def get_exchange_rate(from_currency, to_currency, transaction_date=None, args=No
|
||||
value = response.json()["result"]
|
||||
cache.setex(name=key, time=21600, value=flt(value))
|
||||
return flt(value)
|
||||
except:
|
||||
except Exception:
|
||||
frappe.log_error(title="Get Exchange Rate")
|
||||
frappe.msgprint(_("Unable to find exchange rate for {0} to {1} for key date {2}. Please create a Currency Exchange record manually").format(from_currency, to_currency, transaction_date))
|
||||
return 0.0
|
||||
|
@ -331,7 +331,7 @@ class DeliveryNote(SellingController):
|
||||
credit_note_link = frappe.utils.get_link_to_form('Sales Invoice', return_invoice.name)
|
||||
|
||||
frappe.msgprint(_("Credit Note {0} has been created automatically").format(credit_note_link))
|
||||
except:
|
||||
except Exception:
|
||||
frappe.throw(_("Could not create Credit Note automatically, please uncheck 'Issue Credit Note' and submit again"))
|
||||
|
||||
def update_billed_amount_based_on_so(so_detail, update_modified=True):
|
||||
|
@ -573,7 +573,7 @@ def auto_fetch_serial_number(qty, item_code, warehouse, posting_date=None, batch
|
||||
if batch_nos:
|
||||
try:
|
||||
filters["batch_no"] = json.loads(batch_nos) if (type(json.loads(batch_nos)) == list) else [json.loads(batch_nos)]
|
||||
except:
|
||||
except Exception:
|
||||
filters["batch_no"] = [batch_nos]
|
||||
|
||||
if posting_date:
|
||||
|
@ -1101,4 +1101,3 @@ function check_should_not_attach_bom_items(bom_no) {
|
||||
}
|
||||
|
||||
$.extend(cur_frm.cscript, new erpnext.stock.StockEntry({frm: cur_frm}));
|
||||
|
||||
|
@ -24,4 +24,3 @@ QUnit.test("test manufacture from bom", function(assert) {
|
||||
() => done()
|
||||
]);
|
||||
});
|
||||
|
||||
|
@ -302,4 +302,3 @@ erpnext.stock.StockReconciliation = class StockReconciliation extends erpnext.st
|
||||
};
|
||||
|
||||
cur_frm.cscript = new erpnext.stock.StockReconciliation({frm: cur_frm});
|
||||
|
||||
|
@ -15,4 +15,3 @@ frappe.ui.form.on('Stock Settings', {
|
||||
frm.set_query("sample_retention_warehouse", filters);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -86,4 +86,3 @@ function convert_to_group_or_ledger(frm){
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -166,7 +166,7 @@ def create_material_request(material_requests):
|
||||
mr.submit()
|
||||
mr_list.append(mr)
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
_log_exception()
|
||||
|
||||
if mr_list:
|
||||
|
@ -130,4 +130,3 @@ def get_filter_conditions(filters: Filters) -> QueryArgs:
|
||||
{"work_order_filter": f"AND wo.name='{work_order_name}'"}
|
||||
)
|
||||
return filter_conditions
|
||||
|
||||
|
@ -4,6 +4,7 @@
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from operator import itemgetter
|
||||
from frappe.utils import date_diff, flt, cint
|
||||
from six import iteritems
|
||||
from erpnext.stock.doctype.serial_no.serial_no import get_serial_nos
|
||||
@ -12,7 +13,7 @@ def execute(filters=None):
|
||||
columns = get_columns(filters)
|
||||
item_details = get_fifo_queue(filters)
|
||||
to_date = filters["to_date"]
|
||||
_func = lambda x: x[1]
|
||||
_func = itemgetter(1)
|
||||
|
||||
data = []
|
||||
for item, item_dict in iteritems(item_details):
|
||||
|
@ -2,6 +2,7 @@
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
from operator import itemgetter
|
||||
import frappe, erpnext
|
||||
from frappe import _
|
||||
from frappe.utils import flt, cint, getdate, now, date_diff
|
||||
@ -44,7 +45,7 @@ def execute(filters=None):
|
||||
data = []
|
||||
conversion_factors = {}
|
||||
|
||||
_func = lambda x: x[1]
|
||||
_func = itemgetter(1)
|
||||
|
||||
for (company, item, warehouse) in sorted(iwb_map):
|
||||
if item_map.get(item):
|
||||
|
@ -29,7 +29,7 @@ def repost(only_actual=False, allow_negative_stock=False, allow_zero_rate=False,
|
||||
try:
|
||||
repost_stock(d[0], d[1], allow_zero_rate, only_actual, only_bin, allow_negative_stock)
|
||||
frappe.db.commit()
|
||||
except:
|
||||
except Exception:
|
||||
frappe.db.rollback()
|
||||
|
||||
if allow_negative_stock:
|
||||
@ -247,5 +247,5 @@ def reset_serial_no_status_and_warehouse(serial_nos=None):
|
||||
|
||||
sr.via_stock_ledger = True
|
||||
sr.save()
|
||||
except:
|
||||
except Exception:
|
||||
pass
|
||||
|
@ -13,7 +13,6 @@ from frappe.utils import time_diff_in_seconds, getdate, get_weekdays, add_to_dat
|
||||
from datetime import datetime
|
||||
from frappe.utils.safe_exec import get_safe_globals
|
||||
from erpnext.support.doctype.issue.issue import get_holidays
|
||||
from frappe.utils.safe_exec import get_safe_globals
|
||||
|
||||
class ServiceLevelAgreement(Document):
|
||||
def validate(self):
|
||||
|
@ -127,7 +127,7 @@ def get_price(item_code, price_list, customer_group, company, qty=1):
|
||||
return price_obj
|
||||
|
||||
def get_non_stock_item_status(item_code, item_warehouse_field):
|
||||
#if item belongs to product bundle, check if bundle items are in stock
|
||||
#if item belongs to product bundle, check if bundle items are in stock
|
||||
if frappe.db.exists("Product Bundle", item_code):
|
||||
items = frappe.get_doc("Product Bundle", item_code).get_all_children()
|
||||
bundle_warehouse = frappe.db.get_value('Item', item_code, item_warehouse_field)
|
||||
|
Loading…
x
Reference in New Issue
Block a user