blob: b761225deb9ca9a2d6e60ec39845d3c863520616 [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("""\
23 SELECT name, comment
24 FROM `tabComment`
25 WHERE comment_doctype IN ('My Company', 'Message')
26 AND comment_docname = %s
27 AND ifnull(docstatus,0)=0
28 """, webnotes.user.name, as_list=1)
29
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 from webnotes.utils import cint
33 open_support_tickets = webnotes.conn.sql("""\
34 SELECT COUNT(*) FROM `tabSupport Ticket`
35 WHERE status = 'Open'""")
36 return open_support_tickets and cint(open_support_tickets[0][0]) or 0
37
Rushabh Mehta07c94ce2012-06-04 12:57:23 +053038def get_open_tasks():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053039 """Returns a count of open tasks"""
Rushabh Mehta07c94ce2012-06-04 12:57:23 +053040 from webnotes.utils import cint
41 return webnotes.conn.sql("""\
42 SELECT COUNT(*) FROM `tabTask`
43 WHERE status = 'Open'""")[0][0]
44
Anand Doshi82042f12012-04-06 17:54:17 +053045def get_things_todo():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053046 """Returns a count of incomplete todos"""
Anand Doshi82042f12012-04-06 17:54:17 +053047 from webnotes.utils import cint
48 incomplete_todos = webnotes.conn.sql("""\
49 SELECT COUNT(*) FROM `tabToDo`
50 WHERE IFNULL(checked, 0) = 0
51 AND owner = %s""", webnotes.session.get('user'))
52 return incomplete_todos and cint(incomplete_todos[0][0]) or 0
53
54def get_todays_events():
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053055 """Returns a count of todays events in calendar"""
Anand Doshi82042f12012-04-06 17:54:17 +053056 from webnotes.utils import nowdate, cint
57 todays_events = webnotes.conn.sql("""\
58 SELECT COUNT(*) FROM `tabEvent`
59 WHERE owner = %s
60 AND event_type != 'Cancel'
61 AND event_date = %s""", (
62 webnotes.session.get('user'), nowdate()))
63 return todays_events and cint(todays_events[0][0]) or 0
64
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053065def get_unanswered_questions():
66 return len(filter(lambda d: d[0]==0,
67 webnotes.conn.sql("""select (select count(*) from tabAnswer
68 where tabAnswer.question = tabQuestion.name) as answers from tabQuestion""")))
69
Anand Doshi82042f12012-04-06 17:54:17 +053070@webnotes.whitelist()
71def get_global_status_messages(arg=None):
72 return {
73 'unread_messages': get_unread_messages(),
74 'open_support_tickets': get_open_support_tickets(),
75 'things_todo': get_things_todo(),
76 'todays_events': get_todays_events(),
Rushabh Mehtac7dbe292012-08-07 12:12:55 +053077 'open_tasks': get_open_tasks(),
78 'unanswered_questions': get_unanswered_questions()
Anand Doshi82042f12012-04-06 17:54:17 +053079 }