Пример #1
0
def sub_account(request):
    service_obj = request.user.service()
    qty_buytotal = service_obj.qty_buytotal
    if service_obj.is_share_flag in ('2', '3', '4'):
        raise Http404

    if request.method == "POST":
        user_id = request.POST.get('id', '0')
        status = request.POST.get('status', '0')
        obj = get_customer_child_obj(request, int(user_id))
        if int(status) == 1:
            # 启用
            obj.disabled = '0'
            obj.save()

            sub_service_obj = obj.service()
            sub_service_obj.disabled = '0'
            sub_service_obj.save()
            messages.add_message(request, messages.SUCCESS, _('启用子账户成功'))
        if int(status) == 2:
            # 禁用
            obj.disabled = '1'
            obj.save()

            sub_service_obj = obj.service()
            sub_service_obj.disabled = '1'
            sub_service_obj.save()
            messages.add_message(request, messages.SUCCESS, _('禁用子账户成功'))

        if int(status) == 7:
            # 禁止导出跟踪地址
            sub_service_obj = obj.service()
            sub_service_obj.is_track_export = False
            sub_service_obj.save()
            messages.add_message(request, messages.SUCCESS, _('禁止导出跟踪地址设置成功'))
        if int(status) == 8:
            # 允许导出跟踪地址
            sub_service_obj = obj.service()
            sub_service_obj.is_track_export = True
            sub_service_obj.save()
            messages.add_message(request, messages.SUCCESS, _('允许导出跟踪地址设置成功'))
        return HttpResponseRedirect(reverse('sub_account'))

    limit_count = int(math.floor(float(qty_buytotal) / float(100000)))
    limit_count = 50 if limit_count > 50 else limit_count
    lists = Customer.objects.filter(parent_id=request.user.id).order_by('id')
    subloging_auth = hashlib.md5(
        '%s-%s' % (settings.WEB_API_AUTH_KEY,
                   datetime.datetime.now().strftime("%Y%m%d"))).hexdigest()
    return render(request,
                  template_name='setting/sub_account.html',
                  context={
                      'lists': lists,
                      'limit_count': limit_count,
                      'subloging_auth': subloging_auth,
                  })
Пример #2
0
def get_realcustomer_and_obj(request, user_id):
    subobj = None
    customer_id = request.user.id
    if user_id:
        service_obj = request.user.service()
        if service_obj.is_share_flag in ('2', '3', '4'):
            raise Http404
        customer_id = user_id
        subobj = get_customer_child_obj(request, user_id)
    return customer_id, subobj
Пример #3
0
def sub_account_reset(request, user_id):
    obj = get_customer_child_obj(request, user_id)
    if request.method == "POST":
        new_password2 = request.POST.get('new_password2', None)
        password = md5_crypt.hash(new_password2)
        obj.password = password
        obj.save()
        messages.add_message(request, messages.SUCCESS, _(u'密码修改成功'))
        return HttpResponseRedirect(reverse('sub_account'))

    return render(request,
                  template_name='setting/sub_account_reset.html',
                  context={
                      'user_obj': obj,
                      'user_id': user_id,
                  })
Пример #4
0
def sub_account_login(request):
    from django.contrib.auth.models import update_last_login
    from django.contrib.auth.views import logout, auth_login
    from django.contrib.auth import authenticate
    from django.contrib.auth.signals import user_logged_in

    parent_user_id = request.user.id
    client_ip = get_client_ip(request)
    agent = request.META.get('HTTP_USER_AGENT', None)
    ip_search = IpSearch()
    ip_info = ip_search.Find(client_ip)
    area, title = split_ip_to_area_title(ip_info)
    customer_id = request.POST.get('subloging_customer_id', '')
    auth = request.POST.get('subloging_auth', '')
    obj = get_customer_child_obj(request, customer_id)

    if auth == hashlib.md5(
            '%s-%s' %
        (settings.WEB_API_AUTH_KEY,
         datetime.datetime.now().strftime("%Y%m%d"))).hexdigest():
        logout(request)
        CoreLog.objects.create(
            user_id=parent_user_id,
            user_type='users',
            target_id=customer_id,
            target_name=u'{0} - {0}'.format(obj.username),
            action='user_login',
            ip=client_ip,
            desc=u'登录IP:{}<br>登录地区:{}<br>浏览器信息:{}'.format(
                client_ip, title, agent),
        )
        user = authenticate(username=obj.username,
                            password='',
                            t_password=obj.password)
        user_logged_in.disconnect(update_last_login)
        auth_login(request, user)
        user_logged_in.connect(update_last_login)
        return HttpResponseRedirect(reverse('home'))
    raise Http404
