mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-07 23:22:52 +00:00
Merge pull request #27299 from ankush/strict_linting_v13
chore: cleanup linting errors and introduce strict linting checks
This commit is contained in:
@@ -13,3 +13,4 @@
|
||||
|
||||
# Whitespace trimming throughout codebase
|
||||
9bb69e711a5da43aaf8c8ecb5601aeffd89dbe5a
|
||||
f0bcb753fb7ebbb64bb0d6906d431d002f0f7d8f
|
||||
|
||||
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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -65,7 +65,7 @@ def get_data(filters, leave_types):
|
||||
for leave_type in leave_types:
|
||||
remaining = 0
|
||||
if leave_type in available_leave["leave_allocation"]:
|
||||
# opening balance
|
||||
# opening balance
|
||||
remaining = available_leave["leave_allocation"][leave_type]['remaining_leaves']
|
||||
|
||||
row += [remaining]
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -166,7 +166,7 @@ def create_material_request(material_requests):
|
||||
mr.submit()
|
||||
mr_list.append(mr)
|
||||
|
||||
except:
|
||||
except Exception:
|
||||
_log_exception()
|
||||
|
||||
if mr_list:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -291,10 +291,6 @@ class Issue(Document):
|
||||
self.agreement_status = "Ongoing"
|
||||
self.save()
|
||||
|
||||
def reset_issue_metrics(self):
|
||||
self.db_set("resolution_time", None)
|
||||
self.db_set("user_resolution_time", None)
|
||||
|
||||
|
||||
def get_priority(issue):
|
||||
service_level_agreement = frappe.get_doc("Service Level Agreement", issue.service_level_agreement)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user