style: bulk format code with black

v13 port because otherwise backports will result in conflicts always
This commit is contained in:
Ankush Menat
2022-03-29 17:29:34 +05:30
parent 7cc84dcbb4
commit c07713b860
1555 changed files with 96709 additions and 66138 deletions

View File

@@ -7,12 +7,13 @@ import frappe
@frappe.whitelist()
def enable_hub():
hub_settings = frappe.get_doc('Marketplace Settings')
hub_settings = frappe.get_doc("Marketplace Settings")
hub_settings.register()
frappe.db.commit()
return hub_settings
@frappe.whitelist()
def sync():
hub_settings = frappe.get_doc('Marketplace Settings')
hub_settings = frappe.get_doc("Marketplace Settings")
hub_settings.sync()

View File

@@ -1,4 +1,3 @@
import json
import frappe
@@ -14,24 +13,24 @@ current_user = frappe.session.user
def register_marketplace(company, company_description):
validate_registerer()
settings = frappe.get_single('Marketplace Settings')
settings = frappe.get_single("Marketplace Settings")
message = settings.register_seller(company, company_description)
if message.get('hub_seller_name'):
if message.get("hub_seller_name"):
settings.registered = 1
settings.hub_seller_name = message.get('hub_seller_name')
settings.hub_seller_name = message.get("hub_seller_name")
settings.save()
settings.add_hub_user(frappe.session.user)
return { 'ok': 1 }
return {"ok": 1}
@frappe.whitelist()
def register_users(user_list):
user_list = json.loads(user_list)
settings = frappe.get_single('Marketplace Settings')
settings = frappe.get_single("Marketplace Settings")
for user in user_list:
settings.add_hub_user(user)
@@ -40,14 +39,16 @@ def register_users(user_list):
def validate_registerer():
if current_user == 'Administrator':
frappe.throw(_('Please login as another user to register on Marketplace'))
if current_user == "Administrator":
frappe.throw(_("Please login as another user to register on Marketplace"))
valid_roles = ['System Manager', 'Item Manager']
valid_roles = ["System Manager", "Item Manager"]
if not frappe.utils.is_subset(valid_roles, frappe.get_roles()):
frappe.throw(_('Only users with {0} role can register on Marketplace').format(', '.join(valid_roles)),
frappe.PermissionError)
frappe.throw(
_("Only users with {0} role can register on Marketplace").format(", ".join(valid_roles)),
frappe.PermissionError,
)
@frappe.whitelist()
@@ -57,9 +58,7 @@ def call_hub_method(method, params=None):
if isinstance(params, string_types):
params = json.loads(params)
params.update({
'cmd': 'hub.hub.api.' + method
})
params.update({"cmd": "hub.hub.api." + method})
response = connection.post_request(params)
return response
@@ -67,81 +66,81 @@ def call_hub_method(method, params=None):
def map_fields(items):
field_mappings = get_field_mappings()
table_fields = [d.fieldname for d in frappe.get_meta('Item').get_table_fields()]
table_fields = [d.fieldname for d in frappe.get_meta("Item").get_table_fields()]
hub_seller_name = frappe.db.get_value('Marketplace Settings', 'Marketplace Settings', 'hub_seller_name')
hub_seller_name = frappe.db.get_value(
"Marketplace Settings", "Marketplace Settings", "hub_seller_name"
)
for item in items:
for fieldname in table_fields:
item.pop(fieldname, None)
for mapping in field_mappings:
local_fieldname = mapping.get('local_fieldname')
remote_fieldname = mapping.get('remote_fieldname')
local_fieldname = mapping.get("local_fieldname")
remote_fieldname = mapping.get("remote_fieldname")
value = item.get(local_fieldname)
item.pop(local_fieldname, None)
item[remote_fieldname] = value
item['doctype'] = 'Hub Item'
item['hub_seller'] = hub_seller_name
item.pop('attachments', None)
item["doctype"] = "Hub Item"
item["hub_seller"] = hub_seller_name
item.pop("attachments", None)
return items
@frappe.whitelist()
def get_valid_items(search_value=''):
def get_valid_items(search_value=""):
items = frappe.get_list(
'Item',
"Item",
fields=["*"],
filters={
'disabled': 0,
'item_name': ['like', '%' + search_value + '%'],
'publish_in_hub': 0
},
order_by="modified desc"
filters={"disabled": 0, "item_name": ["like", "%" + search_value + "%"], "publish_in_hub": 0},
order_by="modified desc",
)
valid_items = filter(lambda x: x.image and x.description, items)
def prepare_item(item):
item.source_type = "local"
item.attachments = get_attachments('Item', item.item_code)
item.attachments = get_attachments("Item", item.item_code)
return item
valid_items = map(prepare_item, valid_items)
return valid_items
@frappe.whitelist()
def update_item(ref_doc, data):
data = json.loads(data)
data.update(dict(doctype='Hub Item', name=ref_doc))
data.update(dict(doctype="Hub Item", name=ref_doc))
try:
connection = get_hub_connection()
connection.update(data)
except Exception as e:
frappe.log_error(message=e, title='Hub Sync Error')
frappe.log_error(message=e, title="Hub Sync Error")
@frappe.whitelist()
def publish_selected_items(items_to_publish):
items_to_publish = json.loads(items_to_publish)
items_to_update = []
if not len(items_to_publish):
frappe.throw(_('No items to publish'))
frappe.throw(_("No items to publish"))
for item in items_to_publish:
item_code = item.get('item_code')
frappe.db.set_value('Item', item_code, 'publish_in_hub', 1)
item_code = item.get("item_code")
frappe.db.set_value("Item", item_code, "publish_in_hub", 1)
hub_dict = {
'doctype': 'Hub Tracked Item',
'item_code': item_code,
'published': 1,
'hub_category': item.get('hub_category'),
'image_list': item.get('image_list')
"doctype": "Hub Tracked Item",
"item_code": item_code,
"published": 1,
"hub_category": item.get("hub_category"),
"image_list": item.get("image_list"),
}
frappe.get_doc(hub_dict).insert(ignore_if_duplicate=True)
@@ -157,65 +156,67 @@ def publish_selected_items(items_to_publish):
item_sync_postprocess()
except Exception as e:
frappe.log_error(message=e, title='Hub Sync Error')
frappe.log_error(message=e, title="Hub Sync Error")
@frappe.whitelist()
def unpublish_item(item_code, hub_item_name):
''' Remove item listing from the marketplace '''
"""Remove item listing from the marketplace"""
response = call_hub_method('unpublish_item', {
'hub_item_name': hub_item_name
})
response = call_hub_method("unpublish_item", {"hub_item_name": hub_item_name})
if response:
frappe.db.set_value('Item', item_code, 'publish_in_hub', 0)
frappe.delete_doc('Hub Tracked Item', item_code)
frappe.db.set_value("Item", item_code, "publish_in_hub", 0)
frappe.delete_doc("Hub Tracked Item", item_code)
else:
frappe.throw(_('Unable to update remote activity'))
frappe.throw(_("Unable to update remote activity"))
@frappe.whitelist()
def get_unregistered_users():
settings = frappe.get_single('Marketplace Settings')
registered_users = [user.user for user in settings.users] + ['Administrator', 'Guest']
all_users = [user.name for user in frappe.db.get_all('User', filters={'enabled': 1})]
settings = frappe.get_single("Marketplace Settings")
registered_users = [user.user for user in settings.users] + ["Administrator", "Guest"]
all_users = [user.name for user in frappe.db.get_all("User", filters={"enabled": 1})]
unregistered_users = [user for user in all_users if user not in registered_users]
return unregistered_users
def item_sync_preprocess(intended_item_publish_count):
response = call_hub_method('pre_items_publish', {
'intended_item_publish_count': intended_item_publish_count
})
response = call_hub_method(
"pre_items_publish", {"intended_item_publish_count": intended_item_publish_count}
)
if response:
frappe.db.set_value("Marketplace Settings", "Marketplace Settings", "sync_in_progress", 1)
return response
else:
frappe.throw(_('Unable to update remote activity'))
frappe.throw(_("Unable to update remote activity"))
def item_sync_postprocess():
response = call_hub_method('post_items_publish', {})
response = call_hub_method("post_items_publish", {})
if response:
frappe.db.set_value('Marketplace Settings', 'Marketplace Settings', 'last_sync_datetime', frappe.utils.now())
frappe.db.set_value(
"Marketplace Settings", "Marketplace Settings", "last_sync_datetime", frappe.utils.now()
)
else:
frappe.throw(_('Unable to update remote activity'))
frappe.throw(_("Unable to update remote activity"))
frappe.db.set_value('Marketplace Settings', 'Marketplace Settings', 'sync_in_progress', 0)
frappe.db.set_value("Marketplace Settings", "Marketplace Settings", "sync_in_progress", 0)
def convert_relative_image_urls_to_absolute(items):
from six.moves.urllib.parse import urljoin
for item in items:
file_path = item['image']
file_path = item["image"]
if file_path.startswith('/files/'):
item['image'] = urljoin(frappe.utils.get_url(), file_path)
if file_path.startswith("/files/"):
item["image"] = urljoin(frappe.utils.get_url(), file_path)
def get_hub_connection():
settings = frappe.get_single('Marketplace Settings')
settings = frappe.get_single("Marketplace Settings")
marketplace_url = settings.marketplace_url
hub_user = settings.get_hub_user(frappe.session.user)

