:art: maintenance_status_at

huangqimin001 3 anni fa
parent
commit
80e841e7a9

+ 9 - 4
api/maintenance_views.py

@@ -6,6 +6,7 @@ from django.conf import settings
6 6
 from django_logit import logit
7 7
 from django_response import response
8 8
 from paginator import pagination
9
+from TimeConvert import TimeConvert as tc
9 10
 
10 11
 from maintenance.models import MaintenaceInfo
11 12
 from utils.admin_utils import is_admin, is_maintenanceman
@@ -26,7 +27,7 @@ def maintenance_add(request):
26 27
     point_name = request.POST.get('point_name', '')
27 28
     express_name = request.POST.get('express_name', '')
28 29
     tracking_number = request.POST.get('tracking_number', '')
29
-    maintenance_status = request.POST.get('maintenace_status', '')
30
+    maintenance_status = request.POST.get('maintenance_status', u'寄出运送中')
30 31
 
31 32
     maintenance = MaintenaceInfo.objects.create(
32 33
         user_id=user_id,
@@ -41,7 +42,8 @@ def maintenance_add(request):
41 42
         point_name=point_name,
42 43
         express_name=express_name,
43 44
         tracking_number=tracking_number,
44
-        maintenace_status=maintenance_status,
45
+        maintenance_status=maintenance_status,
46
+        maintenance_status_at={maintenance_status: tc.utc_datetime()}
45 47
     )
46 48
 
