You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

59 lines
1.7 KiB

  1. # Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
  2. # MIT License. See license.txt
  3. from __future__ import unicode_literals
  4. import frappe
  5. from frappe import _
  6. import json
  7. @frappe.whitelist()
  8. def update_event(args, field_map):
  9. """Updates Event (called via calendar) based on passed `field_map`"""
  10. args = frappe._dict(json.loads(args))
  11. field_map = frappe._dict(json.loads(field_map))
  12. w = frappe.get_doc(args.doctype, args.name)
  13. w.set(field_map.start, args[field_map.start])
  14. w.set(field_map.end, args.get(field_map.end))
  15. w.save()
  16. def get_event_conditions(doctype, filters=None):
  17. """Returns SQL conditions with user permissions and filters for event queries"""
  18. from frappe.desk.reportview import get_filters_cond
  19. if not frappe.has_permission(doctype):
  20. frappe.throw(_("Not Permitted"), frappe.PermissionError)
  21. return get_filters_cond(doctype, filters, [], with_match_conditions = True)
  22. @frappe.whitelist()
  23. def get_events(doctype, start, end, field_map, filters=None, fields=None):
  24. field_map = frappe._dict(json.loads(field_map))
  25. fields = frappe.parse_json(fields)
  26. doc_meta = frappe.get_meta(doctype)
  27. for d in doc_meta.fields:
  28. if d.fieldtype == "Color":
  29. field_map.update({
  30. "color": d.fieldname
  31. })
  32. if filters:
  33. filters = json.loads(filters or '')
  34. if not fields:
  35. fields = [field_map.start, field_map.end, field_map.title, 'name']
  36. if field_map.color:
  37. fields.append(field_map.color)
  38. start_date = "ifnull(%s, '0001-01-01 00:00:00')" % field_map.start
  39. end_date = "ifnull(%s, '2199-12-31 00:00:00')" % field_map.end
  40. filters += [
  41. [doctype, start_date, '<=', end],
  42. [doctype, end_date, '>=', start],
  43. ]
  44. return frappe.get_list(doctype, fields=fields, filters=filters)