示例#1
0
	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], "*****@*****.**")
示例#2
0
	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), ["*****@*****.**", "*****@*****.**"])
示例#3
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], "*****@*****.**")
示例#4
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], "*****@*****.**")
示例#5
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
		)
示例#6
0
    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)
示例#7
0
文件: comment.py 项目: molcar/frappe
	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
			)
示例#8
0
	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)
示例#9
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], "*****@*****.**")
		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], "*****@*****.**")
示例#10
0
    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'])
示例#11
0
文件: test_user.py 项目: hrwX/frappe
 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], "*****@*****.**")
示例#12
0
文件: comment.py 项目: ESS-LLP/frappe
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']
		)
示例#13
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)
		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']
		)
示例#14
0
    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),
                             ['*****@*****.**', '*****@*****.**'])