30 lines
858 B
Python
30 lines
858 B
Python
import re
|
||
from datetime import datetime
|
||
from decimal import Decimal, ROUND_HALF_UP
|
||
|
||
from rest_framework.exceptions import ValidationError
|
||
from django.utils import timezone
|
||
|
||
def validate_mobile(value):
|
||
if value and not re.findall(r"1\d{10}", value):
|
||
raise ValidationError('手机格式不正确')
|
||
|
||
|
||
def validate_amount(value):
|
||
if value is None:
|
||
raise ValidationError('金额不能为空')
|
||
if value and value < 0:
|
||
raise ValidationError('金额不能为负')
|
||
|
||
|
||
def to_cent(value):
|
||
if value is None:
|
||
value = 0
|
||
return Decimal(value).quantize(Decimal('.01'), rounding=ROUND_HALF_UP)
|
||
|
||
# 定义一个小工具:从时间戳转换为 aware datetime(如果时间戳有效)
|
||
def ts_to_aware(ts):
|
||
if ts:
|
||
naive_dt = datetime.fromtimestamp(ts)
|
||
return timezone.make_aware(naive_dt)
|
||
return None |