Пример #5
0
def sub_account_setcus(request, user_id):
    obj = get_customer_child_obj(request, user_id)
    if request.method == "POST":
        data = request.POST
        fullname = data.get('fullname', None)
        mobile = data.get('mobile', None)
        im = data.get('im', None)

        subM, _created = SubAccoutManager.objects.get_or_create(
            customer_id=user_id)
        subM.fullname = fullname
        subM.mobile = mobile
        subM.im = im
        subM.save()
        msg = _(u'设置客服成功')
        messages.add_message(request, messages.SUCCESS, msg)
        return HttpResponseRedirect(reverse('sub_account'))
    return render(request,
                  template_name='setting/sub_account_setcus.html',
                  context={
                      'user_id': user_id,
                      'user_obj': obj,
                  })
Пример #6
0
def sub_account_perm(request, user_id):
    obj = get_customer_child_obj(request, user_id)
    sub_service_obj = obj.service()
    if request.method == "POST":
        is_address = request.POST.get('is_address', '')
        is_template = request.POST.get('is_template', '')
        is_task = request.POST.get('is_task', '')
        is_address = True if is_address.lower() in ('true', 'on') else False
        is_template = True if is_template.lower() in ('true', 'on') else False
        is_task = True if is_task.lower() in ('true', 'on') else False

        sub_service_obj.is_address = is_address
        sub_service_obj.is_template = is_template
        sub_service_obj.is_task = is_task
        sub_service_obj.save()

        messages.add_message(request, messages.SUCCESS, _(u'修改子账户权限成功'))
        return HttpResponseRedirect(reverse('sub_account'))
    return render(request,
                  template_name='setting/sub_account_perm.html',
                  context={
                      'user_id': user_id,
                      'sub_service_obj': sub_service_obj,
                  })
Пример #7
0
def sub_account_reback(request, user_id):
    obj = get_customer_child_obj(request, user_id)
    sub_service_obj = obj.service()
    if request.method == "POST":
        if sub_service_obj.is_share_flag == '2':
            service_obj = request.user.service()
            share_type = request.POST.get('share_type', '')
            qty_count = sub_service_obj.qty_count
            if qty_count <= 0:
                messages.add_message(request, messages.ERROR,
                                     _(u'收回群发量失败,子账户已经没有群发量'))
                return HttpResponseRedirect(reverse('sub_account'))

            if share_type == '1':  # 全部共享
                limit_qty = qty_count
            else:
                limit_qty = int(request.POST.get('limit_qty', '0'))
                if limit_qty <= 0:
                    limit_qty = 0
                if limit_qty > qty_count:
                    limit_qty = qty_count
            if limit_qty <= 0:
                messages.add_message(request, messages.ERROR,
                                     _(u'收回群发量失败,群发量不能填写小于等于0'))
                return HttpResponseRedirect(reverse('sub_account'))

            service_obj.qty_count = F('qty_count') + limit_qty
            service_obj.qty_valid = F('qty_valid') + limit_qty
            # 服务状态改变
            if service_obj.disabled == "1":
                service_obj.disabled = '0'
            service_obj.save()

            sub_service_obj.qty_count = F('qty_count') - limit_qty
            sub_service_obj.qty_valid = F('qty_valid') - limit_qty
            sub_service_obj.save()

            client_ip = get_client_ip(request)
            CoreLogList = [
                CoreLog(user=request.user,
                        user_type='users',
                        target=request.user,
                        target_name=u'{0} - {0}'.format(request.user.username),
                        action='recharge_subuser',
                        ip=client_ip,
                        desc=u'+{}(母账户收回子账户({})群发量)'.format(
                            limit_qty, obj.username)),
                CoreLog(user=request.user,
                        user_type='users',
                        target=obj,
                        target_name=u'{0} - {0}'.format(request.user.username),
                        action='recharge_subuser',
                        ip=client_ip,
                        desc=u'-{}(子账户({})被母账户收回群发量)'.format(
                            limit_qty, obj.username)),
            ]
            CoreLog.objects.bulk_create(CoreLogList)
            messages.add_message(request, messages.SUCCESS, (u'收回群发量成功'))
        return HttpResponseRedirect(reverse('sub_account'))
    return render(request,
                  template_name='setting/sub_account_reback.html',
                  context={
                      'user_id': user_id,
                      'user_obj': obj,
                      'sub_service_obj': sub_service_obj,
                  })
