Exemple #1
0
class UserInfoConfig(v1.StarkConfig):
    def displsy_gender(self, obj=None, is_header=False):
        if is_header:
            return "性别"
        return obj.get_gender_display()

    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return "部门"
        return obj.depart.caption

    def display_roles(self, obj=None, is_header=False):
        result = []
        if is_header:
            return "角色"
        for i in obj.roles.all():
            result.append(i.title)
        return "__".join(result)

    # model_form_class = UserInfoForm

    list_display = [
        "id", "name", "email", displsy_gender, display_depart, display_roles
    ]

    comb_filter = [
        v1.FilterOption("gender", is_choice=True),
        v1.FilterOption("depart", condition={"id__gt": 1}),
        v1.FilterOption("roles", True)
    ]
    show_comb_filter = True
Exemple #2
0
class UserInfoStarkConfig(v1.StarkConfig):
    def display_gender(self, obj=None, is_header=None):
        if is_header:
            return "性别"
        return obj.get_gender_display()

    def display_depart(self, obj=None, is_header=None):
        if is_header:
            return "部门"
        return obj.depart.caption

    def display_roles(self, obj=None, is_header=None):
        if is_header:
            return "角色"
        role_list = []
        for x in obj.roles.all():
            role_list.append(x.title)
        return ",".join(role_list)

    list_display = [
        "id", "name", "email", display_gender, display_depart, display_roles
    ]

    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart', ),
        v1.FilterOption('roles', True),
    ]

    query_field = [
        "id__contains", "name__contains", "email__contains",
        "depart__caption__contains"
    ]
    show_actions = True
    show_query_field = True
Exemple #3
0
class UserInfoConfig(v1.StarkConfig):
    def get_gender(self, obj=None, is_header=None):
        if is_header:
            return "性别"
        return obj.get_gender_display()

    def get_depart(self, obj=None, is_header=None):
        if is_header:
            return '所属部门'
        return obj.depart.caption

    def get_roles(self, obj=None, is_header=None):
        if is_header:
            return '角色'
        html = []
        role_list = obj.roles.all()
        for role in role_list:
            ss = role.title
            html.append(ss)
        html = ','.join(html)
        return html

    list_display = ['id', 'name', 'email', get_gender, get_depart,
                    get_roles]  #这个显示页面有多对多和FK以及choices
    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart', ),
        v1.FilterOption('roles', True)
    ]
Exemple #4
0
class UserInfoConfig(v1.StarkConfig):

    show_add_btn = True

    show_search_form = True
    search_fields = ['name__contains', 'email__contains']
    edit_link = ['name']

    def display_gender(self, obj=None, is_header=False):
        if is_header:
            return '性别'

        # return obj.gender
        return obj.get_gender_display()

    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return '部门'
        return obj.depart.title

    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart', )
    ]
    list_display = [
        'name', 'username', 'email', display_gender, display_depart
    ]
Exemple #5
0
class ClassListConfig(v1.StarkConfig):

    def course_semester(self,obj=None,is_header=False):
        if is_header:
            return '班级'

        return "%s(%s期)" %(obj.course.name,obj.semester,)

    def num(self,obj=None,is_header=False):
        if is_header:
            return '人数'
        return 666
    def display_teachers(self, obj=None, is_header=False):
        if is_header:
            return '任课老师'

        html = []
        teacher_list = obj.teachers.all()
        for teacher in teacher_list:
            html.append(teacher.name)

        return ",".join(html)
    comb_filter = [
        v1.FilterOption('school', ),
        v1.FilterOption('course', )
    ]

    list_display = ['school','course','semester','price','start_date','graduate_date','memo',display_teachers,course_semester,num,'tutor']
    edit_link = [course_semester,]
Exemple #6
0
class UserInfoConfig(v1.StarkConfig):
    def display_gender(self, obj=None, is_header=False):
        if is_header:
            return '性别'

        # return obj.gender
        return obj.get_gender_display()

    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return '部门'
        return obj.depart.caption

    def display_roles(self, obj=None, is_header=False):
        if is_header:
            return '角色'

        html = []
        role_list = obj.roles.all()
        for role in role_list:
            html.append(role.title)

        return ",".join(html)

    list_display = [
        'id', 'name', 'email', display_gender, display_depart, display_roles
    ]

    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart', condition={'id__gt': 3}),
        v1.FilterOption('roles', True),
    ]
