From d65ced548666751ad6c153f265535d4c6e661beb Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 26 Jul 2013 16:05:59 +0530 Subject: [PATCH 1/7] [calendar] [feature] Send Daily Digest for Upcoming Events --- startup/schedule_handlers.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/startup/schedule_handlers.py b/startup/schedule_handlers.py index 99cc05b041..28ff2aef1e 100644 --- a/startup/schedule_handlers.py +++ b/startup/schedule_handlers.py @@ -39,6 +39,10 @@ def execute_all(): run_fn(flush) def execute_daily(): + # event reminders + from core.doctype.event.event import send_event_digest + run_fn(send_event_digest) + # email digest from setup.doctype.email_digest.email_digest import send run_fn(send) From 7474012789e325e6f2f042b90f294298d9ede785 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 26 Jul 2013 16:07:52 +0530 Subject: [PATCH 2/7] [fix] [minor] valide for freezed account --- controllers/accounts_controller.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/controllers/accounts_controller.py b/controllers/accounts_controller.py index f73d16a167..822717b372 100644 --- a/controllers/accounts_controller.py +++ b/controllers/accounts_controller.py @@ -20,7 +20,7 @@ from webnotes import _, msgprint from webnotes.utils import flt, cint, today, cstr from setup.utils import get_company_currency, get_price_list_currency from accounts.utils import get_fiscal_year, validate_fiscal_year -from utilities.transaction_base import TransactionBase, validate_conversion_rate, validate_uom_is_integer +from utilities.transaction_base import TransactionBase, validate_conversion_rate import json class AccountsController(TransactionBase): @@ -55,15 +55,15 @@ class AccountsController(TransactionBase): label=self.meta.get_label(date_field)) def validate_for_freezed_account(self): - for fld in ["customer", "supplier"]: - if self.meta.get_field(fld): - accounts = webnotes.conn.get_values("Account", {"master_type": fld.upper(), - "master_name": self.doc.fields[fld], "company": self.doc.company}, + for fieldname in ["customer", "supplier"]: + if self.meta.get_field(fieldname) and self.doc.fields.get(fieldname): + accounts = webnotes.conn.get_values("Account", {"master_type": fieldname.title(), + "master_name": self.doc.fields[fieldname], "company": self.doc.company}, "freeze_account", as_dict=1) if accounts: if not filter(lambda x: cstr(x.freeze_account) in ["", "No"], accounts): - msgprint(_("Account for this ") + fld + _(" has been freezed. ") + + msgprint(_("Account for this ") + fieldname + _(" has been freezed. ") + self.doc.doctype + _(" can not be made."), raise_exception=1) def set_price_list_currency(self, buying_or_selling): From 985af3255349fd6ddedfd1860fe019686d7ebdd1 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 26 Jul 2013 16:08:11 +0530 Subject: [PATCH 3/7] [cleanup] [minor] removed trash reason from grade --- hr/doctype/grade/grade.txt | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/hr/doctype/grade/grade.txt b/hr/doctype/grade/grade.txt index 0050ed928d..fdfa5c737c 100644 --- a/hr/doctype/grade/grade.txt +++ b/hr/doctype/grade/grade.txt @@ -2,7 +2,7 @@ { "creation": "2013-01-10 16:34:14", "docstatus": 0, - "modified": "2013-07-22 15:27:26", + "modified": "2013-07-26 15:24:31", "modified_by": "Administrator", "owner": "Administrator" }, @@ -16,11 +16,17 @@ }, { "doctype": "DocField", + "fieldname": "grade_name", + "fieldtype": "Data", + "label": "Grade", "name": "__common__", + "oldfieldname": "grade_name", + "oldfieldtype": "Data", "parent": "Grade", "parentfield": "fields", "parenttype": "DocType", - "permlevel": 0 + "permlevel": 0, + "reqd": 1 }, { "cancel": 1, @@ -42,22 +48,7 @@ "name": "Grade" }, { - "doctype": "DocField", - "fieldname": "trash_reason", - "fieldtype": "Small Text", - "label": "Trash Reason", - "oldfieldname": "trash_reason", - "oldfieldtype": "Small Text", - "read_only": 1 - }, - { - "doctype": "DocField", - "fieldname": "grade_name", - "fieldtype": "Data", - "label": "Grade", - "oldfieldname": "grade_name", - "oldfieldtype": "Data", - "reqd": 1 + "doctype": "DocField" }, { "doctype": "DocPerm" From 49aa364820b7925c99bcd2454ca36fde36bd3de8 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 26 Jul 2013 16:45:01 +0530 Subject: [PATCH 4/7] [fix] [minor] --- docs/docs.user.tools.calendar.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/docs.user.tools.calendar.md b/docs/docs.user.tools.calendar.md index bf2923a71e..df701866ad 100644 --- a/docs/docs.user.tools.calendar.md +++ b/docs/docs.user.tools.calendar.md @@ -4,3 +4,18 @@ } --- The Calendar is a tool where you can create and share Events and also see auto-generated events from the system. + +### Repeating Events + +You can set events to repeat on every interval by Checking the "Repeat This Event" +as shown in the example. + +![Set Repeat This Event](img/event-1.png) + +You can see the repeat events by switching back to the calendar. + +![Event Repeated in Calendar](img/event-2.png) + +### Reminders + +You will also get a daily digest of all upcoming events for the day if any if the reminder field is checked. \ No newline at end of file From 3adcfe4e49c98b1e594863158e3f9326a8934eaa Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 26 Jul 2013 17:38:48 +0530 Subject: [PATCH 5/7] [minor] [style] --- website/css/website.css | 5 ----- 1 file changed, 5 deletions(-) diff --git a/website/css/website.css b/website/css/website.css index f2880e892d..cdd277b429 100644 --- a/website/css/website.css +++ b/website/css/website.css @@ -185,9 +185,4 @@ fieldset[disabled] .btn-default:active, fieldset[disabled] .btn-default.active { background-color: #a7a9aa; border-color: #a7a9aa; -} - -.breadcrumb { - margin: 0 -20px 20px; - border-radius: 0px; } \ No newline at end of file From af15a4a496f0699799a9df3d446372a4efb63f89 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 26 Jul 2013 19:03:04 +0530 Subject: [PATCH 6/7] [event] [minor fixes] --- startup/open_count.py | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/startup/open_count.py b/startup/open_count.py index 7a4866b5aa..04e00297b1 100644 --- a/startup/open_count.py +++ b/startup/open_count.py @@ -41,14 +41,10 @@ def get_things_todo(): def get_todays_events(): """Returns a count of todays events in calendar""" + from core.doctype.event.event import get_events from webnotes.utils import nowdate - todays_events = webnotes.conn.sql("""\ - SELECT COUNT(*) FROM `tabEvent` - WHERE owner = %s - AND event_type != 'Cancel' - AND %s between date(starts_on) and date(ends_on)""", ( - webnotes.session.user, nowdate())) - return todays_events[0][0] + today = nowdate() + return len(get_events(today, today)) def get_unread_messages(): "returns unread (docstatus-0 messages for a user)" From 5f6022681b00235d6b702efa5232cdaf135312b4 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Sun, 28 Jul 2013 09:15:11 +0530 Subject: [PATCH 7/7] [fix] [minor] email digest events fix --- setup/doctype/email_digest/email_digest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup/doctype/email_digest/email_digest.py b/setup/doctype/email_digest/email_digest.py index 881e35a8f5..0354b50930 100644 --- a/setup/doctype/email_digest/email_digest.py +++ b/setup/doctype/email_digest/email_digest.py @@ -294,7 +294,7 @@ class DocType(DocListController): def get_calendar_events(self, user_id): from core.doctype.event.event import get_events - events = get_events(self.future_from_date, self.future_to_date) + events = get_events(self.future_from_date.strftime("%Y-%m-%d"), self.future_to_date.strftime("%Y-%m-%d")) html = "" if events: