Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

wushaodong vor 4 Jahren
Ursprung
Commit
d98f0b8837
5 geänderte Dateien mit 89 neuen und 6 gelöschten Zeilen
  1. 10 1
      apps/customer/filters.py
  2. 27 0
      apps/customer/models.py
  3. 35 1
      apps/customer/serializers.py
  4. 2 1
      apps/customer/urls.py
  5. 15 3
      apps/customer/views.py

+ 10 - 1
apps/customer/filters.py

@@ -1,7 +1,7 @@
 # coding=utf-8
 import django_filters
 
-from .models import ReportCustomer
+from .models import ReportCustomer,NewCustomer
 
 class ReportCustomerFilter(django_filters.FilterSet):
     name = django_filters.CharFilter(field_name='name', lookup_expr='icontains')
@@ -9,4 +9,13 @@ class ReportCustomerFilter(django_filters.FilterSet):
 
     class Meta:
         model = ReportCustomer
+        fields = '__all__'
+
+
+class NewCustomerFilter(django_filters.FilterSet):
+    name = django_filters.CharFilter(field_name='report_customer__name', lookup_expr='icontains')
+    tel = django_filters.CharFilter(field_name='report_customer__tel', lookup_expr='icontains')
+
+    class Meta:
+        model = NewCustomer
         fields = '__all__'

+ 27 - 0
apps/customer/models.py

@@ -46,3 +46,30 @@ class ReportCustomer(models.Model):
             ('delete_report_customer', u'删除'),
             ('check_report_customer', u'审核'),
         ]
+
+
+class NewCustomer(models.Model):
+    report_customer = models.ForeignKey(ReportCustomer, verbose_name=u'报备客户信息', related_name='customer_source',
+                                        on_delete=models.PROTECT)
+    potential_level = models.ForeignKey(Option, verbose_name=u'潜客级别', related_name='potential_level',
+                                        on_delete=models.PROTECT)
+    stage_progress = models.ForeignKey(Option, verbose_name=u'阶段进度', related_name='stage_progress',
+                                        on_delete=models.PROTECT)
+    track_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'跟踪人', related_name='track_user',
+                                   editable=False, on_delete=models.PROTECT)
+    end_time = models.DateTimeField(verbose_name=u'最后跟踪时间', null=True)
+    next_time = models.DateTimeField(verbose_name=u'下次跟踪时间', null=True)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u'建档人', related_name='newcustomer_create_user',
+                                    editable=False, on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u'建档时间', auto_now_add=True, editable=False)
+
+    class Meta:
+        db_table = 'new_customer'
+        verbose_name = u'客户跟踪信息'
+        ordering = ['-id']
+        default_permissions = ()
+        permissions = [
+            ('view_new_customer', u'查看'),
+            ('update_new_customer', u'更新'),
+            ('delete_new_customer', u'删除'),
+        ]

+ 35 - 1
apps/customer/serializers.py

@@ -4,7 +4,7 @@ from rest_framework import serializers
 from apps.option.models import Option
 from utils.exceptions import CustomError
 from apps.option.serializers import OptionSerializer
-from .models import ReportCustomer
+from .models import ReportCustomer,NewCustomer
 
 class ReportCustomerSerializer(serializers.ModelSerializer):
     gender_text = serializers.CharField(source='get_gender_display', read_only=True)
@@ -51,3 +51,37 @@ class ReportCustomerSerializer(serializers.ModelSerializer):
             instance.project.add(project)
         instance = super(ReportCustomerSerializer, self).update(instance, validated_data)
         return instance
+
+class NewCustomerSerializer(serializers.ModelSerializer):
+    track_user_text = serializers.CharField(source='track_user.name', read_only=True)
+    create_user_text = serializers.CharField(source='create_user.name', read_only=True)
+    potential_level_text = serializers.CharField(source='potential_level.name', read_only=True)
+    stage_progress_text = serializers.CharField(source='stage_progress.name', read_only=True)
+    create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
+    end_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
+    next_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
+
+    name = serializers.CharField(source='report_customer.name', read_only=True)
+    tel = serializers.CharField(source='report_customer.tel', read_only=True)
+    village = serializers.CharField(source='report_customer.village', read_only=True)
+    address = serializers.CharField(source='report_customer.address', read_only=True)
+    source_text = serializers.CharField(source='report_customer.source.name', read_only=True)
+    project_text = serializers.CharField(source='report_customer.projects.name', read_only=True)
+
+    class Meta:
+        model = NewCustomer
+        fields = (
+            'id', 'name', 'tel', 'village', 'address', 'source_text', 'project_text', 'potential_level_text',
+            'stage_progress_text', 'end_time', 'next_time','create_time', 'create_user_text', 'track_user_text',
+        )
+
+    def create(self, validated_data):
+        validated_data['create_user'] = self.context['request'].user
+        instance = super(NewCustomerSerializer, self).create(validated_data)
+
+        return instance
+
+    def update(self, instance, validated_data):
+
+        instance = super(NewCustomerSerializer, self).update(instance, validated_data)
+        return instance

+ 2 - 1
apps/customer/urls.py

@@ -12,4 +12,5 @@ urlpatterns = [
 
 router = SimpleRouter()
 router.register(r'report_customer', ReportCustomerViewSet)
-urlpatterns += router.urls
+router.register(r'new_customer', NewCustomerViewSet)
+urlpatterns += router.urls

+ 15 - 3
apps/customer/views.py

@@ -10,9 +10,9 @@ from utils.exceptions import CustomError
 from apps.log.models import BizLog
 from apps.option.models import Option
 from apps.option.serializers import OptionComboboxSerializer
-from .models import ReportCustomer
-from .serializers import ReportCustomerSerializer
-from .filters import ReportCustomerFilter
+from .models import ReportCustomer,NewCustomer
+from .serializers import ReportCustomerSerializer,NewCustomerSerializer
+from .filters import ReportCustomerFilter,NewCustomerFilter
 from django.contrib.auth import get_user_model
 User = get_user_model()
 
@@ -73,6 +73,7 @@ class ReportCustomerViewSet(CustomModelViewSet):
             return response_error(str(e))
         return response_ok()
 
+
 class ReportCustomerDictView(APIView):
     permission_classes = [isLogin]
 
@@ -96,3 +97,14 @@ class UserDictView(APIView):
         users = User.objects.filter(store=store).values('id', 'name')
         users = [{'value': user['id'], 'lable': user['name']} for user in users]
         return response_ok(users)
+
+
+class NewCustomerViewSet(CustomModelViewSet):
+    permission_classes = []
+    queryset = NewCustomer.objects.filter()
+    serializer_class = NewCustomerSerializer
+
+    def filter_queryset(self, queryset):
+        queryset = queryset.filter()
+        f = NewCustomerFilter(self.request.GET, queryset=queryset)
+        return f.qs