fix: rename Producer and Consumer child doctypes
This commit is contained in:
parent
f99cbf9690
commit
cfe2631864
13 changed files with 58 additions and 54 deletions
|
|
@ -1,11 +1,12 @@
|
|||
{
|
||||
"actions": [],
|
||||
"autoname": "field:callback_url",
|
||||
"creation": "2019-08-26 17:45:15.479530",
|
||||
"doctype": "DocType",
|
||||
"editable_grid": 1,
|
||||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"subscribed_doctypes",
|
||||
"consumer_doctypes",
|
||||
"callback_url",
|
||||
"section_break_3",
|
||||
"api_key",
|
||||
|
|
@ -24,13 +25,6 @@
|
|||
"reqd": 1,
|
||||
"unique": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "subscribed_doctypes",
|
||||
"fieldtype": "Table",
|
||||
"label": "Subscribed Document Types",
|
||||
"options": "Event Subscribed Document Type",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "api_key",
|
||||
"fieldtype": "Data",
|
||||
|
|
@ -73,10 +67,18 @@
|
|||
"hidden": 1,
|
||||
"label": "In Test",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "consumer_doctypes",
|
||||
"fieldtype": "Table",
|
||||
"label": "Event Consumer Document Types",
|
||||
"options": "Event Consumer Document Type",
|
||||
"reqd": 1
|
||||
}
|
||||
],
|
||||
"in_create": 1,
|
||||
"modified": "2019-11-29 00:40:32.875022",
|
||||
"links": [],
|
||||
"modified": "2019-12-26 13:05:08.020129",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Events Streaming",
|
||||
"name": "Event Consumer",
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from frappe.utils.background_jobs import get_jobs
|
|||
class EventConsumer(Document):
|
||||
def validate(self):
|
||||
if self.in_test:
|
||||
for entry in self.subscribed_doctypes:
|
||||
for entry in self.consumer_doctypes:
|
||||
entry.status = 'Approved'
|
||||
self.in_test = False
|
||||
|
||||
|
|
@ -28,17 +28,17 @@ class EventConsumer(Document):
|
|||
def update_consumer_status(self):
|
||||
consumer_site = get_consumer_site(self.callback_url)
|
||||
event_producer = consumer_site.get_doc('Event Producer', get_current_node())
|
||||
config = event_producer.event_configuration
|
||||
event_producer.event_configuration = []
|
||||
config = event_producer.producer_doctypes
|
||||
event_producer.producer_doctypes = []
|
||||
for entry in config:
|
||||
if entry.get('has_mapping'):
|
||||
ref_doctype = consumer_site.get_value('Document Type Mapping', entry.get('mapping'), 'remote_doctype')
|
||||
else:
|
||||
ref_doctype = entry.get('ref_doctype')
|
||||
|
||||
entry['status'] = frappe.db.get_value('Event Subscribed Document Type', {'parent': self.name, 'ref_doctype': ref_doctype}, 'status')
|
||||
entry['status'] = frappe.db.get_value('Event Consumer Document Type', {'parent': self.name, 'ref_doctype': ref_doctype}, 'status')
|
||||
|
||||
event_producer.event_configuration = config
|
||||
event_producer.producer_doctypes = config
|
||||
# when producer doc is updated it updates the consumer doc, set flag to avoid deadlock
|
||||
event_producer.incoming_change = True
|
||||
consumer_site.update(event_producer)
|
||||
|
|
@ -56,10 +56,10 @@ def register_consumer(data):
|
|||
consumer.callback_url = data['event_consumer']
|
||||
consumer.user = data['user']
|
||||
consumer.incoming_change = True
|
||||
subscribed_doctypes = json.loads(data['subscribed_doctypes'])
|
||||
consumer_doctypes = json.loads(data['consumer_doctypes'])
|
||||
|
||||
for entry in subscribed_doctypes:
|
||||
consumer.append('subscribed_doctypes', {
|
||||
for entry in consumer_doctypes:
|
||||
consumer.append('consumer_doctypes', {
|
||||
'ref_doctype': entry,
|
||||
'status': 'Pending'
|
||||
})
|
||||
|
|
@ -94,7 +94,7 @@ def get_last_update():
|
|||
|
||||
@frappe.whitelist()
|
||||
def notify_event_consumers(doctype):
|
||||
event_consumers = frappe.get_all('Event Subscribed Document Type', ['parent'], {'ref_doctype': doctype, 'status': 'Approved'})
|
||||
event_consumers = frappe.get_all('Event Consumer Document Type', ['parent'], {'ref_doctype': doctype, 'status': 'Approved'})
|
||||
for entry in event_consumers:
|
||||
consumer = frappe.get_doc('Event Consumer', entry.parent)
|
||||
consumer.flags.notified = False
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
"modified": "2019-10-29 15:26:32.436528",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Events Streaming",
|
||||
"name": "Event Subscribed Document Type",
|
||||
"name": "Event Consumer Document Type",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"quick_entry": 1,
|
||||
|
|
@ -6,5 +6,5 @@ from __future__ import unicode_literals
|
|||
# import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class EventConfiguration(Document):
|
||||
class EventConsumerDocumentType(Document):
|
||||
pass
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
frappe.ui.form.on('Event Producer', {
|
||||
refresh: function(frm) {
|
||||
frm.set_query('ref_doctype', 'event_configuration', function() {
|
||||
frm.set_query('ref_doctype', 'producer_doctypes', function() {
|
||||
return {
|
||||
filters: {
|
||||
issingle: 0,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"actions": [],
|
||||
"autoname": "field:producer_url",
|
||||
"creation": "2019-08-26 19:17:24.919196",
|
||||
"doctype": "DocType",
|
||||
|
|
@ -6,7 +7,7 @@
|
|||
"engine": "InnoDB",
|
||||
"field_order": [
|
||||
"producer_url",
|
||||
"event_configuration",
|
||||
"producer_doctypes",
|
||||
"section_break_3",
|
||||
"api_key",
|
||||
"api_secret",
|
||||
|
|
@ -49,13 +50,6 @@
|
|||
"options": "User",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "event_configuration",
|
||||
"fieldtype": "Table",
|
||||
"label": "Event Configuration",
|
||||
"options": "Event Configuration",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_6",
|
||||
"fieldtype": "Column Break"
|
||||
|
|
@ -70,9 +64,17 @@
|
|||
"fieldtype": "Check",
|
||||
"hidden": 1,
|
||||
"label": "Incoming Change"
|
||||
},
|
||||
{
|
||||
"fieldname": "producer_doctypes",
|
||||
"fieldtype": "Table",
|
||||
"label": "Event Producer Document Types",
|
||||
"options": "Event Producer Document Type",
|
||||
"reqd": 1
|
||||
}
|
||||
],
|
||||
"modified": "2019-10-29 14:56:30.854731",
|
||||
"links": [],
|
||||
"modified": "2019-12-26 13:04:11.438349",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Events Streaming",
|
||||
"name": "Event Producer",
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ class EventProducer(Document):
|
|||
|
||||
def validate(self):
|
||||
if frappe.flags.in_test:
|
||||
for entry in self.event_configuration:
|
||||
for entry in self.producer_doctypes:
|
||||
entry.status = 'Approved'
|
||||
|
||||
def on_update(self):
|
||||
|
|
@ -46,24 +46,24 @@ class EventProducer(Document):
|
|||
self.last_update = response['last_update']
|
||||
|
||||
def get_request_data(self):
|
||||
subscribed_doctypes = []
|
||||
for entry in self.event_configuration:
|
||||
consumer_doctypes = []
|
||||
for entry in self.producer_doctypes:
|
||||
if entry.has_mapping:
|
||||
#if it has mapping then on event consumer's site it should subscribe to remote doctype
|
||||
subscribed_doctypes.append(frappe.db.get_value('Document Type Mapping', entry.mapping, 'remote_doctype'))
|
||||
consumer_doctypes.append(frappe.db.get_value('Document Type Mapping', entry.mapping, 'remote_doctype'))
|
||||
else:
|
||||
subscribed_doctypes.append(entry.ref_doctype)
|
||||
consumer_doctypes.append(entry.ref_doctype)
|
||||
|
||||
return {
|
||||
'event_consumer': get_current_node(),
|
||||
'subscribed_doctypes': json.dumps(subscribed_doctypes),
|
||||
'consumer_doctypes': json.dumps(consumer_doctypes),
|
||||
'user': self.user,
|
||||
'in_test': frappe.flags.in_test
|
||||
}
|
||||
|
||||
def create_custom_fields(self):
|
||||
'''create custom field to store remote docname and remote site url'''
|
||||
for entry in self.event_configuration:
|
||||
for entry in self.producer_doctypes:
|
||||
if not entry.use_same_name:
|
||||
if not frappe.db.exists('Custom Field', {'fieldname': 'remote_docname', 'dt': entry.ref_doctype}):
|
||||
df = dict(fieldname='remote_docname', label='Remote Document Name', fieldtype='Data', read_only=1, print_hide=1)
|
||||
|
|
@ -77,16 +77,16 @@ class EventProducer(Document):
|
|||
producer_site = get_producer_site(self.producer_url)
|
||||
event_consumer = producer_site.get_doc('Event Consumer', get_current_node())
|
||||
if event_consumer:
|
||||
config = event_consumer.subscribed_doctypes
|
||||
event_consumer.subscribed_doctypes = []
|
||||
for entry in self.event_configuration:
|
||||
config = event_consumer.consumer_doctypes
|
||||
event_consumer.consumer_doctypes = []
|
||||
for entry in self.producer_doctypes:
|
||||
if entry.has_mapping:
|
||||
#if it has mapping then on event consumer's site it should subscribe to remote doctype
|
||||
ref_doctype = frappe.db.get_value('Document Type Mapping', entry.mapping, 'remote_doctype')
|
||||
else:
|
||||
ref_doctype = entry.ref_doctype
|
||||
|
||||
event_consumer.subscribed_doctypes.append({
|
||||
event_consumer.consumer_doctypes.append({
|
||||
'ref_doctype': ref_doctype,
|
||||
'status': get_approval_status(config, ref_doctype)
|
||||
})
|
||||
|
|
@ -146,7 +146,7 @@ def pull_from_node(event_producer):
|
|||
producer_site = get_producer_site(event_producer.producer_url)
|
||||
last_update = event_producer.last_update
|
||||
|
||||
(doctypes, mapping_config, naming_config) = get_config(event_producer.event_configuration)
|
||||
(doctypes, mapping_config, naming_config) = get_config(event_producer.producer_doctypes)
|
||||
|
||||
updates = get_updates(producer_site, last_update, doctypes)
|
||||
|
||||
|
|
|
|||
|
|
@ -12,11 +12,11 @@ from frappe.events_streaming.doctype.event_producer.event_producer import pull_f
|
|||
def create_event_producer(producer_url):
|
||||
event_producer = frappe.new_doc('Event Producer')
|
||||
event_producer.producer_url = producer_url
|
||||
event_producer.append('event_configuration', {
|
||||
event_producer.append('producer_doctypes', {
|
||||
'ref_doctype': 'ToDo',
|
||||
'use_same_name': 1
|
||||
})
|
||||
event_producer.append('event_configuration', {
|
||||
event_producer.append('producer_doctypes', {
|
||||
'ref_doctype': 'Note',
|
||||
'use_same_name': 1
|
||||
})
|
||||
|
|
@ -117,8 +117,8 @@ class TestEventProducer(unittest.TestCase):
|
|||
def test_dynamic_link_dependencies_synced(self):
|
||||
#unsubscribe for Note to check whether dependency is fulfilled
|
||||
event_producer = frappe.get_doc('Event Producer', self.producer_url)
|
||||
event_producer.event_configuration = []
|
||||
event_producer.append('event_configuration', {
|
||||
event_producer.producer_doctypes = []
|
||||
event_producer.append('producer_doctypes', {
|
||||
'ref_doctype': 'ToDo',
|
||||
'use_same_name': 1
|
||||
})
|
||||
|
|
@ -142,7 +142,7 @@ class TestEventProducer(unittest.TestCase):
|
|||
|
||||
#subscribe again
|
||||
event_producer = frappe.get_doc('Event Producer', self.producer_url)
|
||||
event_producer.append('event_configuration', {
|
||||
event_producer.append('producer_doctypes', {
|
||||
'ref_doctype': 'Note',
|
||||
'use_same_name': 1
|
||||
})
|
||||
|
|
@ -151,8 +151,8 @@ class TestEventProducer(unittest.TestCase):
|
|||
def test_naming_configuration(self):
|
||||
#test with use_same_name = 0
|
||||
event_producer = frappe.get_doc('Event Producer', self.producer_url)
|
||||
event_producer.event_configuration = []
|
||||
event_producer.append('event_configuration', {
|
||||
event_producer.producer_doctypes = []
|
||||
event_producer.append('producer_doctypes', {
|
||||
'ref_doctype': 'ToDo',
|
||||
'use_same_name': 0
|
||||
})
|
||||
|
|
@ -164,9 +164,9 @@ class TestEventProducer(unittest.TestCase):
|
|||
self.assertTrue(frappe.db.exists('ToDo', {'remote_docname': producer_doc.name, 'remote_site_name': self.producer_url}))
|
||||
|
||||
event_producer = frappe.get_doc('Event Producer', self.producer_url)
|
||||
event_producer.event_configuration = []
|
||||
event_producer.producer_doctypes = []
|
||||
#set use_same_name back to 1
|
||||
event_producer.append('event_configuration', {
|
||||
event_producer.append('producer_doctypes', {
|
||||
'ref_doctype': 'ToDo',
|
||||
'use_same_name': 1
|
||||
})
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@
|
|||
"modified": "2019-10-29 15:12:53.962591",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Events Streaming",
|
||||
"name": "Event Configuration",
|
||||
"name": "Event Producer Document Type",
|
||||
"owner": "Administrator",
|
||||
"permissions": [],
|
||||
"quick_entry": 1,
|
||||
|
|
@ -6,5 +6,5 @@ from __future__ import unicode_literals
|
|||
# import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class EventSubscribedDocumentType(Document):
|
||||
class EventProducerDocumentType(Document):
|
||||
pass
|
||||
|
|
@ -1305,7 +1305,7 @@ def check_doctype_has_consumers(doctype):
|
|||
event_consumers = frappe.get_all('Event Consumer')
|
||||
for event_consumer in event_consumers:
|
||||
consumer = frappe.get_doc('Event Consumer', event_consumer.name)
|
||||
for entry in consumer.subscribed_doctypes:
|
||||
for entry in consumer.consumer_doctypes:
|
||||
if doctype == entry.ref_doctype and entry.status == 'Approved':
|
||||
return True
|
||||
return False
|
||||
Loading…
Add table
Reference in a new issue