|  | # -*- 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),
        }
 |