47 49
     return response(data={
@@ -86,7 +88,7 @@ def maintenance_update(request):
86 88
     tracking_number = request.POST.get('tracking_number', '')
87 89
     back_express_name = request.POST.get('back_express_name', '')
88 90
     back_tracking_number = request.POST.get('back_tracking_number', '')
89
-    maintenance_status = request.POST.get('maintenace_status', '')
91
+    maintenance_status = request.POST.get('maintenance_status', u'寄出运送中')
90 92
 
91 93
     try:
92 94
         maintenance = MaintenaceInfo.objects.get(id=maintenance_id, status=True)
@@ -119,7 +121,10 @@ def maintenance_update(request):
119 121
     if back_tracking_number:
120 122
         maintenance.back_tracking_number = back_tracking_number
121 123
     if maintenance_status:
122
-        maintenance.maintenace_status = maintenance_status
124
+        maintenance.maintenance_status = maintenance_status
125
+        maintenance_status_at = maintenance.maintenance_status_at
126
+        maintenance_status_at[maintenance_status] = tc.utc_datetime()
127
+        maintenance.maintenance_status_at = maintenance_status_at
123 128
     maintenance.save()
124 129
 
125 130
     return response()

+ 1 - 1
maintenance/admin.py

@@ -14,7 +14,7 @@ class ExpressCompanyInfoAdmin(admin.ModelAdmin):
14 14
 
15 15
 
16 16
 class MaintenanceInfoAdmin(admin.ModelAdmin):
17
-    list_display = ('user_id', 'name', 'phone', 'address', 'sn', 'desc', 'point_id', 'point_name', 'express_name', 'tracking_number', 'back_express_name', 'back_tracking_number', 'maintenace_status', 'status', 'created_at', 'updated_at')
17
+    list_display = ('user_id', 'name', 'phone', 'address', 'sn', 'desc', 'point_id', 'point_name', 'express_name', 'tracking_number', 'back_express_name', 'back_tracking_number', 'maintenance_status', 'status', 'created_at', 'updated_at')
18 18
 
19 19
 
20 20
 admin.site.register(MaintenacePointInfo, MaintenancePointInfoAdmin)

+ 30 - 0
maintenance/migrations/0006_auto_20210922_1518.py

@@ -0,0 +1,30 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.29 on 2021-09-22 07:18
3
+from __future__ import unicode_literals
4
+
5
+from django.db import migrations, models
6
+import jsonfield.fields
7
+
8
+
9
+class Migration(migrations.Migration):
10
+
11
+    dependencies = [
12
+        ('maintenance', '0005_auto_20210916_1827'),
13
+    ]
14
+
15
+    operations = [
16
+        migrations.RemoveField(
17
+            model_name='maintenaceinfo',
18
+            name='maintenace_status',
19
+        ),
20
+        migrations.AddField(
21
+            model_name='maintenaceinfo',
22
+            name='maintenance_status',
23
+            field=models.CharField(blank=True, help_text='\u7ef4\u4fee\u72b6\u6001', max_length=8, null=True, verbose_name='maintenance_status'),
24
+        ),
25
+        migrations.AddField(
26
+            model_name='maintenaceinfo',
27
+            name='maintenance_status_at',
28
+            field=jsonfield.fields.JSONField(default={}, help_text='\u7ef4\u4fee\u72b6\u6001\u53d8\u66f4\u65f6\u95f4', verbose_name='maintenance_status_at'),
29
+        ),
30
+    ]

+ 20 - 0
maintenance/migrations/0007_auto_20210922_1522.py

@@ -0,0 +1,20 @@
1
+# -*- coding: utf-8 -*-
2
+# Generated by Django 1.11.29 on 2021-09-22 07:22
3
+from __future__ import unicode_literals
4
+
5
+from django.db import migrations, models
6
+
7
+
8
+class Migration(migrations.Migration):
9
+
10
+    dependencies = [
11
+        ('maintenance', '0006_auto_20210922_1518'),
12
+    ]
13
+
14
+    operations = [
15
+        migrations.AlterField(
16
+            model_name='maintenaceinfo',
17
+            name='maintenance_status',
18
+            field=models.CharField(default='\u5bc4\u51fa\u8fd0\u9001\u4e2d', help_text='\u7ef4\u4fee\u72b6\u6001', max_length=8, verbose_name='maintenance_status'),
19
+        ),
20
+    ]

+ 12 - 5
maintenance/models.py

@@ -3,6 +3,7 @@
3 3
 from django.db import models
4 4
 from django.utils.translation import ugettext_lazy as _
5 5
 from django_models_ext import BaseModelMixin
6
+from jsonfield import JSONField
6 7
 from TimeConvert import TimeConvert as tc
7 8
 
8 9
 from mch.models import ModelInfo
@@ -71,7 +72,9 @@ class MaintenaceInfo(BaseModelMixin):
71 72
     back_express_name = models.CharField(_(u'back_express_name'), max_length=255, blank=True, null=True, help_text=u'寄回快递公司')
72 73
     back_tracking_number = models.CharField(_(u'back_tracking_number'), max_length=255, blank=True, null=True, help_text=u'寄回快递单号')
73 74
 
74
-    maintenace_status = models.CharField(_(u'maintenace_status'), max_length=8, blank=True, null=True, help_text=u'维修状态')
75
+    # 寄出运送中、已签收修理中、已修复寄回、寄回签收
76
+    maintenance_status = models.CharField(_(u'maintenance_status'), max_length=8, default=u'寄出运送中', help_text=u'维修状态')
77
+    maintenance_status_at = JSONField(_(u'maintenance_status_at'), default={}, help_text=u'维修状态变更时间')
75 78
 
76 79
     class Meta:
77 80
         verbose_name = _(u'维修信息')
@@ -82,7 +85,10 @@ class MaintenaceInfo(BaseModelMixin):
82 85
 
83 86
     @property
84 87
     def data(self):
85
-        model = ModelInfo.objects.get(model_id=self.model_id, status=True)
88
+        try:
89
+            model = ModelInfo.objects.get(model_id=self.model_id, status=True)
90
+        except ModelInfo.DoesNotExist:
91
+            model = None
86 92
         return {
87 93
             'maintenance_id': self.pk,
88 94
             'user_id': self.user_id,
@@ -90,8 +96,8 @@ class MaintenaceInfo(BaseModelMixin):
90 96
             'phone': self.phone,
91 97
             'address': self.address,
92 98
             'model_id': self.model_id,
93
-            'model_name': model.model_name,
94
-            'model_full_name': model.model_full_name,
99
+            'model_name': model.model_name if model else '',
100
+            'model_full_name': model.model_full_name if model else '',
95 101
             'log_id': self.log_id,
96 102
             'sn': self.sn,
97 103
             'desc': self.desc,
@@ -101,7 +107,8 @@ class MaintenaceInfo(BaseModelMixin):
101 107
             'tracking_number': self.tracking_number,
102 108
             'back_express_name': self.back_express_name,
103 109
             'back_tracking_number': self.back_tracking_number,
104
-            'maintenace_status': self.maintenace_status,
110
+            'maintenance_status': self.maintenance_status,
111
+            '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()},
105 112
             'created_at': tc.local_string(utc_dt=self.created_at),
106 113
             'updated_at': tc.local_string(utc_dt=self.updated_at),
107 114
         }