booleancharfield.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #coding=utf-8
  2. from rest_framework import serializers
  3. from utils.format import strftime,strfdate
  4. from apps.base import Formater
  5. class BooleanCharField(serializers.BooleanField):
  6. def get_attribute(self, obj):
  7. return obj
  8. def to_representation(self, obj):
  9. if '.' in self.source:
  10. k = self.source.split('.')
  11. has_r = hasattr(obj, k[0])
  12. if has_r:
  13. r = getattr(obj, k[0])
  14. if hasattr(r, k[1]):
  15. val = getattr(r, k[1])
  16. else:
  17. val = self.get_attribute(obj)
  18. else:
  19. return u'未知'
  20. else:
  21. val = getattr(obj, self.source)
  22. return u'是' if val else u'否'
  23. class TimeCharField(serializers.CharField):
  24. def get_attribute(self, obj):
  25. return obj
  26. def to_representation(self, obj):
  27. if '.' in self.source:
  28. k = self.source.split('.')
  29. has_r = hasattr(obj, k[0])
  30. if has_r:
  31. r = getattr(obj, k[0])
  32. if hasattr(r, k[1]):
  33. val = getattr(r, k[1])
  34. else:
  35. val = self.get_attribute(obj)
  36. else:
  37. return ''
  38. else:
  39. val = getattr(obj, self.source)
  40. return strftime(val)
  41. class DateCharField(serializers.CharField):
  42. def get_attribute(self, obj):
  43. return obj
  44. def to_representation(self, obj):
  45. if '.' in self.source:
  46. k = self.source.split('.')
  47. has_r = hasattr(obj, k[0])
  48. if has_r:
  49. r = getattr(obj, k[0])
  50. if hasattr(r, k[1]):
  51. val = getattr(r, k[1])
  52. else:
  53. val = self.get_attribute(obj)
  54. else:
  55. return ''
  56. else:
  57. val = getattr(obj, self.source)
  58. return strfdate(val)
  59. class AmountShowCharField(serializers.CharField):
  60. def get_attribute(self, obj):
  61. return obj
  62. def to_representation(self, obj):
  63. if '.' in self.source:
  64. k = self.source.split('.')
  65. has_r = hasattr(obj, k[0])
  66. if has_r:
  67. r = getattr(obj, k[0])
  68. if hasattr(r, k[1]):
  69. val = getattr(r, k[1])
  70. else:
  71. val = self.get_attribute(obj)
  72. else:
  73. return ''
  74. else:
  75. val = getattr(obj, self.source)
  76. return Formater.formatAmountShow(val)
  77. class PriceShowCharField(serializers.CharField):
  78. def get_attribute(self, obj):
  79. return obj
  80. def to_representation(self, obj):
  81. if '.' in self.source:
  82. k = self.source.split('.')
  83. has_r = hasattr(obj, k[0])
  84. if has_r:
  85. r = getattr(obj, k[0])
  86. if hasattr(r, k[1]):
  87. val = getattr(r, k[1])
  88. else:
  89. val = self.get_attribute(obj)
  90. else:
  91. return ''
  92. else:
  93. val = getattr(obj, self.source)
  94. return Formater.formatPriceShow(val)
  95. class CountShowCharField(serializers.CharField):
  96. def get_attribute(self, obj):
  97. return obj
  98. def to_representation(self, obj):
  99. if '.' in self.source:
  100. k = self.source.split('.')
  101. has_r = hasattr(obj, k[0])
  102. if has_r:
  103. r = getattr(obj, k[0])
  104. if hasattr(r, k[1]):
  105. val = getattr(r, k[1])
  106. else:
  107. val = self.get_attribute(obj)
  108. else:
  109. return ''
  110. else:
  111. val = getattr(obj, self.source)
  112. return Formater.formatCountShow(val)