def test_comment_mentions(self): comment = ''' <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> ''' self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") comment = ''' <div> Testing comment, <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> please check </div> ''' self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") comment = ''' <div> Testing comment for <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> and <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> please check </div> ''' self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") self.assertEqual(extract_mentions(comment)[1], "*****@*****.**")
def test_comment_mentions(self): comment = """ <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> """ self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") comment = """ <div> Testing comment, <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> please check </div> """ self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") comment = """ <div> Testing comment for <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> and <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> please check </div> """ self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") self.assertEqual(extract_mentions(comment)[1], "*****@*****.**") frappe.delete_doc("User Group", "Team") doc = frappe.get_doc( { "doctype": "User Group", "name": "Team", "user_group_members": [{"user": "******"}, {"user": "******"}], } ) doc.insert() comment = """ <div> Testing comment for <span class="mention" data-id="Team" data-value="Team" data-is-group="true" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Team</span> </span> and <span class="mention" data-id="Unknown Team" data-value="Unknown Team" data-is-group="true" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Unknown Team</span> </span><!-- this should be ignored--> please check </div> """ self.assertListEqual(extract_mentions(comment), ["*****@*****.**", "*****@*****.**"])
def test_comment_mentions(self): user_name = "@[email protected]" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "@[email protected]" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "Testing comment, @test-user please check." self.assertEqual(extract_mentions(user_name)[0], "test-user") user_name = "Testing comment, @[email protected] please check." self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**")
def test_comment_mentions(self): user_name = "@[email protected]" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "@[email protected]" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "Testing comment, @test-user please check." self.assertEqual(extract_mentions(user_name)[0], "test-user") user_name = "Testing comment, @[email protected] please check." self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**")
def notify_mentions(doc): if doc.communication_type != "Comment": return if doc.reference_doctype and doc.reference_name and doc.content and doc.comment_type=="Comment": mentions = extract_mentions(doc.content) if not mentions: return sender_fullname = get_fullname(frappe.session.user) parent_doc_label = "{0} {1}".format(_(doc.reference_doctype), doc.reference_name) subject = _("{0} mentioned you in a comment in {1}").format(sender_fullname, parent_doc_label) message = frappe.get_template("templates/emails/mentioned_in_comment.html").render({ "sender_fullname": sender_fullname, "comment": doc, "link": get_link_to_form(doc.reference_doctype, doc.reference_name, label=parent_doc_label) }) recipients = [frappe.db.get_value("User", {"enabled": 1, "username": username, "user_type": "System User"}) for username in mentions] frappe.sendmail( recipients=recipients, sender=frappe.session.user, subject=subject, message=message, bulk=True )
def notify_mentions(self): if self.reference_doctype and self.reference_name and self.content: mentions = extract_mentions(self.content) if not mentions: return sender_fullname = get_fullname(frappe.session.user) title = get_title(self.reference_doctype, self.reference_name) recipients = [ frappe.db.get_value( "User", { "enabled": 1, "name": name, "user_type": "System User", "allowed_in_mentions": 1 }, "email") for name in mentions ] notification_message = _('''{0} mentioned you in a comment in {1} {2}''')\ .format(frappe.bold(sender_fullname), frappe.bold(self.reference_doctype), get_title_html(title)) notification_doc = { 'type': 'Mention', 'document_type': self.reference_doctype, 'document_name': self.reference_name, 'subject': notification_message, 'from_user': frappe.session.user, 'email_content': self.content } enqueue_create_notification(recipients, notification_doc)
def notify_mentions(self): if self.comment_doctype and self.comment_docname and self.comment and self.comment_type=="Comment": mentions = extract_mentions(self.comment) if not mentions: return sender_fullname = get_fullname(frappe.session.user) parent_doc_label = "{0} {1}".format(_(self.comment_doctype), self.comment_docname) subject = _("{0} mentioned you in a comment in {1}").format(sender_fullname, parent_doc_label) message = frappe.get_template("templates/emails/mentioned_in_comment.html").render({ "sender_fullname": sender_fullname, "comment": self, "link": get_link_to_form(self.comment_doctype, self.comment_docname, label=parent_doc_label) }) recipients = [frappe.db.get_value("User", {"enabled": 1, "username": username, "user_type": "System User"}) for username in mentions] frappe.sendmail( recipients=recipients, sender=frappe.session.user, subject=subject, message=message, bulk=True )
def after_insert(self): mentions = extract_mentions(self.content) for mention in mentions: if mention == self.owner: continue frappe.publish_realtime('mention', """{} mentioned you! <br><a class="text-muted text-small" href="desk#social/home">Check Social<a>""" .format(frappe.utils.get_fullname(self.owner)), user=mention, after_commit=True) frappe.publish_realtime('new_post_comment' + self.parent, self, after_commit=True)
def test_comment_mentions(self): user_name = "@[email protected]" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "@[email protected]" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "Testing comment, @test-user please check." self.assertEqual(extract_mentions(user_name)[0], "test-user") user_name = "Testing comment, @[email protected] please check." self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") user_name = "<div>@[email protected] and @[email protected]</div><div>This is a test.</div>" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") self.assertEqual(extract_mentions(user_name)[1], "*****@*****.**") user_name = "<div>@[email protected]</a> Test @[email protected]</div><div>Test for comment mentions @[email protected]</div>" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") self.assertEqual(extract_mentions(user_name)[1], "*****@*****.**") self.assertEqual(extract_mentions(user_name)[2], "*****@*****.**")
def notify_mentions(self): if self.reference_doctype and self.reference_name and self.content: mentions = extract_mentions(self.content) if not mentions: return sender_fullname = get_fullname(frappe.session.user) title_field = frappe.get_meta( self.reference_doctype).get_title_field() title = self.reference_name if title_field == "name" else \ frappe.db.get_value(self.reference_doctype, self.reference_name, title_field) if title != self.reference_name: parent_doc_label = "{0}: {1} (#{2})".format( _(self.reference_doctype), title, self.reference_name) else: parent_doc_label = "{0}: {1}".format(_(self.reference_doctype), self.reference_name) subject = _("{0} mentioned you in a comment in {1}").format( sender_fullname, parent_doc_label) recipients = [ frappe.db.get_value( "User", { "enabled": 1, "name": name, "user_type": "System User", "allowed_in_mentions": 1 }, "email") for name in mentions ] link = get_link_to_form(self.reference_doctype, self.reference_name, label=parent_doc_label) frappe.sendmail( recipients=recipients, sender=frappe.session.user, subject=subject, template="mentioned_in_comment", args={ "body_content": _("{0} mentioned you in a comment in {1}").format( sender_fullname, link), "comment": doc, "link": link }, header=[_('New Mention'), 'orange'])
def test_comment_mentions(self): user_name = "@[email protected]" self.assertEqual( extract_mentions(user_name)[0], "*****@*****.**") user_name = "@[email protected]" self.assertEqual( extract_mentions(user_name)[0], "*****@*****.**") user_name = "Testing comment, @test-user please check." self.assertEqual(extract_mentions(user_name)[0], "test-user") user_name = "Testing comment, @[email protected] please check." self.assertEqual( extract_mentions(user_name)[0], "*****@*****.**") user_name = "<div>@[email protected] and @[email protected]</div><div>This is a test.</div>" self.assertEqual( extract_mentions(user_name)[0], "*****@*****.**") self.assertEqual( extract_mentions(user_name)[1], "*****@*****.**") user_name = "<div>@[email protected]</a> Test @[email protected]</div><div>Test for comment mentions @[email protected]</div>" self.assertEqual(extract_mentions(user_name)[0], "*****@*****.**") self.assertEqual( extract_mentions(user_name)[1], "*****@*****.**") self.assertEqual(extract_mentions(user_name)[2], "*****@*****.**")
def notify_mentions(doc): if doc.communication_type != "Comment": return if doc.reference_doctype and doc.reference_name and doc.content and doc.comment_type=="Comment": mentions = extract_mentions(doc.content) if not mentions: return sender_fullname = get_fullname(frappe.session.user) title_field = frappe.get_meta(doc.reference_doctype).get_title_field() title = doc.reference_name if title_field == "name" else \ frappe.db.get_value(doc.reference_doctype, doc.reference_name, title_field) if title != doc.reference_name: parent_doc_label = "{0}: {1} (#{2})".format(_(doc.reference_doctype), title, doc.reference_name) else: parent_doc_label = "{0}: {1}".format(_(doc.reference_doctype), doc.reference_name) subject = _("{0} mentioned you in a comment").format(sender_fullname) recipients = [frappe.db.get_value("User", {"enabled": 1, "name": name, "user_type": "System User"}, "email") for name in mentions] link = get_link_to_form(doc.reference_doctype, doc.reference_name, label=parent_doc_label) frappe.sendmail( recipients=recipients, sender=frappe.session.user, subject=subject, template="mentioned_in_comment", args={ "body_content": _("{0} mentioned you in a comment in {1}").format(sender_fullname, link), "comment": doc, "link": link }, header=[_('New Mention'), 'orange'] )
def notify_mentions(doc): if doc.communication_type != "Comment": return if doc.reference_doctype and doc.reference_name and doc.content and doc.comment_type=="Comment": mentions = extract_mentions(doc.content) if not mentions: return sender_fullname = get_fullname(frappe.session.user) title_field = frappe.get_meta(doc.reference_doctype).get_title_field() title = doc.reference_name if title_field == "name" else \ frappe.db.get_value(doc.reference_doctype, doc.reference_name, title_field) if title != doc.reference_name: parent_doc_label = "{0}: {1} (#{2})".format(_(doc.reference_doctype), title, doc.reference_name) else: parent_doc_label = "{0}: {1}".format(_(doc.reference_doctype), doc.reference_name) subject = _("{0} mentioned you in a comment").format(sender_fullname) recipients = [frappe.db.get_value("User", {"enabled": 1, "username": username, "user_type": "System User"}) for username in mentions] frappe.sendmail( recipients=recipients, sender=frappe.session.user, subject=subject, template="mentioned_in_comment", args={ "sender_fullname": sender_fullname, "comment": doc, "link": get_link_to_form(doc.reference_doctype, doc.reference_name, label=parent_doc_label) }, header=[_('New Mention'), 'orange'] )
def test_comment_mentions(self): comment = ''' <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> ''' self.assertEqual( extract_mentions(comment)[0], "*****@*****.**") comment = ''' <div> Testing comment, <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> please check </div> ''' self.assertEqual( extract_mentions(comment)[0], "*****@*****.**") comment = ''' <div> Testing comment for <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> and <span class="mention" data-id="*****@*****.**" data-value="Test" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Test</span> </span> please check </div> ''' self.assertEqual(extract_mentions(comment)[0], "*****@*****.**") self.assertEqual( extract_mentions(comment)[1], "*****@*****.**") doc = frappe.get_doc({ 'doctype': 'User Group', 'name': 'Team', 'user_group_members': [{ 'user': '******' }, { 'user': '******' }] }) doc.insert(ignore_if_duplicate=True) comment = ''' <div> Testing comment for <span class="mention" data-id="Team" data-value="Team" data-is-group="true" data-denotation-char="@"> <span><span class="ql-mention-denotation-char">@</span>Team</span> </span> please check </div> ''' self.assertListEqual(extract_mentions(comment), ['*****@*****.**', '*****@*****.**'])