# coding=utf-8

CONTENT_TYPE_SORTING = (
    # 系统设置
    'account-user',  # 用户管理
    'account-manageagentuser',  # 权限管理
    'option-option',  # 自定义项
    'option-agentlevel',  # 代理商等级

    'commodity-commodity',  # 商品管理
    'commodity-commodityparameter',  # 商品参数

    'agent-agentapply',  # 代理商申请
    'agent-agent',  # 代理商
    'agent-agentcommodity',  # 代理商商品
    'order-order',  # 代理商订单

    'WechatApplet-wechatapplet',  # 小程序管理

    'deliver-productdeliver',  # 防窜货管理
)

MENU_TO_MODEL = (
    (
        u'基础数据', (
            'account-user',
            'account-manageagentuser',
            'option-option',
            'option-agentlevel',
        )
    ),
    (
        u'商品管理', (
            'commodity-commodity',
            'commodity-commodityparameter',
        )
    ),
    (
        u'代理商管理', (
            'agent-agentapply',
            'agent-agent',
            'agent-agentcommodity',
            'order-order',
        )
    ),
    (
        u'其他', (
            'WechatApplet-wechatapplet',
            'deliver-productdeliver',
        ),
    ),

)


class PermissionMenu(object):

    def __init__(self):
        self.sort = CONTENT_TYPE_SORTING
        self.menus = MENU_TO_MODEL

    def get_index(self, app_label, model):
        try:
            return self.sort.index('{}-{}'.format(app_label, model))
        except:
            return 9999

    def sort_perms(self, perms):
        perms = perms.order_by('content_type__model', 'id')
        perms = sorted(perms, key=lambda n: self.get_index(n.content_type.app_label, n.content_type.model))
        return perms

    def get_menuname_of_contenttype(self, app_label, model):
        for menu in self.menus:
            val = '{}-{}'.format(app_label, model)
            if val in menu[1]:
                return menu[0]
        return u'未分类'
