day36 crm开发之公户管理数据权限过滤及跟进记录功能

公私户数据权限展示

由于是公共用户,李四是私户,不应该显示在列表中

start组件中StarkHandler类新增函数,将查询语句单独封装

    def get_queryset(self, request, *args, **kwargs):
        return self.model_class.objects


changelist_view函数中获取组合条件查询sql修改为

        prev_queryset = self.get_queryset(request, *args, **kwargs)
        queryset = prev_queryset.filter(conn).filter(**search_group_condition).order_by(*order_list)


web应用公户功能调用方式

# -*- encoding: utf-8 -*-
"""
@File    : public_customer.py
@Time    : 2022/3/6 17:06
@Author  : simon
@Email   : 294168604@qq.com
@Software: PyCharm
"""
from stark.service.v1 import StarkHandler


class PublicCustomerHandler(StarkHandler):
    list_display = ['name', ]

    def get_queryset(self, request, *args, **kwargs):
        return self.model_class.objects.filter(consultant__isnull=True)

效果图

跟进记录功能实现

web应用公户功能模块修改代码

# -*- encoding: utf-8 -*-
"""
@File    : public_customer.py
@Time    : 2022/3/6 17:06
@Author  : simon
@Email   : 294168604@qq.com
@Software: PyCharm
"""
from django.utils.safestring import mark_safe
from django.conf.urls import url
from django.shortcuts import HttpResponse, render
from stark.service.v1 import StarkHandler, get_choice_text, get_m2m_text, StarkModelForm
from web import models


class PublicCustomerModelForm(StarkModelForm):
    class Meta:
        model = models.Customer
        exclude = ['consultant', ]


class PublicCustomerHandler(StarkHandler):

    def display_record(self, obj=None, is_header=None):
        if is_header:
            return '跟进记录'
        record_url = self.reverse_commons_url(self.get_url_name('record_view'), pk=obj.pk)
        return mark_safe('<a href="%s">查看跟进</a>' % record_url)

    list_display = ['name', 'qq', get_m2m_text('咨询课程', 'course'), display_record, get_choice_text('状态', 'status')]

    def get_queryset(self, request, *args, **kwargs):
        return self.model_class.objects.filter(consultant__isnull=True)

    model_form_class = PublicCustomerModelForm

    def extra_urls(self):
        patterns = [
            url(r'^record/(?P<pk>\d+)/$', self.wrapper(self.record_view),
                name=self.get_url_name('record_view')),
        ]
        return patterns

    def record_view(self, request, pk):
        """
        查看跟进记录的视图
        :param request:
        :param pk:
        :return:
        """
        record_list = models.ConsultRecord.objects.filter(customer_id=pk)
        return render(request, 'record_view.html', {'record_list': record_list})

新增web应用模板
web/templates/record_view.html

{% extends 'layout.html' %}


{% block content %}
    <div class="luffy-container">
        {% for row in record_list %}
            <div class="panel panel-default">
                <div class="panel-body">
                    {{ row.note }}
                    <div style="margin: 5px;">
                        <div style="display: inline-block;"><i class="fa fa-user-o" aria-hidden="true"></i>{{ row.consultant.name }}</div>
                        <div style="display: inline-block;"><i class="fa fa-clock-o" aria-hidden="true"></i>{{ row.date }}</div>
                    </div>
                </div>
            </div>
        {% endfor %}
    </div>
{% endblock %}

效果展示

posted @ 2022-03-06 17:32  simon_T  阅读(118)  评论(0编辑  收藏  举报