service.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # -*- coding: utf-8 -*-
  2. """
  3. demeter
  4. name:service.py
  5. author:rabin
  6. """
  7. from demeter.core import *
  8. class Service(object):
  9. def list(self, name, state = True, search=None, page=False, order='cdate desc', limit = '0,100'):
  10. model = self.model(name)
  11. if state != -1:
  12. model.state = state
  13. if search:
  14. for key, value in search.items():
  15. if value or value == 0:
  16. if '-' in key:
  17. key = key.split('-')
  18. keyLen = len(key)
  19. if keyLen > 2 and key[2]:
  20. method = key[2]
  21. else:
  22. method = 'assign'
  23. self.assign(model, key[0], value, method)
  24. else:
  25. self.assign(model, key, value)
  26. data = model.select(page=page, order=order, limit=limit)
  27. return data
  28. def one(self, name, **kwd):
  29. model = self.model(name)
  30. if kwd:
  31. for key,value in kwd.items():
  32. self.assign(model, key, value)
  33. data = model.select(type='fetchone')
  34. return data
  35. def update(self, name, id, data, cdate=True):
  36. model = self.model(name)
  37. if id:
  38. model.id = id
  39. if cdate == True and 'cdate' not in data:
  40. data['cdate'] = 'time'
  41. model.update(data)
  42. else:
  43. for key, value in data.items():
  44. method = 'assign'
  45. if 'date' in key:
  46. method = 'time'
  47. self.assign(model, key, value, method)
  48. id = model.insert()
  49. #Demeter.sync(name, id)
  50. return id
  51. def delete(self, name, id, state = False):
  52. model = self.model(name)
  53. model.id = id
  54. state = model.update(state=state)
  55. #Demeter.sync(name, id)
  56. return state
  57. def rDelete(self, name, id):
  58. model = self.model(name)
  59. model.id = id
  60. return model.delete()
  61. def model(self, name):
  62. return Demeter.model(name)
  63. def assign(self, model, key, value, method='assign'):
  64. if hasattr(model, key):
  65. attr = getattr(model, key)
  66. if hasattr(attr, method):
  67. call = getattr(attr, method)
  68. call(value)