# -*- coding: utf-8 -*- from __future__ import division from django.conf import settings from django.contrib.auth.hashers import check_password, make_password from django_logit import logit from django_response import response from paginator import pagination from pywe_miniapp import get_phone_number from pywe_storage import RedisStorage from TimeConvert import TimeConvert as tc from account.models import UserInfo from mch.models import (AdministratorInfo, BrandInfo, ConsumeInfoSubmitLogInfo, DistributorInfo, LatestAppInfo, ModelInfo, OperatorInfo) from statistic.models import (ConsumeDistributorSaleStatisticInfo, ConsumeModelSaleStatisticInfo, ConsumeProvinceSaleStatisticInfo, ConsumeSaleStatisticInfo) from utils.error.errno_utils import (AdministratorStatusCode, OperatorStatusCode, ProductBrandStatusCode, ProductDistributorStatusCode, ProductModelStatusCode, SaleclerkStatusCode, UserStatusCode) from utils.redis.connect import r WECHAT = settings.WECHAT @logit def operator_add(request): name = request.POST.get('name', '') phone = request.POST.get('phone', '') password = request.POST.get('password', '') admin_id = request.session.get('admin_id') try: administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) except AdministratorInfo.DoesNotExist: return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) try: operator = OperatorInfo.objects.get(brand_id=administrator.brand_id, phone=phone, user_status=OperatorInfo.ACTIVATED, status=True) except OperatorInfo.DoesNotExist: operator = None if operator: return response(OperatorStatusCode.OPERATOR_PHONE_ALREADY_EXISTS) encryption = make_password(password, settings.MAKE_PASSWORD_SALT, settings.MAKE_PASSWORD_HASHER) OperatorInfo.objects.create( brand_id=administrator.brand_id, name=name, phone=phone, encryption=encryption, ) return response(200, 'Operator Add Success', u'操作员添加成功') @logit def operator_delete(request): operator_id = request.POST.get('operator_id', '') admin_id = request.session.get('admin_id') try: administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) except AdministratorInfo.DoesNotExist: return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) try: operator = OperatorInfo.objects.get(brand_id=administrator.brand_id, operator_id=operator_id, status=True) except OperatorInfo.DoesNotExist: return response(OperatorStatusCode.OPERATOR_NOT_FOUND) if operator.user_status == OperatorStatusCode.OPERATOR_HAS_DISABLED: return response(OperatorStatusCode.OPERATOR_HAS_DISABLED) elif operator.user_status == OperatorStatusCode.OPERATOR_HAS_DELETED: return response(OperatorStatusCode.OPERATOR_HAS_DELETED) operator.user_status = OperatorInfo.DELETED operator.save() return response(200, 'Operator Delete Success', u'操作员删除成功') @logit def operator_update(request): operator_id = request.POST.get('operator_id', '') name = request.POST.get('name', '') password = request.POST.get('password', '') admin_id = request.session.get('admin_id') try: administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) except AdministratorInfo.DoesNotExist: return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) try: operator = OperatorInfo.objects.get(brand_id=administrator.brand_id, operator_id=operator_id, status=True) except OperatorInfo.DoesNotExist: return response(OperatorStatusCode.OPERATOR_NOT_FOUND) if operator.user_status == OperatorStatusCode.OPERATOR_HAS_DISABLED: return response(OperatorStatusCode.OPERATOR_HAS_DISABLED) elif operator.user_status == OperatorStatusCode.OPERATOR_HAS_DELETED: return response(OperatorStatusCode.OPERATOR_HAS_DELETED) if name: operator.name = name if password: operator.encryption = make_password(password, settings.MAKE_PASSWORD_SALT, settings.MAKE_PASSWORD_HASHER) operator.save() return response(200, 'Operator Update Success', u'操作员更新成功') @logit def operator_list(request): page = request.POST.get('page', 1) num = request.POST.get('num', 20) admin_id = request.session.get('admin_id') try: administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True) except AdministratorInfo.DoesNotExist: return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) optors = OperatorInfo.objects.filter(brand_id=administrator.brand_id, user_status=OperatorInfo.ACTIVATED, status=True) optors, left = pagination(optors, page, num) optors = [optor.data for optor in optors] return response(200, 'Get Operator List Success', u'获取操作员列表成功', { 'optors': optors, 'left': left, })