diff --git a/hr/doctype/job_applicant/get_job_applications.py b/hr/doctype/job_applicant/get_job_applications.py index 4484bc50397..4737a6a81b5 100644 --- a/hr/doctype/job_applicant/get_job_applications.py +++ b/hr/doctype/job_applicant/get_job_applications.py @@ -23,11 +23,7 @@ from core.doctype.communication.communication import make class JobsMailbox(POP3Mailbox): def setup(self, args=None): self.settings = args or webnotes.doc("Jobs Email Settings", "Jobs Email Settings") - - def check_mails(self): - return webnotes.conn.sql("select user from tabSessions where \ - time_to_sec(timediff(now(), lastupdate)) < 1800") - + def process_message(self, mail): if mail.from_email == self.settings.email_id: return @@ -43,6 +39,7 @@ class JobsMailbox(POP3Mailbox): name = (mail.from_real_name and (mail.from_real_name + " - ") or "") \ + mail.from_email applicant = webnotes.model_wrapper({ + "creation": mail.date, "doctype":"Job Applicant", "applicant_name": name, "email_id": mail.from_email, diff --git a/selling/doctype/lead/get_leads.py b/selling/doctype/lead/get_leads.py index c08e5e0a237..cda74129ddb 100644 --- a/selling/doctype/lead/get_leads.py +++ b/selling/doctype/lead/get_leads.py @@ -20,11 +20,12 @@ from webnotes.utils import cstr, cint from webnotes.utils.email_lib.receive import POP3Mailbox from core.doctype.communication.communication import make -def add_sales_communication(subject, content, sender, real_name, mail=None): - def set_status_open(doctype, name): +def add_sales_communication(subject, content, sender, real_name, mail=None, + status="Open", date=None): + def set_status(doctype, name): w = webnotes.model_wrapper(doctype, name) w.ignore_permissions = True - w.doc.status = "Open" + w.doc.status = is_system_user and "Replied" or status w.doc.save() if mail: mail.save_attachments_in_doc(w.doc) @@ -32,43 +33,39 @@ def add_sales_communication(subject, content, sender, real_name, mail=None): lead_name = webnotes.conn.get_value("Lead", {"email_id": sender}) contact_name = webnotes.conn.get_value("Contact", {"email_id": sender}) is_system_user = webnotes.conn.get_value("Profile", sender) - - if not is_system_user: - if contact_name: - set_status_open("Contact", contact_name) - elif lead_name: - set_status_open("Lead", lead_name) - else: - # none, create a new Lead - lead = webnotes.model_wrapper({ - "doctype":"Lead", - "lead_name": real_name or sender, - "email_id": sender, - "status": "Open", - "source": "Email" - }) - lead.ignore_permissions = True - lead.insert() - if mail: - mail.save_attachments_in_doc(lead.doc) + + if not (lead_name or contact_name): + # none, create a new Lead + lead = webnotes.model_wrapper({ + "doctype":"Lead", + "lead_name": real_name or sender, + "email_id": sender, + "status": status, + "source": "Email" + }) + lead.ignore_permissions = True + lead.insert() + lead_name = lead.doc.name make(content=content, sender=sender, subject=subject, - lead=lead_name, contact=contact_name) + lead=lead_name, contact=contact_name, date=date) + + if contact_name: + set_status("Contact", contact_name) + elif lead_name: + set_status("Lead", lead_name) + class SalesMailbox(POP3Mailbox): def setup(self, args=None): self.settings = args or webnotes.doc("Sales Email Settings", "Sales Email Settings") - - def check_mails(self): - return webnotes.conn.sql("select user from tabSessions where \ - time_to_sec(timediff(now(), lastupdate)) < 1800") - + def process_message(self, mail): if mail.from_email == self.settings.email_id: return add_sales_communication(mail.subject, mail.content, mail.form_email, - mail.from_real_name, mail) + mail.from_real_name, mail=mail, date=mail.date) def get_leads(): if cint(webnotes.conn.get_value('Sales Email Settings', None, 'extract_emails')): diff --git a/support/doctype/support_ticket/get_support_mails.py b/support/doctype/support_ticket/get_support_mails.py index e0cbc0760a4..d431d8f1357 100644 --- a/support/doctype/support_ticket/get_support_mails.py +++ b/support/doctype/support_ticket/get_support_mails.py @@ -30,12 +30,7 @@ class SupportMailbox(POP3Mailbox): "username": self.email_settings.support_username, "password": self.email_settings.support_password }) - - def check_mails(self): - self.auto_close_tickets() - return webnotes.conn.sql("select user from tabSessions where \ - time_to_sec(timediff(now(), lastupdate)) < 1800") - + def process_message(self, mail): if mail.from_email == self.email_settings.fields.get('support_email'): return @@ -64,9 +59,9 @@ class SupportMailbox(POP3Mailbox): mail.save_attachments_in_doc(ticket.doc) - make(content=mail.content, sender=mail.from_email, + make(content=mail.content, sender=mail.from_email, subject = ticket.doc.subject, doctype="Support Ticket", name=ticket.doc.name, - lead = ticket.doc.lead, contact=ticket.doc.contact) + lead = ticket.doc.lead, contact=ticket.doc.contact, date=mail.date) def send_auto_reply(self, d): signature = self.email_settings.fields.get('support_signature') or '' diff --git a/website/helpers/contact.py b/website/helpers/contact.py index a16e2aa28fd..251e1f6bb36 100644 --- a/website/helpers/contact.py +++ b/website/helpers/contact.py @@ -33,7 +33,8 @@ def send_message(subject="Website Query", message="", sender="", status="Open"): # make lead / communication from selling.doctype.lead.get_leads import add_sales_communication - add_sales_communication(subject or "Website Query", message, sender, sender) + add_sales_communication(subject or "Website Query", message, sender, sender, + mail=None, status=status) # guest method, cap max writes per hour if webnotes.conn.sql("""select count(*) from `tabCommunication`