blob: 89c0336d176ec36e53aa750969ce88facddf1b57 [file] [log] [blame]
Rushabh Mehta95e4e142012-09-13 19:40:56 +05301# ERPNext - web based ERP (http://erpnext.com)
2# Copyright (C) 2012 Web Notes Technologies Pvt Ltd
3#
4# This program is free software: you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation, either version 3 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program. If not, see <http://www.gnu.org/licenses/>.
16
Rushabh Mehta2ad0d422012-09-18 18:52:05 +053017from __future__ import unicode_literals
Anand Doshi82042f12012-04-06 17:54:17 +053018import webnotes
19
20def get_unread_messages():
21 "returns unread (docstatus-0 messages for a user)"
22 return webnotes.conn.sql("""\
Rushabh Mehtaec406862012-11-13 10:59:11 +053023 SELECT count(*)
Anand Doshi82042f12012-04-06 17:54:17 +053024 FROM `tabComment`
25 WHERE comment_doctype IN ('My Company', 'Message')
26 AND comment_docname = %s
27 AND ifnull(docstatus,0)=0
Rushabh Mehtaec406862012-11-13 10:59:11 +053028 """, webnotes.user.name)[0][0]
Anand Doshi82042f12012-04-06 17:54:17 +053029
30def get_open_support_tickets():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053031 """Returns a count of open support tickets"""
Anand Doshi82042f12012-04-06 17:54:17 +053032 open_support_tickets = webnotes.conn.sql("""\
33 SELECT COUNT(*) FROM `tabSupport Ticket`
34 WHERE status = 'Open'""")
Rushabh Mehta2e5db352013-01-16 11:34:26 +053035 return open_support_tickets[0][0]
Anand Doshi82042f12012-04-06 17:54:17 +053036
Rushabh Mehta07c94ce2012-06-04 12:57:23 +053037def get_open_tasks():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053038 """Returns a count of open tasks"""
Rushabh Mehta07c94ce2012-06-04 12:57:23 +053039 return webnotes.conn.sql("""\
40 SELECT COUNT(*) FROM `tabTask`
41 WHERE status = 'Open'""")[0][0]
42
Anand Doshi82042f12012-04-06 17:54:17 +053043def get_things_todo():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053044 """Returns a count of incomplete todos"""
Anand Doshi82042f12012-04-06 17:54:17 +053045 incomplete_todos = webnotes.conn.sql("""\
46 SELECT COUNT(*) FROM `tabToDo`
47 WHERE IFNULL(checked, 0) = 0
Rushabh Mehta9e12af42012-12-12 16:13:29 +053048 AND (owner = %s or assigned_by=%s)""", (webnotes.session.user, webnotes.session.user))
Rushabh Mehta2e5db352013-01-16 11:34:26 +053049 return incomplete_todos[0][0]
Anand Doshi82042f12012-04-06 17:54:17 +053050
51def get_todays_events():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053052 """Returns a count of todays events in calendar"""
Rushabh Mehta2e5db352013-01-16 11:34:26 +053053 from webnotes.utils import nowdate
Anand Doshi82042f12012-04-06 17:54:17 +053054 todays_events = webnotes.conn.sql("""\
55 SELECT COUNT(*) FROM `tabEvent`
56 WHERE owner = %s
57 AND event_type != 'Cancel'
Anand Doshia6acdda2013-03-01 14:41:32 +053058 AND %s between date(starts_on) and date(ends_on)""", (
Rushabh Mehta2e5db352013-01-16 11:34:26 +053059 webnotes.session.user, nowdate()))
60 return todays_events[0][0]
61
62def get_open_leads():
63 return webnotes.conn.sql("""select count(*) from tabLead
64 where status='Open'""")[0][0]
Anand Doshi82042f12012-04-06 17:54:17 +053065
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053066def get_unanswered_questions():
67 return len(filter(lambda d: d[0]==0,
68 webnotes.conn.sql("""select (select count(*) from tabAnswer
69 where tabAnswer.question = tabQuestion.name) as answers from tabQuestion""")))
70
Anand Doshi82042f12012-04-06 17:54:17 +053071@webnotes.whitelist()
72def get_global_status_messages(arg=None):
73 return {
74 'unread_messages': get_unread_messages(),
75 'open_support_tickets': get_open_support_tickets(),
76 'things_todo': get_things_todo(),
77 'todays_events': get_todays_events(),
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053078 'open_tasks': get_open_tasks(),
Rushabh Mehta2e5db352013-01-16 11:34:26 +053079 'unanswered_questions': get_unanswered_questions(),
80 'open_leads': get_open_leads()
Anand Doshi82042f12012-04-06 17:54:17 +053081 }