View File

@@ -10,82 +10,82 @@ from frappe.utils import cint
class MarketplaceSettings(Document):
def register_seller(self, company, company_description):
country, currency, company_logo = frappe.db.get_value('Company', company,
['country', 'default_currency', 'company_logo'])
country, currency, company_logo = frappe.db.get_value(
"Company", company, ["country", "default_currency", "company_logo"]
)
company_details = {
'company': company,
'country': country,
'currency': currency,
'company_description': company_description,
'company_logo': company_logo,
'site_name': frappe.utils.get_url()
"company": company,
"country": country,
"currency": currency,
"company_description": company_description,
"company_logo": company_logo,
"site_name": frappe.utils.get_url(),
}
hub_connection = self.get_connection()
response = hub_connection.post_request({
'cmd': 'hub.hub.api.add_hub_seller',
'company_details': json.dumps(company_details)
})
response = hub_connection.post_request(
{"cmd": "hub.hub.api.add_hub_seller", "company_details": json.dumps(company_details)}
)
return response
def add_hub_user(self, user_email):
'''Create a Hub User and User record on hub server
"""Create a Hub User and User record on hub server
and if successfull append it to Hub User table
'''
"""
if not self.registered:
return
hub_connection = self.get_connection()
first_name, last_name = frappe.db.get_value('User', user_email, ['first_name', 'last_name'])
first_name, last_name = frappe.db.get_value("User", user_email, ["first_name", "last_name"])
hub_user = hub_connection.post_request({
'cmd': 'hub.hub.api.add_hub_user',
'user_email': user_email,
'first_name': first_name,
'last_name': last_name,
'hub_seller': self.hub_seller_name
})
hub_user = hub_connection.post_request(
{
"cmd": "hub.hub.api.add_hub_user",
"user_email": user_email,
"first_name": first_name,
"last_name": last_name,
"hub_seller": self.hub_seller_name,
}
)
self.append('users', {
'user': hub_user.get('user_email'),
'hub_user_name': hub_user.get('hub_user_name'),
'password': hub_user.get('password')
})
self.append(
"users",
{
"user": hub_user.get("user_email"),
"hub_user_name": hub_user.get("hub_user_name"),
"password": hub_user.get("password"),
},
)
self.save()
def get_hub_user(self, user):
'''Return the Hub User doc from the `users` table if password is set'''
"""Return the Hub User doc from the `users` table if password is set"""
filtered_users = list(filter(
lambda x: x.user == user and x.password,
self.users
))
filtered_users = list(filter(lambda x: x.user == user and x.password, self.users))
if filtered_users:
return filtered_users[0]
def get_connection(self):
return FrappeClient(self.marketplace_url)
def unregister(self):
"""Disable the User on hubmarket.org"""
@frappe.whitelist()
def is_marketplace_enabled():
if not hasattr(frappe.local, 'is_marketplace_enabled'):
frappe.local.is_marketplace_enabled = cint(frappe.db.get_single_value('Marketplace Settings',
'disable_marketplace'))
if not hasattr(frappe.local, "is_marketplace_enabled"):
frappe.local.is_marketplace_enabled = cint(
frappe.db.get_single_value("Marketplace Settings", "disable_marketplace")
)
return frappe.local.is_marketplace_enabled

View File

@@ -1,4 +1,3 @@
import json
import frappe
@@ -11,9 +10,10 @@ from frappe.utils.nestedset import get_root_of
def get_list(doctype, start, limit, fields, filters, order_by):
pass
def get_hub_connection():
if frappe.db.exists('Data Migration Connector', 'Hub Connector'):
hub_connector = frappe.get_doc('Data Migration Connector', 'Hub Connector')
if frappe.db.exists("Data Migration Connector", "Hub Connector"):
hub_connector = frappe.get_doc("Data Migration Connector", "Hub Connector")
hub_connection = hub_connector.get_connection()
return hub_connection.connection
@@ -21,10 +21,11 @@ def get_hub_connection():
hub_connection = FrappeClient(frappe.conf.hub_url)
return hub_connection
def make_opportunity(buyer_name, email_id):
buyer_name = "HUB-" + buyer_name
if not frappe.db.exists('Lead', {'email_id': email_id}):
if not frappe.db.exists("Lead", {"email_id": email_id}):
lead = frappe.new_doc("Lead")
lead.lead_name = buyer_name
lead.email_id = email_id
@@ -32,9 +33,10 @@ def make_opportunity(buyer_name, email_id):
o = frappe.new_doc("Opportunity")
o.opportunity_from = "Lead"
o.lead = frappe.get_all("Lead", filters={"email_id": email_id}, fields = ["name"])[0]["name"]
o.lead = frappe.get_all("Lead", filters={"email_id": email_id}, fields=["name"])[0]["name"]
o.save(ignore_permissions=True)
@frappe.whitelist()
def make_rfq_and_send_opportunity(item, supplier):
supplier = make_supplier(supplier)
@@ -43,105 +45,110 @@ def make_rfq_and_send_opportunity(item, supplier):
rfq = make_rfq(item, supplier, contact)
status = send_opportunity(contact)
return {
'rfq': rfq,
'hub_document_created': status
}
return {"rfq": rfq, "hub_document_created": status}
def make_supplier(supplier):
# make supplier if not already exists
supplier = frappe._dict(json.loads(supplier))
if not frappe.db.exists('Supplier', {'supplier_name': supplier.supplier_name}):
supplier_doc = frappe.get_doc({
'doctype': 'Supplier',
'supplier_name': supplier.supplier_name,
'supplier_group': supplier.supplier_group,
'supplier_email': supplier.supplier_email
}).insert()
if not frappe.db.exists("Supplier", {"supplier_name": supplier.supplier_name}):
supplier_doc = frappe.get_doc(
{
"doctype": "Supplier",
"supplier_name": supplier.supplier_name,
"supplier_group": supplier.supplier_group,
"supplier_email": supplier.supplier_email,
}
).insert()
else:
supplier_doc = frappe.get_doc('Supplier', supplier.supplier_name)
supplier_doc = frappe.get_doc("Supplier", supplier.supplier_name)
return supplier_doc
def make_contact(supplier):
contact_name = get_default_contact('Supplier', supplier.supplier_name)
contact_name = get_default_contact("Supplier", supplier.supplier_name)
# make contact if not already exists
if not contact_name:
contact = frappe.get_doc({
'doctype': 'Contact',
'first_name': supplier.supplier_name,
'is_primary_contact': 1,
'links': [
{'link_doctype': 'Supplier', 'link_name': supplier.supplier_name}
]
})
contact = frappe.get_doc(
{
"doctype": "Contact",
"first_name": supplier.supplier_name,
"is_primary_contact": 1,
"links": [{"link_doctype": "Supplier", "link_name": supplier.supplier_name}],
}
)
contact.add_email(supplier.supplier_email, is_primary=True)
contact.insert()
else:
contact = frappe.get_doc('Contact', contact_name)
contact = frappe.get_doc("Contact", contact_name)
return contact
def make_item(item):
# make item if not already exists
item = frappe._dict(json.loads(item))
if not frappe.db.exists('Item', {'item_code': item.item_code}):
item_doc = frappe.get_doc({
'doctype': 'Item',
'item_code': item.item_code,
'item_group': item.item_group,
'is_item_from_hub': 1
}).insert()
if not frappe.db.exists("Item", {"item_code": item.item_code}):
item_doc = frappe.get_doc(
{
"doctype": "Item",
"item_code": item.item_code,
"item_group": item.item_group,
"is_item_from_hub": 1,
}
).insert()
else:
item_doc = frappe.get_doc('Item', item.item_code)
item_doc = frappe.get_doc("Item", item.item_code)
return item_doc
def make_rfq(item, supplier, contact):
# make rfq
rfq = frappe.get_doc({
'doctype': 'Request for Quotation',
'transaction_date': nowdate(),
'status': 'Draft',
'company': frappe.db.get_single_value('Marketplace Settings', 'company'),
'message_for_supplier': 'Please supply the specified items at the best possible rates',
'suppliers': [
{ 'supplier': supplier.name, 'contact': contact.name }
],
'items': [
{
'item_code': item.item_code,
'qty': 1,
'schedule_date': nowdate(),
'warehouse': item.default_warehouse or get_root_of("Warehouse"),
'description': item.description,
'uom': item.stock_uom
}
]
}).insert()
rfq = frappe.get_doc(
{
"doctype": "Request for Quotation",
"transaction_date": nowdate(),
"status": "Draft",
"company": frappe.db.get_single_value("Marketplace Settings", "company"),
"message_for_supplier": "Please supply the specified items at the best possible rates",
"suppliers": [{"supplier": supplier.name, "contact": contact.name}],
"items": [
{
"item_code": item.item_code,
"qty": 1,
"schedule_date": nowdate(),
"warehouse": item.default_warehouse or get_root_of("Warehouse"),
"description": item.description,
"uom": item.stock_uom,
}
],
}
).insert()
rfq.save()
rfq.submit()
return rfq
def send_opportunity(contact):
# Make Hub Message on Hub with lead data
doc = {
'doctype': 'Lead',
'lead_name': frappe.db.get_single_value('Marketplace Settings', 'company'),
'email_id': frappe.db.get_single_value('Marketplace Settings', 'user')
"doctype": "Lead",
"lead_name": frappe.db.get_single_value("Marketplace Settings", "company"),
"email_id": frappe.db.get_single_value("Marketplace Settings", "user"),
}
args = frappe._dict(dict(
doctype='Hub Message',
reference_doctype='Lead',
data=json.dumps(doc),
user=contact.email_id
))
args = frappe._dict(
dict(
doctype="Hub Message", reference_doctype="Lead", data=json.dumps(doc), user=contact.email_id
)
)
connection = get_hub_connection()
response = connection.insert('Hub Message', args)
response = connection.insert("Hub Message", args)
return response.ok