Pārlūkot izejas kodu

Merge branch 'master' of http://git.zzliaoyuan.com:4000/wushaodong/decorate

lijiangwei 4 gadi atpakaļ
vecāks
revīzija
f809cfc84c

+ 2 - 2
apps/account/views.py

@@ -6,7 +6,7 @@ from rest_framework.decorators import action
 from django.db import transaction
 from rest_framework.views import APIView
 from rest_framework.serializers import ValidationError
-from utils.permission import permission_required, isLogin
+from utils.permission import permission_required, isLogin, check_permission
 from django.contrib.auth.models import Group, Permission
 from rest_framework_jwt.views import ObtainJSONWebToken,VerifyJSONWebToken,RefreshJSONWebToken
 from utils import response_error, response_ok
@@ -83,9 +83,9 @@ class EmployeeViewSet(CustomModelViewSet):
                               u'删除账号[%s],id=%d' % (instance.username, instance.id))
         super(EmployeeViewSet, self).perform_destroy(instance)
 
-    # @permission_required('account.check_user')
     @action(methods=['post'], detail=True)
     def join(self, request, pk):
+        check_permission(request, 'account.check_user')
         try:
             with transaction.atomic():
                 instance = self.get_object()

+ 37 - 3
apps/customer/models.py

@@ -49,9 +49,10 @@ class ReportCustomer(models.Model):
 
 
 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',
+    potential_level = models.ForeignKey(Option, verbose_name=u'潜客级别', related_name='potential_level', null=True,
                                         on_delete=models.PROTECT)
     stage_progress = models.ForeignKey(Option, verbose_name=u'阶段进度', related_name='stage_progress',
                                         on_delete=models.PROTECT)
@@ -70,6 +71,39 @@ class NewCustomer(models.Model):
         default_permissions = ()
         permissions = [
             ('view_new_customer', u'查看'),
-            ('update_new_customer', u'更新'),
+            ('update_new_customer', u'跟踪'),
             ('delete_new_customer', u'删除'),
-        ]
+        ]
+
+class Review(models.Model):
+    DEFAULT = 0
+    KEEPUP = 1
+    ABANDON = 2
+    CHECK_STATUS_CHOICES = (
+        (DEFAULT, u'未审核'),
+        (KEEPUP, u'继续跟踪'),
+        (ABANDON, u'放弃'),
+    )
+
+    customer = models.ForeignKey(NewCustomer, related_name='review_ref_customer', verbose_name=u"客户", blank=True,
+                                 null=True, on_delete=models.PROTECT)
+    description = models.CharField(max_length=5000, verbose_name=u"回访情况")
+    action = models.CharField(max_length=100, verbose_name=u"操作")
+    instruction = models.CharField(max_length=200, verbose_name=u"申请支援或放弃", blank=True, null=True)
+    is_giveup = models.BooleanField(verbose_name=u"请求放弃", default=False)
+    store = models.ForeignKey(Store, verbose_name=u'门店', editable=False, on_delete=models.PROTECT)
+    create_user = models.ForeignKey(settings.AUTH_USER_MODEL, editable=False, related_name='review_ref_user', verbose_name=u"创建人",
+                                    on_delete=models.PROTECT)
+    create_time = models.DateTimeField(verbose_name=u"添加时间", default=timezone.now, editable=False)
+    check_status = models.PositiveSmallIntegerField(choices=CHECK_STATUS_CHOICES, verbose_name=u"审核状态", default=DEFAULT)
+    check_comment = models.CharField(max_length=200, verbose_name=u"审核批示", blank=True, null=True)
+    check_user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='review_ref_checkuser', verbose_name=u"审核人",
+                                   editable=False, blank=True, null=True, on_delete=models.PROTECT)
+    check_time = models.DateTimeField(verbose_name=u"审核时间", editable=False, blank=True, null=True)
+
+    class Meta:
+        db_table = "customer_review"
+        verbose_name = u"客户跟踪记录"
+        ordering = ('-id',)
+        permissions = (
+        )

+ 2 - 3
apps/customer/serializers.py

@@ -27,7 +27,7 @@ class ReportCustomerSerializer(serializers.ModelSerializer):
         store = self.context['request'].user.store
         if not store:
             raise CustomError('当前账号未绑定门店,禁止报备客户!')
-
+        validated_data['store'] = store
         instance = super(ReportCustomerSerializer, self).create(validated_data)
         projects = self.initial_data['project']
         if projects:
@@ -67,13 +67,12 @@ class NewCustomerSerializer(serializers.ModelSerializer):
     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)
-    track_user = serializers.CharField(source='track_user.name', read_only=True)
 
     class Meta:
         model = NewCustomer
         fields = (
             'id', 'name', 'tel', 'village', 'address', 'source_text', 'project_text', 'potential_level_text',
-            'stage_progress_text','track_user', 'end_time', 'next_time','create_time','create_user'
+            'stage_progress_text', 'end_time', 'next_time','create_time', 'create_user_text', 'track_user_text',
         )
 
     def create(self, validated_data):

+ 2 - 2
apps/customer/views.py

@@ -3,7 +3,7 @@ from rest_framework.views import APIView
 from django.db.models import Q
 from django.utils import timezone
 from rest_framework.decorators import action
-from utils.permission import isLogin, permission_required
+from utils.permission import isLogin, permission_required, check_permission
 from utils.custom_modelviewset import CustomModelViewSet
 from utils import response_ok, response_error
 from utils.exceptions import CustomError
@@ -51,9 +51,9 @@ class ReportCustomerViewSet(CustomModelViewSet):
                               u'删除客户报备[%s],id=%d' % (instance.name, instance.id))
         super(ReportCustomerViewSet, self).perform_destroy(instance)
 
-    # @permission_required('customer.check_report_customer')
     @action(methods=['post'], detail=True)
     def dispatch_customer(self, request, pk):
+        check_permission(request, 'customer.check_report_customer')
         # 审核
         # TODO 创建潜客跟踪表
         user = request.POST.get('user')

+ 1 - 1
uis/views/new_customer/edit.html

@@ -41,7 +41,7 @@
                         <div>
                             <label class="layui-form-label"><font color='red' size="4">*</font>性别:</label>
                             <div class="layui-input-block">
-                                <input type="radio" name="gender" value="2" title="男">
+                                <input type="radio" name="gender" value="2" title="男" checked>
                                 <input type="radio" name="gender" value="1" title="女">
                             </div>
                         </div>

+ 14 - 0
utils/permission.py

@@ -11,6 +11,20 @@ class isLogin(permissions.BasePermission):
             return False
         return True
 
+def check_permission(request, perm):
+    if not request.user or not request.user.is_authenticated:
+        raise CustomError(u"身份认证失败,请重新登录!")
+    from django.contrib.auth.models import Permission
+    ps = perm.split('.')
+    if request.user.has_perm(perm):
+        return True
+    else:
+        try:
+            p = Permission.objects.get(codename=ps[1], content_type__app_label=ps[0])
+        except:
+            raise CustomError(u"权限配置错误!")
+        raise CustomError(u"您没有[%s--%s]权限,无法执行该操作,请联系管理员分配权限!" % (p.content_type.name, p.name))
+
 decorator_with_arguments = lambda decorator: lambda *args, **kwargs: lambda func: decorator(func, *args, **kwargs)
 
 @decorator_with_arguments