Example #1
0
def auth_org_perm(request):
    """
    Returns context variables required by apps that use Django's authentication
    system.

    If there is no 'user' attribute in the request, uses AnonymousUser (from
    django.contrib.auth).
    """
    if hasattr(request, 'user'):
        user = request.user
    else:
        from django.contrib.auth.models import AnonymousUser
        user = AnonymousUser()

    org = request.session.get('org', None)
    org_id = org and org.pk or 0

    def _is_root_org(org_id):
        try:
            org_id = int(org_id)
            if org_id:
                if Organization.objects.get(pk=org_id).parent:
                    return False
                else:
                    return True
            else:
                return False
        except:
            return False

    if user.is_anonymous() or not org_id or request.path == '/':
        return {
            'INDUSTRY': (org and org.style == 'retail') and 'retail'
            or 'restaurant'
        }

    return {
        'is_root_org':
        _is_root_org(org_id),
        'operms':
        OPermWrapper(user, org_id),
        'warehouse_perm':
        user.get_warehouses(org_id),
        'warehouse_write_perm':
        user.get_warehouses(org_id, perms=['warehouse_write']),
        'is_superior':
        user.is_org_superuser(org_id),
        #'wm_perm':user.get_warehouses(org_id,perms=['warehouse_manage']),
        #'pandian_perm':user.get_warehouses(org_id,perms=['warehouse_manage','warehouse_pandian_read','warehouse_pandian_write']),
        #'caigou_perm':user.get_warehouses(org_id,perms=['warehouse_manage','warehouse_caigou_read','warehouse_caigou_write']),
        #'tuihuo_perm':user.get_warehouses(org_id,perms=['warehouse_manage','warehouse_tuihuo_read','warehouse_tuihuo_write']),
        #'lingyong_perm':user.get_warehouses(org_id,perms=['warehouse_manage','warehouse_lingyong_read','warehouse_lingyong_write']),
        #'tuiliao_perm':user.get_warehouses(org_id,perms=['warehouse_manage','warehouse_tuiliao_read','warehouse_tuiliao_write']),
        #'xiaoshou_perm':user.get_warehouses(org_id,perms=['warehouse_manage','warehouse_xiaoshou_read','warehouse_xiaoshou_write']),
        'agile':
        STYLE == 'agile',
        'INDUSTRY': (org and org.style == 'retail') and 'retail'
        or 'restaurant'
    }