| from __future__ import unicode_literals |
| |
| import webnotes |
| from webnotes import _ |
| |
| @webnotes.whitelist() |
| def get_events(start, end, employee=None, company=None): |
| roles = webnotes.get_roles() |
| events = webnotes.conn.sql("""select name as `id`, subject as title, |
| starts_on as `start`, ends_on as `end`, "Event" as doctype, owner, |
| all_day as allDay, event_type |
| from tabEvent where ( |
| (starts_on between %s and %s) |
| or (ends_on between %s and %s) |
| ) |
| and (event_type='Public' or owner=%s |
| or exists(select * from `tabEvent User` where |
| `tabEvent User`.parent=tabEvent.name and person=%s) |
| or exists(select * from `tabEvent Role` where |
| `tabEvent Role`.parent=tabEvent.name |
| and `tabEvent Role`.role in ('%s')))""" % ('%s', '%s', '%s', '%s', '%s', '%s', |
| "', '".join(roles)), (start, end, start, end, |
| webnotes.session.user, webnotes.session.user), as_dict=1) |
| |
| |
| if employee: |
| add_block_dates(events, start, end, employee, company) |
| add_department_leaves(events, start, end, employee, company) |
| |
| return events |
| |
| def add_department_leaves(events, start, end, employee, company): |
| department = webnotes.conn.get_value("Employee", employee, "department") |
| |
| if not department: |
| return |
| |
| # department leaves |
| department_employees = webnotes.conn.sql_list("select name from tabEmployee where department=%s", |
| department) |
| |
| for d in webnotes.conn.sql("""select name, from_date, to_date, employee_name, half_day, |
| status, employee |
| from `tabLeave Application` where |
| (from_date between %s and %s or to_date between %s and %s) |
| and docstatus < 2 |
| and status!="Rejected" |
| and employee in ('%s')""" % ("%s", "%s", "%s", "%s", "', '".join(department_employees)), |
| (start, end, start, end), as_dict=True): |
| events.append({ |
| "id": d.name, |
| "employee": d.employee, |
| "doctype": "Leave Application", |
| "start": d.from_date, |
| "end": d.to_date, |
| "allDay": True, |
| "status": d.status, |
| "title": _("Leave by") + " " + d.employee_name + \ |
| (d.half_day and _(" (Half Day)") or "") |
| }) |
| |
| |
| def add_block_dates(events, start, end, employee, company): |
| # block days |
| from hr.doctype.leave_block_list.leave_block_list import get_applicable_block_dates |
| |
| cnt = 0 |
| block_dates = get_applicable_block_dates(start, end, employee, company, all_lists=True) |
| |
| for block_date in block_dates: |
| events.append({ |
| "doctype": "Leave Block List Date", |
| "start": block_date.block_date, |
| "title": _("Leave Blocked") + ": " + block_date.reason, |
| "id": "_" + str(cnt), |
| "allDay": True |
| }) |
| cnt+=1 |
| |
| |
| @webnotes.whitelist() |
| def update_event(name, start, end): |
| webnotes.conn.sql("""update tabEvent set starts_on=%s, ends_on=%s where |
| name=%s""", (start, end, name)) |
| |