cleanups to support email (dirty)
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..8b2106b
--- /dev/null
+++ b/favicon.ico
Binary files differ
diff --git a/patches/patch.py b/patches/patch.py
index 384ee2a..ade0805 100644
--- a/patches/patch.py
+++ b/patches/patch.py
@@ -1298,3 +1298,26 @@
# load the new billing page
if cint(webnotes.conn.get_value('Control Panel',None,'sync_with_gateway')):
reload_doc('server_tools','page','billing')
+ elif patch_no == 327:
+ # patch for support email settings now moved to email settings
+ reload_doc('setup','doctype','email_settings')
+
+ # map fields from support to email settings
+ field_map = {
+ 'support_email': 'email',
+ 'support_host':'host',
+ 'support_username': 'username',
+ 'support_password': 'password',
+ 'sync_support_mails': 'integrate_incoming',
+ 'signature': 'support_signature'
+ }
+
+ for key in field_map:
+ webnotes.conn.set_value('Email Settings',None,key, \
+ webnotes.conn.get_value('Support Email Settings',None,field_map[key]))
+
+ # delete support email settings
+ from webnotes.model import delete_doc
+ delete_doc('DocType', 'Support Email Settings')
+
+ # delete description field
\ No newline at end of file
diff --git a/setup/doctype/email_settings/email_settings.py b/setup/doctype/email_settings/email_settings.py
index 12c2464..b19e4e2 100644
--- a/setup/doctype/email_settings/email_settings.py
+++ b/setup/doctype/email_settings/email_settings.py
@@ -1,44 +1,37 @@
-# Please edit this list and import only required elements
import webnotes
-
-from webnotes.utils import add_days, add_months, add_years, cint, cstr, date_diff, default_fields, flt, fmt_money, formatdate, generate_hash, getTraceback, get_defaults, get_first_day, get_last_day, getdate, has_common, month_name, now, nowdate, replace_newlines, sendmail, set_default, str_esc_quote, user_format, validate_email_add
-from webnotes.model import db_exists
-from webnotes.model.doc import Document, addchild, removechild, getchildren, make_autoname, SuperDocType
-from webnotes.model.doclist import getlist, copy_doclist
-from webnotes.model.code import get_obj, get_server_obj, run_server_obj, updatedb, check_syntax
-from webnotes import session, form, is_testing, msgprint, errprint
-
-set = webnotes.conn.set
sql = webnotes.conn.sql
-get_value = webnotes.conn.get_value
-in_transaction = webnotes.conn.in_transaction
-convert_to_lists = webnotes.conn.convert_to_lists
-# -----------------------------------------------------------------------------------------
-
class DocType:
- def __init__(self,doc,doclist):
- self.doc,self.doclist = doc,doclist
+ def __init__(self,doc,doclist):
+ self.doc,self.doclist = doc,doclist
- def set_vals(self):
- res = sql("select field, value from `tabSingles` where doctype = 'Control Panel' and field IN ('outgoing_mail_server','mail_login','mail_password','auto_email_id','mail_port','use_ssl')")
- ret = {}
- for r in res:
- ret[cstr(r[0])]=r[1] and cstr(r[1]) or ''
-
- return str(ret)
+ def set_vals(self):
+ res = sql("select field, value from `tabSingles` where doctype = 'Control Panel' and field IN ('outgoing_mail_server','mail_login','mail_password','auto_email_id','mail_port','use_ssl')")
+ ret = {}
+ for r in res:
+ ret[cstr(r[0])]=r[1] and cstr(r[1]) or ''
+
+ return str(ret)
- def on_update(self):
- if self.doc.outgoing_mail_server:
- sql("update `tabSingles` set value ='%s' where doctype = 'Control Panel' and field = 'outgoing_mail_server'"%self.doc.outgoing_mail_server)
- if self.doc.mail_login:
- sql("update `tabSingles` set value ='%s' where doctype = 'Control Panel' and field = 'mail_login'"%self.doc.mail_login)
- if self.doc.mail_password:
- sql("update `tabSingles` set value ='%s' where doctype = 'Control Panel' and field = 'mail_password'"%self.doc.mail_password)
- if self.doc.auto_email_id:
- sql("update `tabSingles` set value ='%s' where doctype = 'Control Panel' and field = 'auto_email_id'"%self.doc.auto_email_id)
- if self.doc.mail_port:
- sql("update `tabSingles` set value ='%s' where doctype = 'Control Panel' and field = 'mail_port'"%self.doc.mail_port)
- if self.doc.use_ssl:
- sql("update `tabSingles` set value ='%s' where doctype = 'Control Panel' and field = 'use_ssl'"%self.doc.use_ssl)
\ No newline at end of file
+ def set_cp_value(self, key):
+ """
+ Update value in control panel
+ """
+ if self.doc.fields.get(key):
+ webnotes.conn.set_value('Control Panel', None, key, self.doc.fields[key])
+
+ def on_update(self):
+ """
+ Sets or cancels the event in the scheduler
+ """
+ # update control panel
+ map(self.set_cp_value, 'outgoing_mail_server', 'mail_login', 'mail_password', 'auto_email_id', 'mail_port', 'use_ssl')
+
+ # setup scheduler for support emails
+ if cint(self.doc.sync_support_mails):
+ from webnotes.utils.scheduler import set_event
+ set_event('support.doctype.support_ticket.get_support_mails', 60*5, 1)
+ else:
+ from webnotes.utils.scheduler import cancel_event
+ cancel_event('support.doctype.support_ticket.get_support_mails')
\ No newline at end of file
diff --git a/setup/doctype/email_settings/email_settings.txt b/setup/doctype/email_settings/email_settings.txt
index 31bc932..1b50694 100644
--- a/setup/doctype/email_settings/email_settings.txt
+++ b/setup/doctype/email_settings/email_settings.txt
@@ -5,14 +5,14 @@
{
'creation': '2010-08-08 17:08:59',
'docstatus': 0,
- 'modified': '2011-01-04 11:21:25',
- 'modified_by': 'umair@iwebnotes.com',
+ 'modified': '2011-07-25 11:07:14',
+ 'modified_by': 'Administrator',
'owner': 'harshada@webnotestech.com'
},
# These values are common for all DocType
{
- '_last_update': '1307707462',
+ '_last_update': '1300962303',
'allow_copy': 1,
'allow_email': 1,
'allow_print': 1,
@@ -24,7 +24,7 @@
'name': '__common__',
'section_style': 'Simple',
'server_code_error': ' ',
- 'version': 27
+ 'version': 30
},
# These values are common for all DocField
@@ -72,9 +72,17 @@
# DocField
{
'doctype': 'DocField',
+ 'fieldtype': 'Section Break',
+ 'idx': 1,
+ 'label': 'Outgoing Mails'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
'fieldname': 'outgoing_mail_server',
'fieldtype': 'Data',
- 'idx': 1,
+ 'idx': 2,
'label': 'Outgoing Mail Server'
},
@@ -83,7 +91,7 @@
'doctype': 'DocField',
'fieldname': 'mail_port',
'fieldtype': 'Data',
- 'idx': 2,
+ 'idx': 3,
'label': 'Mail Port'
},
@@ -92,7 +100,7 @@
'doctype': 'DocField',
'fieldname': 'use_ssl',
'fieldtype': 'Check',
- 'idx': 3,
+ 'idx': 4,
'label': 'Use SSL'
},
@@ -101,7 +109,7 @@
'doctype': 'DocField',
'fieldname': 'mail_login',
'fieldtype': 'Data',
- 'idx': 4,
+ 'idx': 5,
'label': 'Login Id'
},
@@ -110,7 +118,7 @@
'doctype': 'DocField',
'fieldname': 'mail_password',
'fieldtype': 'Password',
- 'idx': 5,
+ 'idx': 6,
'label': 'Mail Password'
},
@@ -119,7 +127,94 @@
'doctype': 'DocField',
'fieldname': 'auto_email_id',
'fieldtype': 'Data',
- 'idx': 6,
+ 'idx': 7,
'label': 'Auto Email Id'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldtype': 'Section Break',
+ 'idx': 8,
+ 'label': 'Support Ticket Mail Settings'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'sync_support_mails',
+ 'fieldtype': 'Check',
+ 'idx': 9,
+ 'label': 'Sync Support Mails'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_email',
+ 'fieldtype': 'Data',
+ 'idx': 10,
+ 'label': 'Support Email'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_host',
+ 'fieldtype': 'Data',
+ 'idx': 11,
+ 'label': 'Mail Server'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_use_ssl',
+ 'fieldtype': 'Check',
+ 'idx': 12,
+ 'label': 'Use SSL'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_username',
+ 'fieldtype': 'Data',
+ 'idx': 13,
+ 'label': 'User Name'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_password',
+ 'fieldtype': 'Password',
+ 'idx': 14,
+ 'label': 'Support Password'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldtype': 'Column Break',
+ 'idx': 15
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_signature',
+ 'fieldtype': 'Text',
+ 'idx': 16,
+ 'label': 'Signature'
+ },
+
+ # DocField
+ {
+ 'doctype': 'DocField',
+ 'fieldname': 'support_autoreply',
+ 'fieldtype': 'Text',
+ 'idx': 17,
+ 'label': 'Autoreply'
}
]
\ No newline at end of file
diff --git a/setup/doctype/support_email_settings/__init__.py b/setup/doctype/support_email_settings/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/setup/doctype/support_email_settings/__init__.py
+++ /dev/null
diff --git a/setup/doctype/support_email_settings/support_email_settings.py b/setup/doctype/support_email_settings/support_email_settings.py
deleted file mode 100644
index 44d8735..0000000
--- a/setup/doctype/support_email_settings/support_email_settings.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import webnotes
-from webnotes.utils import cint
-
-class DocType:
- def __init__(self,dt,dn):
- self.doc, self.doctype = dt,dn
-
- def on_update(self):
- """
- Sets or cancels the event in the scheduler
- """
- if cint(self.doc.integrate_incoming):
- from webnotes.utils.scheduler import set_event
- set_event('support.doctype.support_ticket.get_support_mails', 60*5, 1)
- else:
- from webnotes.utils.scheduler import cancel_event
- cancel_event('support.doctype.support_ticket.get_support_mails')
-
diff --git a/setup/doctype/support_email_settings/support_email_settings.txt b/setup/doctype/support_email_settings/support_email_settings.txt
deleted file mode 100644
index 6079567..0000000
--- a/setup/doctype/support_email_settings/support_email_settings.txt
+++ /dev/null
@@ -1,144 +0,0 @@
-# DocType, Support Email Settings
-[
-
- # These values are common in all dictionaries
- {
- 'creation': '2011-05-23 14:50:45',
- 'docstatus': 0,
- 'modified': '2011-05-28 09:25:53',
- 'modified_by': 'Administrator',
- 'owner': 'Administrator'
- },
-
- # These values are common for all DocType
- {
- '_last_update': '1306554355',
- 'colour': 'White:FFF',
- 'doctype': 'DocType',
- 'in_dialog': 1,
- 'issingle': 1,
- 'module': 'Setup',
- 'name': '__common__',
- 'read_only': 1,
- 'section_style': 'Simple',
- 'show_in_menu': 1,
- 'version': 8
- },
-
- # These values are common for all DocField
- {
- 'doctype': 'DocField',
- 'name': '__common__',
- 'parent': 'Support Email Settings',
- 'parentfield': 'fields',
- 'parenttype': 'DocType',
- 'permlevel': 0
- },
-
- # These values are common for all DocPerm
- {
- 'create': 1,
- 'doctype': 'DocPerm',
- 'idx': 1,
- 'name': '__common__',
- 'parent': 'Support Email Settings',
- 'parentfield': 'permissions',
- 'parenttype': 'DocType',
- 'permlevel': 0,
- 'read': 1,
- 'role': 'System Manager',
- 'write': 1
- },
-
- # DocType, Support Email Settings
- {
- 'doctype': 'DocType',
- 'name': 'Support Email Settings'
- },
-
- # DocPerm
- {
- 'doctype': 'DocPerm'
- },
-
- # DocField
- {
- 'colour': 'White:FFF',
- 'description': 'The full email id of your incoming support emails',
- 'doctype': 'DocField',
- 'fieldname': 'email',
- 'fieldtype': 'Data',
- 'idx': 1,
- 'label': 'Email',
- 'options': 'Email'
- },
-
- # DocField
- {
- 'colour': 'White:FFF',
- 'description': 'By checking this, your incoming mails will automatically be integrated with the Support Ticket',
- 'doctype': 'DocField',
- 'fieldname': 'integrate_incoming',
- 'fieldtype': 'Check',
- 'idx': 2,
- 'label': 'Integrate Incoming'
- },
-
- # DocField
- {
- 'colour': 'White:FFF',
- 'description': 'Signature appended to the outgoing email (Text / HTML)',
- 'doctype': 'DocField',
- 'fieldname': 'signature',
- 'fieldtype': 'Text',
- 'idx': 3,
- 'label': 'Signature'
- },
-
- # DocField
- {
- 'doctype': 'DocField',
- 'fieldtype': 'Column Break',
- 'idx': 4
- },
-
- # DocField
- {
- 'doctype': 'DocField',
- 'fieldname': 'use_ssl',
- 'fieldtype': 'Check',
- 'idx': 5,
- 'label': 'Use SSL'
- },
-
- # DocField
- {
- 'colour': 'White:FFF',
- 'description': 'eg. pop.gmail.com',
- 'doctype': 'DocField',
- 'fieldname': 'host',
- 'fieldtype': 'Data',
- 'idx': 6,
- 'label': 'Host'
- },
-
- # DocField
- {
- 'colour': 'White:FFF',
- 'description': 'Support Email Id',
- 'doctype': 'DocField',
- 'fieldname': 'username',
- 'fieldtype': 'Data',
- 'idx': 7,
- 'label': 'Username'
- },
-
- # DocField
- {
- 'doctype': 'DocField',
- 'fieldname': 'password',
- 'fieldtype': 'Password',
- 'idx': 8,
- 'label': 'Password'
- }
-]
\ No newline at end of file
diff --git a/support/doctype/support_ticket/__init__.py b/support/doctype/support_ticket/__init__.py
index 0ca33ec..d9c5065 100644
--- a/support/doctype/support_ticket/__init__.py
+++ b/support/doctype/support_ticket/__init__.py
@@ -6,14 +6,26 @@
def __init__(self):
"""
settings_doc must contain
- is_ssl, host, username, password
+ use_ssl, host, username, password
"""
- POP3Mailbox.__init__(self, 'Support Email Settings')
+ from webnotes.model.doc import Document
+
+ # extract email settings
+ self.email_settings = Document('Email Settings','Email Settings')
+
+ s = Document('Support Email Settings')
+ s.use_ssl = self.email_settings.support_use_ssl
+ s.host = self.email_settings.support_host
+ s.username = self.email_settings.support_username
+ s.password = self.email_settings.support_password
+
+ POP3Mailbox.__init__(self, s)
def check_mails(self):
"""
returns true if there are active sessions
"""
+ 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):
@@ -56,6 +68,36 @@
# update feed
update_feed(d)
+ # send auto reply
+ self.send_auto_reply(d)
+
+ def send_auto_reply(self, d):
+ """
+ Send auto reply to emails
+ """
+ signature = self.email_settings.support_signature
+
+ response = self.email_settings.support_autoreply or ("""
+A new Ticket has been raised for your query. If you have any additional information, please
+reply back to this mail.
+
+We will get back to you as soon as possible
+
+[This is an automatic response]
+ """ + signature)
+
+ sendmail(\
+ recipients = [d.raised_by], \
+ sender = self.email_settings.support_email, \
+ subject = '['+d.name+'] ' + d.subject, \
+ msg= autoresponse)
+
+ def auto_close_tickets(self):
+ """
+ Auto Closes Waiting for Customer Support Ticket after 15 days
+ """
+ webnotes.conn.sql("update `tabSupport Ticket` set status = 'Closed' where status = 'Waiting for Customer' and date_sub(curdate(),interval 15 Day) > modified")
+
def get_support_mails():
"""
@@ -63,8 +105,3 @@
"""
SupportMailbox().get_messages()
-def auto_close_tickets():
- """
- Auto Closes Waiting for Customer Support Ticket after 15 days
- """
- webnotes.conn.sql("update `tabSupport Ticket` set status = 'Closed' where status = 'Waiting for Customer' and date_sub(curdate(),interval 15 Day) > modified")
diff --git a/support/doctype/support_ticket/support_ticket.js b/support/doctype/support_ticket/support_ticket.js
index 2c1e77f..914227b 100644
--- a/support/doctype/support_ticket/support_ticket.js
+++ b/support/doctype/support_ticket/support_ticket.js
@@ -20,9 +20,9 @@
items: [
{
column: 0,
- label:'Support Email Settings',
+ label:'Email Settings',
description:'Integrate your incoming support emails to support ticket',
- onclick: function() { loaddoc('Support Email Settings','Support Email Settings'); }
+ onclick: function() { loaddoc('Email Settings','Email Settings'); }
},
]
})
diff --git a/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py
index 75defbe..c71304a 100644
--- a/support/doctype/support_ticket/support_ticket.py
+++ b/support/doctype/support_ticket/support_ticket.py
@@ -19,7 +19,7 @@
response = self.doc.new_response + '\n\n[Please do not change the subject while responding.]'
- signature = webnotes.conn.get_value('Support Email Settings',None,'signature')
+ signature = webnotes.conn.get_value('Email Settings',None,'support_signature')
if signature:
response += '\n\n' + signature
@@ -27,7 +27,7 @@
sendmail(\
recipients = [self.doc.raised_by], \
- sender=webnotes.conn.get_value('Support Email Settings',None,'email'), \
+ sender=webnotes.conn.get_value('Email Settings',None,'support_email'), \
subject=subject, \
msg=response)
diff --git a/support/doctype/support_ticket/support_ticket.txt b/support/doctype/support_ticket/support_ticket.txt
index caeb801..211f512 100644
--- a/support/doctype/support_ticket/support_ticket.txt
+++ b/support/doctype/support_ticket/support_ticket.txt
@@ -24,7 +24,7 @@
'server_code_error': ' ',
'show_in_menu': 0,
'subject': '%(subject)s',
- 'tag_fields': 'status,allocated_to',
+ 'tag_fields': 'status',
'version': 150
},