Exemple #7
0
class UserInfoConfig(v1.StarkConfig):
    def display_gender(self, obj=None, is_header=False):
        if is_header:
            return '性别'
        return obj.get_gender_display()  # 拿到字段

    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return '部门'
        return obj.depart.caption

    def display_roles(self, obj=None, is_header=False):
        if is_header:
            return '角色'
        html = []
        role_list = obj.roles.all()
        for role in role_list:
            html.append(role.title)
        return ','.join(html)

    list_display = [
        'id', 'name', 'email', display_depart, display_gender, display_roles
    ]

    # 组合搜索
    comb_filter = [  # 将配置项,改成对象的形式.  这个类里面是有两个参数的
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart'),
        v1.FilterOption('roles', True),
        # 这是三个option对象
    ]
Exemple #8
0
class ClassListConfig(v1.StarkConfig):
    def course_semester(self, obj=None, is_header=False):
        if is_header:
            return '班级与期数'
        return ('%s(%s期)') % (obj.course, obj.semester)

    def num(self, obj=None, is_header=False):
        if is_header:
            return '人数'
        return obj.student_set.all().count()

    def get_teacher(self, obj=None, is_header=None):
        if is_header:
            return '咨询课程'
        html = []
        course_list = obj.teachers.all()
        for role in course_list:
            ss = role.name
            html.append(ss)
        html = ','.join(html)
        return html

    list_display = [
        'school', course_semester, num, 'price', 'start_date', 'graduate_date',
        'memo', get_teacher, 'tutor'
    ]
    search_fields = [
        'school__contains', 'course__contains', 'semester__contains',
        'price__contains', 'start_date__contains', 'graduate_date__contains'
    ]  # 这是用来搜索的,不要把外键放在里面
    comb_filter = [
        v1.FilterOption('school', ),
        v1.FilterOption('course', ),
    ]
Exemple #9
0
class ClassListConfig(BasePermission,v1.StarkConfig):
    def course_semester(self,obj=None,is_header=None):
        if is_header:
            return '班级'
        return '%s(%s期)'%(obj.course.name,obj.semester)

    def num(self,obj=None,is_header=None):
        if is_header:
            return '人数'
        return obj.student_set.count()

    def teacher(self,obj=None,is_header=None):
        if is_header:
            return '教师'
        obj_list = obj.teachers.all()
        l = []
        [l.append(obj.name) for obj in obj_list]
        # for obj in obj_list:
        #     l.append(obj.name)
        return ','.join(l)

    #  组合搜索(根据校区,课程)
    comb_filter = [
        v1.FilterOption('school'),
        v1.FilterOption('course'),
        v1.FilterOption('teachers'),
    ]

    # ##############popup增加时,是否将新增的数据显示到页面中(获取条件) #############

    show_search_form = True
    list_display = ['school',course_semester,num,'start_date',teacher]
    edit_link = ['school']
Exemple #10
0
class UserInfoConfig(v1.StarkConfig):
    def display_gender(self, obj=None, is_header=False):
        if is_header:
            return '性别'

        # return obj.gender
        return obj.get_gender_display()

    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return '部门'
        return obj.depart.caption

    def display_roles(self, obj=None, is_header=False):
        if is_header:
            return '角色'

        html = []
        role_list = obj.roles.all()
        for role in role_list:
            html.append(role.title)

        return ",".join(html)

    list_display = [
        'id', 'name', 'email', display_gender, display_depart, display_roles
    ]

    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart', condition={'id__gt': 3}),
        v1.FilterOption('roles', True),
    ]
    # 是否显示搜索
    show_search_form = True
    search_fields = ['name__contains', 'email__contains']
    # 批量删除和初始化
    show_actions = True

    def multi_del(self, request):
        pk_list = request.POST.getlist('pk')
        self.model_class.objects.filter(id__in=pk_list).delete()
        return HttpResponse('删除成功')
        # return redirect("http://www.baidu.com")

    multi_del.short_desc = "批量删除"

    def multi_init(self, request):
        pk_list = request.POST.getlist('pk')
        #self.model_class.objects.filter(id__in=pk_list).delete()
        return HttpResponse('删除成功')
        #return redirect("http://www.baidu.com")

    multi_init.short_desc = "初始化"

    actions = [multi_del, multi_init]
