Ejemplo n.º 1
0
def group_check(request):
    valid = True
    error = ''
    if PermGroup.objects.filter(name=request.GET.get('name'), access_level=request.GET.get('access_level')).count():
        valid = False
        error = 'This name/access level is already in use.'
    return render_json_response({'Valid': valid, 'Error': error})
Ejemplo n.º 2
0
def group_list(request):
    access_level = check_access_level(request.user, 'permissions', ['administer', 'assign'])
    groups = group_data(request.GET.get('group_id', False), access_level)
    data = list()
    for group in groups:
        data.append({'id': group.id, 'name': group.name, 'access_level': group.access_level})
    return render_json_response(data)
Ejemplo n.º 3
0
def permissions_list(request):
    permissions = permissions_data(request.GET.get('permission_id', False))
    data = list()
    for permission in permissions:
        data.append({'id': permission.id,
                     'name': permission.name,
                     'item': permission.item,
                     'action': permission.action})
    return render_json_response(data)
Ejemplo n.º 4
0
def group_permission_delete(request):
    try:
        group_permission_ids = get_request_array(request.POST, 'group_permission_id')
        for group_permission_id in group_permission_ids:
            group_permission = PermGroupPermission.objects.get(id=group_permission_id)
            group_permission.delete()
        data = {'Success': True}
    except Exception as e:
        data = {'Success': False, 'Error': '{0}'.format(e)}
    return render_json_response(data)
Ejemplo n.º 5
0
def permission_check(request):
    valid = True
    error = ''
    if PermPermission.objects.filter(name=request.GET.get('name')).count():
        valid = False
        error = 'This name is already in use. '
    if PermPermission.objects.filter(item=request.GET.get('target'), action=request.GET.get('action')).count():
        valid = False
        error += 'This target/action combination is already in use.'
    return render_json_response({'Valid': valid, 'Error': error})
Ejemplo n.º 6
0
def group_permissions_list(request):
    group = PermGroup.objects.get(id=request.GET.get('group_id'))
    permissions = PermGroupPermission.objects.filter(group=group)
    permission_list = list()
    for permission in permissions:
        permission_list.append({'id': permission.id,
                                'name': permission.permission.name,
                                'item': permission.permission.item,
                                'action': permission.permission.action})
    return render_json_response(permission_list)
Ejemplo n.º 7
0
def group_member_list(request):
    member_list = list()
    try:
        group = PermGroup.objects.get(id=request.GET.get('group_id'))
        kwargs = {'group': group}
        access_level = check_access_level(request.user, 'permissions', ['administer', 'assign'])
        if access_level == 'School':
            kwargs.update({'user__profile__school': request.user.profile.school})
        if access_level == 'District':
            kwargs.update({'user__profile__district': request.user.profile.district})
        if access_level == 'State':
            kwargs.update({'user__profile__district__state': request.user.profile.district.state})
        group_members = PermGroupMember.objects.prefetch_related().filter(**kwargs)

        for member in group_members:
            member_dict = {'id': member.id}
            try:
                member_dict.update({'user_id': member.user.id})
            except:
                pass
            try:
                member_dict.update({'first_name': member.user.first_name})
            except:
                pass
            try:
                member_dict.update({'last_name': member.user.last_name})
            except:
                pass
            try:
                member_dict.update({'email': member.user.email})
            except:
                pass
            try:
                member_dict.update({'district': member.user.profile.district.name})
            except:
                pass
            try:
                member_dict.update({'state': member.user.profile.district.state.name})
            except:
                pass
            try:
                member_dict.update({'school': member.user.profile.school.name})
            except:
                pass
            member_list.append(member_dict)
    except:
        pass

    return render_json_response(member_list)
Ejemplo n.º 8
0
def group_add(request):
    name = request.POST.get('name', False)
    group_id = request.POST.get('group_id', False)
    access_level = request.POST.get('access_level', None)
    if name:
        if group_id:
            group = PermGroup.objects.get(id=group_id)
        else:
            group = PermGroup()
        group.name = name
        group.access_level = access_level
        group.save()
        data = {'Success': True}
    else:
        data = {'Success': False}
    return render_json_response(data)
