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