Exemple #11
0
class UserInfoConfig(v1.StarkConfig):
    def display_gender(self, obj=None, is_head=False):
        if is_head:
            return '性别'
        return obj.get_gender_display()

    def dispaly_depart(self, obj=None, is_head=False):
        if is_head:
            return '部门'
        return obj.depart.caption

    def dispaly_roles(self, obj=None, is_head=False):
        if is_head:
            return '角色'

        roles = obj.roles.all()
        l = []
        for role in roles:
            l.append(role.title)
        return ','.join(l)

    list_display = [
        'id', "name", 'email', display_gender, dispaly_depart, dispaly_roles
    ]

    model_class_form = UserInfoForm

    show_search_form = True

    search_fileds = ['name__contains', 'email__contains']

    show_action = True

    def multi_del(self, request):
        id_list = request.POST.getlist('pk')
        # print(id_list,'****------')
        self.model_class.objects.filter(id__in=id_list).delete()
        return redirect(self.get_list_url())

    multi_del.short_desc = '批量删除'

    def multi_info(self, request):
        pass

    multi_info.short_desc = '批量初始化'

    action_func_list = [multi_del, multi_info]

    combine_seach = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart'),
        v1.FilterOption('roles', is_choice=False, is_multi=True),
    ]
Exemple #12
0
class UserInfoConfig(v1.StarkConfig):

    #让性别显示的是汉字
    def display_gender(self, obj=None, is_header=False):
        if is_header:
            return '性别'

        return obj.get_gender_display()

    #显示部门
    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return '部门'
        return obj.depart.caption

    #显示角色
    def display_roles(self, obj=None, is_header=False):
        if is_header:
            return '角色'

        html = []
        role_list = obj.roles.all()
        for role in role_list:
            html.append(role.title)

        return ",".join(html)

    list_display = [
        'id', 'name', 'email', display_gender, display_depart, display_roles
    ]

    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart'),
        #v1.FilterOption('depart'),如果不加condition={'id__gt': 2}  ---condition 表示对显示的数据进行筛选
        v1.FilterOption('roles', True),
    ]

    def multi_del(self, request):
        # print(request.POST)
        pk_list = request.POST.getlist('pk')
        # print(pk_list)
        self.model_class.objects.filter(id__in=pk_list).delete()

    multi_del.short_desc = "批量删除"

    def multi_init(self, request):
        pk_list = request.POST.getlist('pk')

    multi_init.short_desc = "初始化"

    actions = [multi_del, multi_init]
Exemple #13
0
class PaymentRecordConfig(BasePermission,v1.StarkConfig):
    def customer_display(self,obj=None,is_head=False):
        if is_head:
            return '客户'
        return obj.customer.name

    def class_list_display(self,obj=None,is_head=False):
        if is_head:
            return '班级'
        return obj.class_list.semester


    def pay_type_display(self,obj=None,is_head=False):
        if is_head:
            return '费用类型'
        return obj.get_pay_type_display()

    def consultant_display(self,obj=None,is_head=False):
        if is_head:
            return '负责老师'
        return obj.consultant.name

    list_display = [customer_display,class_list_display,pay_type_display,'paid_fee','turnover','quote','note','date']



    show_action = True

    def multi_del(self, request):
        id_list = request.POST.getlist('pk')
        # print(id_list,'****------')
        self.model_class.objects.filter(id__in=id_list).delete()
        return redirect(self.get_list_url())

    multi_del.short_desc = '批量删除'

    def multi_info(self, request):
        pass

    multi_info.short_desc = '批量初始化'

    action_func_list = [multi_del, multi_info]

    combine_seach = [
        v1.FilterOption('class_list'),
        v1.FilterOption('pay_type',is_choice=True),
        v1.FilterOption('consultant'),
    ]