Ejemplo n.º 9
0
def group_permission_add(request):
    group_id = int(request.POST.get('group', False))
    group = PermGroup.objects.get(id=group_id)
    permission_id = int(request.POST.get('permission', False))
    permission = PermPermission.objects.get(id=permission_id)
    if permission and group:
        try:
            group_permission = PermGroupPermission()
            group_permission.group = group
            group_permission.permission = permission
            group_permission.save()
            data = {'Success': True}
        except IntegrityError as e:
            data = {'Success': False, 'Error': 'duplicate'}
        except Exception as e:
            data = {'Success': False, 'Error': '{0}'.format(e)}
    else:
        data = {'Success': False}
    return render_json_response(data)
Ejemplo n.º 10
0
def permission_add(request):
    name = request.POST.get('name', False)
    item = request.POST.get('target', False)
    action = request.POST.get('action', False)
    permission_id = request.POST.get('permission_id', False)
    if name and item and action:
        if permission_id:
            permission = PermPermission.objects.get(id=permission_id)
        else:
            permission = PermPermission()
        try:
            permission.name = name
            permission.item = item
            permission.action = action
            permission.save()
            data = {'Success': True}
        except Exception as e:
            data = {'Success': False, 'Error': '{0}'.format(e)}
    else:
        data = {'Success': False}
    return render_json_response(data)
Ejemplo n.º 11
0
def group_member_add(request):
    submit_type = request.POST.get('type', False)

    group_id = request.POST.get('group', False)
    try:
        group = PermGroup.objects.get(id=group_id)
    except:
        group = False

    if group:
        if submit_type == 'email':
            member = request.POST.get('member', False)
            user = User.objects.get(email=member)
            try:
                group_member = PermGroupMember()
                group_member.group = group
                group_member.user = user
                group_member.save()
                data = {'Success': True}
            except IntegrityError as e:
                data = {'Success': False, 'Error': 'duplicate'}
            except Exception as e:
                data = {'Success': False, 'Error': '{0}'.format(e)}

        elif submit_type == 'group':
            state = request.POST.get('state', False)
            district = request.POST.get('district', False)
            school = request.POST.get('school', False)
            if school:
                users = User.objects.filter(profile__school=school)
            elif district:
                users = User.objects.filter(profile__district=district)
            else:
                users = User.objects.filter(profile__district__state=state)
            errors = list()
            for user in users:
                try:
                    group_member = PermGroupMember()
                    group_member.group = group
                    group_member.user = user
                    group_member.save()
                except IntegrityError as e:
                    errors.append('duplicate')
                except Exception as e:
                    errors.append('{0}'.format(e))
            if len(errors):
                data = {'Success': True, 'Errors': errors}
                if len(errors) == users.count():
                    data['Success'] = False
            else:
                data = {'Success': True}
        elif submit_type == 'import':
            if request.FILES.get('import_file') is not None and request.FILES.get('import_file').size:
                import_file = request.FILES.get('import_file')
                r = csv.reader(import_file, dialect=csv.excel)
                r1 = []
                r1.extend(r)

                errors = list()
                count = 0
                for i, line in enumerate(r1):
                    count += 1
                    email = line[0]
                    try:
                        validate_email(email)
                        user = User.objects.get(email=email)
                        try:
                            group_member = PermGroupMember()
                            group_member.group = group
                            group_member.user = user
                            group_member.save()
                        except IntegrityError as e:
                            raise Exception('Already a member.')
                        except Exception as e:
                            raise Exception(e)
                    except ValidationError:
                        transaction.rollback()
                        errors.append({'email': email, 'error': 'Invalid email address.'})
                    except Exception as e:
                        transaction.rollback()
                        errors.append({'email': email, 'error': '{0}'.format(e)})
                    else:
                        transaction.commit()

                if count > len(errors):
                    data = {'Success': True}
                else:
                    data = {'Success': False}
                data.update({'Errors': errors})
            else:
                data = {'Success': False}
        else:
            data = {'Success': False}
    else:
        data = {'Success': False}

    return render_json_response(data)