|
# -*- coding: utf-8 -*-
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django_models_ext import BaseModelMixin
from jsonfield import JSONField
from TimeConvert import TimeConvert as tc
from mch.models import ModelInfo
class MaintenacePointInfo(BaseModelMixin):
name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'名称')
province = models.CharField(_(u'province'), max_length=255, blank=True, null=True, help_text=u'省份')
location = models.CharField(_(u'location'), max_length=255, blank=True, null=True, help_text=u'地址')
postcode = models.CharField(_(u'postcode'), max_length=255, blank=True, null=True, help_text=u'邮政编码')
class Meta:
verbose_name = _(u'维修点信息')
verbose_name_plural = _(u'维修点信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'id': self.pk,
'name': self.name,
'province': self.province,
'location': self.location,
'postcode': self.postcode,
}
class ExpressCompanyInfo(BaseModelMixin):
name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'名称')
com = models.CharField(_(u'com'), max_length=255, blank=True, null=True, help_text=u'编码')
position = models.IntegerField(_(u'position'), default=999, help_text=u'排序')
class Meta:
verbose_name = _(u'快递公司信息')
verbose_name_plural = _(u'快递公司信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
return {
'id': self.pk,
'name': self.name,
'com': self.com,
}
class MaintenaceInfo(BaseModelMixin):
TRACKING_TO_DESPATCH = u'寄出运送中'
TRACKING_SIGNED_FIXING = u'已签收修理中'
TRACKING_FIXED_BACK = u'已修复寄回'
TRACKING_BACK_SIGNED = u'寄回签收'
user_id = models.CharField(_(u'user_id'), max_length=32, blank=True, null=True, help_text=u'用户唯一标识', db_index=True)
name = models.CharField(_(u'name'), max_length=255, blank=True, null=True, help_text=u'姓名')
phone = models.CharField(_(u'phone'), max_length=11, blank=True, null=True, help_text=u'电话')
address = models.CharField(_(u'address'), max_length=255, blank=True, null=True, help_text=u'地址')
log_id = models.CharField(_(u'log_id'), max_length=255, blank=True, null=True, help_text=u'用户提交列表的唯一标识')
model_id = models.CharField(_(u'model_id'), max_length=32, blank=True, null=True, help_text=u'型号唯一标识', db_index=True)
sn = models.CharField(_(u'sn'), max_length=32, blank=True, null=True, help_text=u'序列号', db_index=True)
desc = models.TextField(_(u'desc'), blank=True, null=True, help_text=u'故障描述')
point_id = models.CharField(_(u'point_id'), max_length=32, blank=True, null=True, help_text=u'维修点唯一标识', db_index=True)
point_name = models.CharField(_(u'point_name'), max_length=255, blank=True, null=True, help_text=u'维修点名称')
express_name = models.CharField(_(u'express_name'), max_length=255, blank=True, null=True, help_text=u'快递公司')
express_com = models.CharField(_(u'express_com'), max_length=255, blank=True, null=True, help_text=u'快递编码')
tracking_number = models.CharField(_(u'tracking_number'), max_length=255, blank=True, null=True, help_text=u'快递单号')
tracking_info = JSONField(_(u'tracking_info'), blank=True, null=True, default={}, help_text=u'快递信息')
tracking_signed = models.BooleanField(_(u'tracking_signed'), default=False, help_text=u'快递是否已签收')
back_express_name = models.CharField(_(u'back_express_name'), max_length=255, blank=True, null=True, help_text=u'寄回快递公司')
back_express_com = models.CharField(_(u'back_express_com'), max_length=255, blank=True, null=True, help_text=u'寄回快递编码')
back_tracking_number = models.CharField(_(u'back_tracking_number'), max_length=255, blank=True, null=True, help_text=u'寄回快递单号')
back_tracking_info = JSONField(_(u'back_tracking_info'), blank=True, null=True, default={}, help_text=u'寄回快递信息')
back_tracking_signed = models.BooleanField(_(u'back_tracking_signed'), default=False, help_text=u'寄回快递是否已签收')
# 寄出运送中、已签收修理中、已修复寄回、寄回签收
maintenance_status = models.CharField(_(u'maintenance_status'), max_length=8, default=TRACKING_TO_DESPATCH, help_text=u'维修状态')
maintenance_status_at = JSONField(_(u'maintenance_status_at'), blank=True, null=True, default={}, help_text=u'维修状态变更时间')
class Meta:
verbose_name = _(u'维修信息')
verbose_name_plural = _(u'维修信息')
def __unicode__(self):
return '%d' % self.pk
@property
def data(self):
try:
model = ModelInfo.objects.get(model_id=self.model_id, status=True)
except ModelInfo.DoesNotExist:
model = None
return {
'maintenance_id': self.pk,
'user_id': self.user_id,
'name': self.name,
'phone': self.phone,
'address': self.address,
'model_id': self.model_id,
'model_name': model.model_name if model else '',
'model_full_name': model.model_full_name if model else '',
'model_image_url': model.image2_url,
'log_id': self.log_id,
'sn': self.sn,
'desc': self.desc,
'point_id': self.point_id,
'point_name': self.point_name,
'express_name': self.express_name,
'express_com': self.express_com,
'tracking_number': self.tracking_number,
'tracking_info': self.tracking_info,
'tracking_signed': self.tracking_signed,
'back_express_name': self.back_express_name,
'back_express_com': self.back_express_com,
'back_tracking_number': self.back_tracking_number,
'back_tracking_info': self.back_tracking_info,
'back_tracking_signed': self.back_tracking_signed,
'maintenance_status': self.maintenance_status,
'maintenance_status_at': {k: tc.local_string(utc_dt=tc.string_to_utc_datetime(v, format='%Y-%m-%dT%H:%M:%S.%fZ')) for k, v in self.maintenance_status_at.items()},
'created_at': tc.local_string(utc_dt=self.created_at),
'updated_at': tc.local_string(utc_dt=self.updated_at),
}
|