• django-BaseCommand自带的权限分组


    note:  应该是这样的结构,并且commands名字是固定的。 执行: python manage.py  initgroup

    initgroup.py

    # -*- coding: utf-8 -*-
    from django.core.management import BaseCommand
    from django.contrib.auth.models import Group, Permission, ContentType
    
    from apps.news.models import News, NewsCategory, Comment
    from apps.cms.models import Banners
    from apps.course.models import Course, CourseOrder, Category
    
    
    class Command(BaseCommand):
        def handle(self, *args, **options):
            # 编辑组/财务组/管理员组/超级管理员
            # python manage.py initgroup
            # 编辑人员权限:编辑文章/轮播图/付费资讯/课程
    
            # 创建编辑组
            # model对应的app名字   !!!get_for_model not is get_for_models
            edit_content_types = [
                ContentType.objects.get_for_model(News),
                ContentType.objects.get_for_model(NewsCategory),
                ContentType.objects.get_for_model(Banners),
                ContentType.objects.get_for_model(Comment),
                ContentType.objects.get_for_model(Course),
                ContentType.objects.get_for_model(Category),
            ]
            # 添加权限
            # 查找出这些models需要的权限
            edit_permissions = Permission.objects.filter(content_type__in=edit_content_types)
    
            # 创建权限组的名字
            editGroup = Group.objects.create(name='编辑')
            # 添加权限
            editGroup.permissions.set(edit_permissions)
    
            # 2.创建财务组
            finance_content_types = [
                ContentType.objects.get_for_models(CourseOrder)
            ]
            finance_permissions = Permission.objects.filter(content_type__in=finance_content_types)
            finance_group = Group.objects.create(name='财务组')
            finance_group.permissions.set(finance_permissions)
    
            # 3.创建管理员,拥有财务和编辑权限
            admin_permissions = edit_permissions.union(finance_permissions)
            admin_group = Group.objects.create(name='管理员')
            admin_group.permissions.set(admin_permissions)
    
            self.stdout.write(self.style.SUCCESS("初始化分组成功"))

     权限分组完成,权限验证场景: https://www.cnblogs.com/tangpg/p/9431620.html

  • 相关阅读:
    leetcode 122. Best Time to Buy and Sell Stock II
    leetcode 121. Best Time to Buy and Sell Stock
    python 集合(set)和字典(dictionary)的用法解析
    leetcode 53. Maximum Subarray
    leetcode 202. Happy Number
    leetcode 136.Single Number
    leetcode 703. Kth Largest Element in a Stream & c++ priority_queue & minHeap/maxHeap
    [leetcode]1379. Find a Corresponding Node of a Binary Tree in a Clone of That Tree
    正则表达式
    十种排序算法
  • 原文地址:https://www.cnblogs.com/tangpg/p/9428980.html
Copyright © 2020-2023  润新知