Пример #8
0
def sub_account_modify(request, user_id):
    obj = get_customer_child_obj(request, user_id)
    sub_service_obj = obj.service()
    if request.method == "POST":
        if sub_service_obj.is_share_flag == '2':
            service_obj = request.user.service()
            qty_count = int(request.POST.get('qty_count', '0'))
            if qty_count >= int(service_obj.qty_count):
                messages.add_message(request, messages.ERROR,
                                     _(u'分配的群发量已大于等于剩余群发量,分配群发量失败!'))
                return HttpResponseRedirect(reverse('sub_account'))

            service_obj.qty_count = F('qty_count') - qty_count
            service_obj.qty_valid = F('qty_valid') - qty_count
            # service_obj.qty_buytotal = F('qty_buytotal') - qty_count
            service_obj.save()

            sub_service_obj.qty_count = F('qty_count') + qty_count
            sub_service_obj.qty_valid = F('qty_valid') + qty_count
            # sub_service_obj.qty_buytotal = F('qty_buytotal') + qty_count
            # 服务状态改变
            if sub_service_obj.disabled == "1":
                sub_service_obj.disabled = '0'
            sub_service_obj.save()

            client_ip = get_client_ip(request)
            CoreLogList = [
                CoreLog(user=request.user,
                        user_type='users',
                        target=request.user,
                        target_name=u'{0} - {0}'.format(request.user.username),
                        action='recharge_subuser',
                        ip=client_ip,
                        desc=u'-{}(分配群发量)'.format(qty_count)),
                CoreLog(user=request.user,
                        user_type='users',
                        target=obj,
                        target_name=u'{0} - {0}'.format(request.user.username),
                        action='recharge_subuser',
                        ip=client_ip,
                        desc=u'+{}(分配群发量)'.format(qty_count)),
            ]
            CoreLog.objects.bulk_create(CoreLogList)
            msg = _(u'分配群发量成功')
        elif sub_service_obj.is_share_flag in ('3', '4'):
            share_type = request.POST.get('share_type', '')
            if share_type == '1':  # 全部共享
                limit_qty = 0
                is_share_flag = '4'
            else:
                is_share_flag = '3'
                limit_qty = int(request.POST.get('limit_qty', '0'))
            sub_service_obj.is_share_flag = is_share_flag
            sub_service_obj.limit_qty = limit_qty
            # 服务状态改变
            if sub_service_obj.disabled == "1":
                sub_service_obj.disabled = '0'
            sub_service_obj.save()
            msg = _(u'共享群发量成功')
        messages.add_message(request, messages.SUCCESS, msg)
        return HttpResponseRedirect(reverse('sub_account'))
    return render(request,
                  template_name='setting/sub_account_modify.html',
                  context={
                      'user_id': user_id,
                      'user_obj': obj,
                      'sub_service_obj': sub_service_obj,
                  })
Пример #9
0
def sub_account_share(request, user_id):
    obj = get_customer_child_obj(request, user_id)
    if request.method == "POST":
        send_domain_id = request.POST.get('send_domain', '')
        mailbox_ids = request.POST.getlist('mailbox_ids[]', '')
        mailbox_ids = map(int, mailbox_ids)

        domain_obj = CustomerDomain.objects.filter(
            id=send_domain_id, customer=request.user).first()
        if not domain_obj:
            messages.add_message(request, messages.ERROR, _(u'共享发件人失败'))
            return HttpResponseRedirect(reverse('sub_account'))

        mailbox_lists = CustomerMailbox.objects.filter(
            customer=request.user,
            domain=domain_obj.domain,
            disabled='0',
            id__in=mailbox_ids)
        if not mailbox_lists:
            messages.add_message(request, messages.ERROR, _(u'共享发件人失败'))
            return HttpResponseRedirect(reverse('sub_account'))

        domain_ctype = ContentType.objects.get_for_model(domain_obj)
        box_ctype = ContentType.objects.get_for_model(mailbox_lists[0])
        bulk_lists = []
        if not CustomerDomainMailboxRel.objects.filter(
                customer_id=user_id,
                content_type=domain_ctype,
                object_id=send_domain_id).exists():
            bulk_lists.append(
                CustomerDomainMailboxRel(customer_id=user_id,
                                         content_type=domain_ctype,
                                         object_id=send_domain_id))
        for box_obj in mailbox_lists:
            box_id = box_obj.id
            if not CustomerDomainMailboxRel.objects.filter(
                    customer_id=user_id, content_type=box_ctype,
                    object_id=box_id).exists():
                bulk_lists.append(
                    CustomerDomainMailboxRel(customer_id=user_id,
                                             content_type=box_ctype,
                                             object_id=box_id))
        if bulk_lists:
            CustomerDomainMailboxRel.objects.bulk_create(bulk_lists)

        messages.add_message(request, messages.SUCCESS, _(u'共享发件人成功'))
        return HttpResponseRedirect(reverse('sub_account'))
    # 获取域名
    domain_list = CustomerMailbox.objects.filter(
        customer=request.user, disabled='0').values_list('domain',
                                                         flat=True).distinct()
    domain_objs = CustomerDomain.objects.filter(status='Y',
                                                customer=request.user,
                                                domain__in=list(domain_list))
    return render(request,
                  template_name='setting/sub_account_share.html',
                  context={
                      'user_id': user_id,
                      'user_obj': obj,
                      'domain_objs': domain_objs,
                  })