Exemple #14
0
class StudyRecordConfig(v1.StarkConfig):
    show_add_btn = False
    def display_record(self,obj=None,is_header=False):
        if is_header:
            return '出勤'
        return obj.get_record_display()
    # 学生学习记录
    comb_filter = [
        v1.FilterOption('course_record')
    ]
    def action_checked(self,request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(record='checked')
    action_checked.short_desc= "签到"
    def action_vacate(self,request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(record='vacate')
    action_vacate.short_desc= "请假"
    def action_late(self,request):
        pk_list=request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(record='late')
    action_late.short_desc= "迟到"
    def action_noshow(self,request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(record='noshow')
    action_noshow.short_desc= "缺勤"
    def action_leave_early(self,request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(record='leave_early')
    action_leave_early.short_desc= "早退"
    show_actions = True
    actions = [action_checked, action_vacate, action_late, action_noshow, action_leave_early]

    list_display = ['course_record','student','record','score','homework_note','note','homework','stu_memo','date',display_record]
Exemple #15
0
class ConsultRecordConfig(v1.StarkConfig):
    def display_customer(self, obj=None, is_header=None):
        if is_header:
            return "所咨询客户"
        return obj.customer.name

    def display_consultant(self, obj=None, is_header=None):
        if is_header:
            return "跟踪人"
        return obj.consultant.name

    def display_date(self, obj=None, is_header=None):
        if is_header:
            return "跟进日期"
        return obj.date.strftime("%Y-%m-%d")

    def display_note(self, obj=None, is_header=None):
        if is_header:
            return "跟进内容"
        return obj.note

    list_display = [
        display_customer, display_consultant, display_date, display_note
    ]
    # show_add_btn = True

    edit_link = [display_customer]
    comb_filter = [v1.FilterOption("customer")]
Exemple #16
0
class UserInfoConfig(v1.StarkConfig):
    show_search_form = True  # 搜索框
    search_fields = ['name__contains', 'email__contains']  # 模糊搜索

    show_actions = True  # 批量操作框

    # 批量删除
    def multi_del(self, request):
        pk_list = request.POST.getlist('pk')  # 得到所有的勾选的项
        self.model_class.objects.filter(id__in=pk_list).delete()
        return HttpResponse('删除成功')
        # return redirect("http://www.baidu.com")

    multi_del.desc_text = "批量删除"  # 给函数内部加一个字段
    actions = [multi_del]  # 给actions加入定制的功能

    def display_gender(self, obj=None, is_header=False):
        if is_header:
            return '性别'
        return obj.get_gender_display()  #get_字段名,可拿出choices里的内容

    def display_depart(self, obj=None, is_header=False):
        if is_header:
            return '部门'
        return obj.depart.caption  #对象.字段

    def display_roles(self, obj=None, is_header=False):
        if is_header:
            return '角色'
        html = []
        role_list = obj.roles.all()
        for role in role_list:
            html.append(role.title)
        return "、".join(html)  #多对多,循环取出,用顿号隔开显示

    list_display = [
        'id', 'name', 'email', display_gender, display_depart, display_roles
    ]

    #条件筛选
    comb_filter = [
        #  FilterOption('字段', 是否多选, 条件, 是否是choice),
        v1.FilterOption('gender', is_choice=True),  #关键字传参,代表是choice
        v1.FilterOption('depart'),  #, condition={'id__gt': 3}
        v1.FilterOption('roles', True),  #True传入,代表是多选
    ]
Exemple #17
0
class StudyRecordConfig(BasePermission, v1.StarkConfig):
    """
    1. 初始化学生学习记录

    2. 考勤管理

    3. 录成绩

    4. 查看到学生所有成绩【highchart】
    """

    # 出勤信息(choices选项)
    def display_record(self, obj=None, is_header=False):
        if is_header:
            return '出勤'
        return obj.get_record_display()  # 获取到该记录选项

    list_display = ['student', 'course_record', display_record]

    comb_filter = [v1.FilterOption('course_record')]

    def checked(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="checked")

    checked.short_desc = "已签到"

    def vacate(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="vacate")

    vacate.short_desc = "请假"

    def late(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(record="late")

    late.short_desc = "迟到"

    def noshow(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="noshow")

    noshow.short_desc = "缺勤"

    def leave_early(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="leave_early")

    leave_early.short_desc = "早退"

    show_actions = True
    actions = [checked, vacate, late, noshow, leave_early]
    show_add_btn = False  # 在上课记录里面,不允许创建
Exemple #18
0
class StudyRecordConfig(BasePermission, v1.StarkConfig):
    def display_record(self, obj=None, is_header=False):
        if is_header:
            return '出勤情况'
        return obj.get_record_display()

    list_display = ['course_record', 'student', display_record]

    comb_filter = [v1.FilterOption('course_record')]

    def action_checked(self, request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record='checked')
        return redirect('/stark/crm/studyrecord/')

    action_checked.short_desc = "已签到"

    def action_vacate(self, request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record='vacate')
        return redirect('/stark/crm/studyrecord/')

    action_vacate.short_desc = "请假"

    def action_late(self, request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(record='late')
        return redirect('/stark/crm/studyrecord/')

    action_late.short_desc = "迟到"

    def action_noshow(self, request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record='noshow')
        return redirect('/stark/crm/studyrecord/')

    action_noshow.short_desc = "缺勤"

    def action_leave_early(self, request):
        pk_list = request.POST.getlist('pk')
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record='leave_early')
        return redirect('/stark/crm/studyrecord/')

    action_leave_early.short_desc = "早退"

    actions = [
        action_checked, action_vacate, action_late, action_noshow,
        action_leave_early
    ]

    show_actions = True

    show_add_btn = False
Exemple #19
0
class UserInfoConfig(v1.StarkConfing):
    """用户管理"""
    list_dsplay = ['name','username','email','depart']
    edit_link = ['depart']
    combination_filter = [
        v1.FilterOption('depart',text_func_name=lambda x:str(x),val_func_name=lambda x:x.code,),
    ]
    show_search_form = True
    search_fields = ['name__contains']
Exemple #20
0
class ClassListConfig(v1.StarkConfig):
    def display_teachers(self, obj=None, is_header=False):
        if is_header:
            return '任课老师'

        html = []
        teacher_list = obj.teachers.all()
        for teacher in teacher_list:
            html.append(teacher.name)

        return ",".join(html)

    comb_filter = [v1.FilterOption('school', ), v1.FilterOption('course', )]

    list_display = [
        'school', 'course', 'semester', 'price', 'start_date', 'graduate_date',
        'memo', display_teachers, 'tutor'
    ]
Exemple #21
0
class UserInfoConfig(v1.StarkConfig):
    list_display=["name","username","email","depart"]

    comb_filter = [
        v1.FilterOption("depart",text_func_name=lambda x:str(x),val_func_name=lambda x:x.code,)
    ]
    edit_link = ["name"]
    search_fields = ["name__contains","email__contains","username__contains"]
    show_search_form = True
Exemple #22
0
class AuthorConfig(v1.StarkConfig):

    #自定义添加额外的url
    def extra_url(self):
        url_list = [
            url(r'^xxxx/', self.fun),
        ]
        return url_list

    #额外添加的url,对应的函数
    def fun(self):
        return HttpResponse("额外添加的url")

    #自定义查询字段
    list_display = ['id', "username", "password"]

    #有无添加按钮的权限
    # show_add_btn = True

    #自定义从那个字段搜索
    show_query_field = True
    query_field = ["username__contains", "password__contains"]

    show_actions = True

    #自定义actions
    def multi_del(self, requset):
        pk_list = requset.POST.getlist('pk')
        self.model_class.objects.filter(pk__in=pk_list).delete()

    multi_del.short_desc = '批量删除'

    def multi_init(self, requset):
        pk_list = requset.POST.getlist('pk')

    multi_init.short_desc = '初始化'

    list_acions = [multi_del, multi_init]

    comb_filter = [
        v1.FilterOption('username', ),
        v1.FilterOption('password', ),
    ]
Exemple #23
0
class ClassListConfig(v1.StarkConfing):
    """班级管理"""
    def course_semester(self,obj=None,is_header=False):
        """课程和班级拼接"""
        if is_header:
            return '班级'
        return '%s(%s期)'%(obj.course.name,obj.semester,)
    #未完成作业班级人数
    # ############## 作业3:popup增加时,是否将新增的数据显示到页面中(获取条件) #############
    def num(self,obj=None,is_header=False):
        """班级人数"""
        if is_header:
            return '班级人数'
        return 80
    combination_filter = [
        v1.FilterOption('school',),
        v1.FilterOption('course',True)
    ]
    list_dsplay = ['school',course_semester,num,'start_date']
    edit_link = [course_semester]
Exemple #24
0
class UserInfoConfig(v1.StarkConfig):
    list_display = ['name','username','email','depart']
    edit_link = ['name']
    comb_filter = [
        v1.FilterOption('depart',text_func_name=lambda x: str(x),val_func_name=lambda x: x.code,)

    ]

    search_fields = ['name__contains','email__contains']
    show_search_form = True
    show_comb_filter = True
Exemple #25
0
class ClassListConfig(v1.StarkConfig):
    """
    班级名称
    """
    list_display = ["school", "course", "semester", "start_date"]
    com_filter = [
        v1.FilterOption("teachers",
                        text_func_name=lambda x: str(x),
                        val_func_name=lambda x: x.teach_classes),
    ]
    show_com_filter = True
Exemple #26
0
class UserInfoConfig(v1.StarkConfig):
    def display_gender(
            self,
            obj=None,
            is_header=False):  #obj=None:数据库没有字段   is_header=False:表头也没有
        if is_header:  #这里就需要有表头显示,  如果需要有
            return '性别'  #返回给一个 '描述'
        return obj.get_gender_display()
        #解决内容为None的问题,如果是一个 choices,通过obj.get_字段名_display()方法拿到中文名。

    def display_depart(self, obj=None, is_header=False):  #obj
        if is_header:  #表头显示
            return '部门'
        return obj.depart.caption  #解决内容为None的问题, 通过对象跨表查询。

    def display_roles(self, obj=None, is_header=False):
        if is_header:  #表头显示
            return '角色'
        html = []
        role_list = obj.roles.all()
        for role in role_list:
            html.append(role.title)

        return ','.join(html)  #解决内容为None的问题,因为多对多关系

    # Booklist = []
    # for i in range(100):
    #     Booklist.append(models.UserInfo(name="曹操", email='*****@*****.**', gender='1',depart_id=1))
    # models.UserInfo.objects.bulk_create(Booklist)

    list_display = [
        'id', 'name', 'email', display_gender, display_depart, display_roles
    ]

    # FilterOption('字段', 是否多选, 条件, 是否是choice)。 组合搜索的选项
    #方式1:通过字典封装, 方式2: 通过函数对象封装
    comb_filter = [
        v1.FilterOption('gender', is_choice=True),
        v1.FilterOption('depart', ),
        v1.FilterOption('roles', True),
    ]
Exemple #27
0
class ClassListConfig(v1.StarkConfig):
    def teachers_display(self, obj=None, is_header=False):
        if is_header:
            return "任教老师"
        user_list = obj.teachers.all()
        html = []
        for i in user_list:
            html.append(i.name)
        return ','.join(html)

    def display_graduate_date(self, obj=None, is_header=False):
        if is_header:
            return "结业日期"
        return '' if not obj.graduate_date else obj.graduate_date

    def display_memo(self, obj=None, is_header=False):
        if is_header:
            return "说明"
        return '' if not obj.memo else obj.memo

    def course_semester(self, obj=None, is_header=False):
        if is_header:
            return "课程(班级)"
        return "%s(%s期)" % (obj.course, obj.semester)

    #列举这个班级的人数
    def num(self, obj=None, is_header=False):
        if is_header:
            return "人数"
        # print(obj.student_set.all().count())
        return obj.student_set.all().count()

    list_display = [
        "school", course_semester, num, "price", "start_date",
        display_graduate_date, display_memo, teachers_display, "tutor"
    ]
    edit_link = ["school", "tutor"]
    # ############## 作业2:组合搜索(校区、课程) #############

    comb_filter = [v1.FilterOption("school"), v1.FilterOption("course")]
    show_comb_filter = True
Exemple #28
0
class UserInfoConfig(BasePermission,v1.StarkConfig):
    list_display = ['name','username','email','depart']
    # 组合搜索
    comb_filter = [
        v1.FilterOption('depart',text_func_name=lambda x:str(x),val_func_name=lambda x:x.code) # 字段  只在choice,fk,m2m有用
    ]                          # 这俩函数就是为了防止你自定义的fk的值不是主键用的

    edit_link = ['name']

    # 显示搜索并支持模糊搜索
    show_search_form = True
    search_fields = ['name__contains']
Exemple #29
0
class StudyRecordConfig(v1.StarkConfig):
    '''学生学习记录'''
    def display_record(self, obj=None, is_header=False):
        if is_header:
            return "出勤"
        return obj.get_record_display()

    list_display = [
        "course_record",
        "student",
        display_record,
    ]
    edit_link = ["student"]
    comb_filter = [
        v1.FilterOption("course_record")  #按课程组合搜索
    ]

    def checked(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="checked")

    checked.short_desc = "已签到"

    def vacate(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="vacate")

    vacate.short_desc = "请假"

    def late(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(record="late")

    late.short_desc = "迟到"

    def noshow(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="noshow")

    noshow.short_desc = "缺勤"

    def leave_early(self, request):
        pk_list = request.POST.getlist("pk")
        models.StudyRecord.objects.filter(id__in=pk_list).update(
            record="leave_early")

    leave_early.short_desc = "早退"

    actions = [checked, vacate, late, noshow, leave_early]
    show_actions = True
Exemple #30
0
class ConsultRecordConfig(v1.StarkConfig):
    list_display = ["customer", "consultant", "date"]
    comb_filter = [v1.FilterOption("customer")]

    def changelist_view(self, request, *args, **kwargs):
        customer = request.GET.get("customer")
        current_login_user_id = 11
        ct = models.Customer.objects.filter(consultant=current_login_user_id,
                                            id=customer).count()
        if ct:
            return super(ConsultRecordConfig,
                         self).changelist_view(request, *args, **kwargs)
        return HttpResponse("不是你的客户")