コード例 #1
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def profile(request):
    logged_user = get_logged_user(request)
    context = {
        'user': logged_user,
        'is_admin': check_admin(logged_user),
        'user_level_choices': User._meta.get_field('user_level').choices,
    }
    return render(request, 'profile.html', context=context)
コード例 #2
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def user_show(request, id: int):
    logged_user = get_logged_user(request)
    user = User.objects.get(id=id)
    context = {
        'user': user,
        'is_admin': check_admin(logged_user),
    }
    return render(request, 'user_page.html', context=context)
コード例 #3
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def user_destroy(request, id: int):
    logged_user = get_logged_user(request)
    if not check_admin(logged_user):
        return redirect('/')

    user = User.objects.get(id=id)
    user.delete()
    return redirect('dashboard')
コード例 #4
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def users_new(request):
    logged_user = get_logged_user(request)
    if not check_admin(logged_user):
        return redirect('/')
    context = {
        'is_admin': check_admin(logged_user),
        'user_level_choices': User._meta.get_field('user_level').choices,
    }
    return render(request, 'user_new.html', context=context)
コード例 #5
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def dashboard(request):
    logged_user = get_logged_user(request)
    if logged_user is None:
        return redirect('/')
    users = User.objects.all()
    context = {
        'users': users,
        'is_admin': check_admin(logged_user),
    }
    return render(request, 'dashboard.html', context=context)
コード例 #6
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def user_edit(request, id: int):
    logged_user = get_logged_user(request)
    if not check_admin(logged_user):
        return redirect('/')
    user = User.objects.get(id=id)
    context = {
        'user': user,
        'is_admin': check_admin(logged_user),
        'user_level_choices': User._meta.get_field('user_level').choices,
    }
    return render(request, 'profile.html', context=context)
コード例 #7
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def user_create(request):
    logged_user = get_logged_user(request)

    errors = User.objects.basic_validator(request.POST)
    if len(errors) > 0:
        for key, value in errors.items():
            messages.error(request, value)
    else:
        email = request.POST['email_input']
        first_name = request.POST['first_name_input']
        last_name = request.POST['last_name_input']
        password = request.POST['password_input']

        users_count = User.objects.count()
        if users_count == 0:
            user_level = UserLevel.ADMIN.value
        else:
            user_level = UserLevel.NORMAL.value

        if check_admin(logged_user):
            user_level = request.POST.get('user_level_select', user_level)
            print('user should be admin')

        user = User.objects.filter(email=email)
        if user and len(user) == 1:
            messages.error(request, 'Email is already registered')
        else:
            pw_hash = bcrypt.hashpw(password.encode(),
                                    bcrypt.gensalt()).decode()
            new_user = User.objects.create(email=email,
                                           first_name=first_name,
                                           last_name=last_name,
                                           password=pw_hash,
                                           user_level=user_level)
            if logged_user is None:
                request.session['userid'] = new_user.id
                logged_user = get_logged_user(request)

            return redirect('dashboard')
    next = request.POST.get('next_hidden', 'register')
    return redirect(next)
コード例 #8
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def user_check(request):
    email = request.POST['email_input']
    password = request.POST['password_input']
    user = User.objects.filter(email=email)
    if user and len(user) == 1:
        logged_user = user[0]
        if bcrypt.checkpw(password.encode(), logged_user.password.encode()):
            request.session['userid'] = logged_user.id
            logged_user = get_logged_user(request)

            return redirect('dashboard')
    messages.error(request, 'Invalid username or password')
    return redirect('signin')
コード例 #9
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def user_update(request, id: int):
    logged_user = get_logged_user(request)
    user = User.objects.get(id=id)
    if not check_admin(logged_user) and user.id != logged_user.id:
        return redirect('/')

    errors = User.objects.basic_validator(request.POST)
    if len(errors) > 0:
        for key, value in errors.items():
            messages.error(request, value)
    else:
        email = request.POST.get('email_input', user.email)
        first_name = request.POST.get('first_name_input', user.first_name)
        last_name = request.POST.get('last_name_input', user.last_name)
        description = request.POST.get('description_input', user.description)
        password = request.POST.get('password_input', None)

        user_level = user.user_level
        if check_admin(logged_user):
            user_level = request.POST.get('user_level_select', user_level)

        user = User.objects.filter(Q(email=email) & ~Q(id=id))
        if user and len(user) == 1:
            messages.error(request, 'Email is already registered')
        else:
            user = User.objects.get(id=id)
            user.email = email
            user.first_name = first_name
            user.last_name = last_name
            user.description = description
            user.user_level = user_level
            if password is not None:
                pw_hash = bcrypt.hashpw(password.encode(),
                                        bcrypt.gensalt()).decode()
                user.password = pw_hash
            user.save()

    next = request.POST.get('next', 'profile')
    try:
        return redirect(next, id=id)
    except:
        return redirect(next)
コード例 #10
0
ファイル: views.py プロジェクト: gfhuertac/coding_dojo_python
def message_create(request):
    logged_user = utils.get_logged_user(request)
    errors = Message.objects.basic_validator(request.POST)
    if len(errors) > 0:
        for key, value in errors.items():
            messages.error(request, value)
    else:
        user_id = int(request.POST['to_hidden'])
        message_id = int(request.POST.get('reply_to_hidden', 0))
        message = request.POST['message_input']
        to_user = User.objects.get(id=user_id)
        reply = None
        if message_id != 0:
            reply = Message.objects.get(id=message_id)

        Message.objects.create(message=message,
                               author=logged_user,
                               to=to_user,
                               reply_to=reply)
    return redirect('user_show', id=to_user.id)