Skip to content

Instantly share code, notes, and snippets.

@namantw
Last active January 13, 2019 13:05
Show Gist options
  • Save namantw/ab1d3c3dae758d2d108bfab8638553c8 to your computer and use it in GitHub Desktop.
Save namantw/ab1d3c3dae758d2d108bfab8638553c8 to your computer and use it in GitHub Desktop.
from django.shortcuts import render, redirect
from .forms import UserForm, RegistrationForm, LoginForm, SelectionForm
from django.http import HttpResponse, Http404
from selection.models import Student, Room, Hostel
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
def home(request): # the function will take request as input
return render(request, 'home.html') # the function then renders an html page template called home.html
def register(request):
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
new_user = form.save(commit=False)
new_user.save()
Student.objects.create(user=new_user)
cd = form.cleaned_data
user = authenticate(
request,
username=cd['username'],
password=cd['password1'])
if user is not None:
if user.is_active:
login(request, user)
return redirect('login/edit/')
else:
return HttpResponse('Disabled account')
else:
return HttpResponse('Invalid Login')
else:
form = UserForm()
args = {'form': form}
return render(request, 'reg_form.html', args)
def user_login(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
user = authenticate(
request,
username=cd['username'],
password=cd['password'])
if user is not None:
if user.is_active:
login(request, user)
return render(request, 'profile.html')
else:
return HttpResponse('Disabled account')
else:
return HttpResponse('Invalid Login')
else:
form = LoginForm()
return render(request, 'login.html', {'form': form})
@login_required
def edit(request):
if request.method == 'POST':
form = RegistrationForm(request.POST, instance=request.user.student)
if form.is_valid():
form.save()
return render(request, 'profile.html')
else:
form = RegistrationForm(instance=request.user.student)
return render(request, 'edit.html', {'form': form})
@login_required
def select(request):
if request.user.student.room:
room_id_old = request.user.student.room_id
if request.method == 'POST':
form = SelectionForm(request.POST, instance=request.user.student)
if form.is_valid():
if request.user.student.room_id:
request.user.student.room_allotted = True
r_id_after = request.user.student.room_id
room = Room.objects.get(id=r_id_after)
room.vacant = False
room.save()
try:
room = Room.objects.get(id=room_id_old)
room.vacant = True
room.save()
except BaseException:
pass
else:
request.user.student.room_allotted = False
try:
room = Room.objects.get(id=room_id_old)
room.vacant = True
room.save()
except BaseException:
pass
form.save()
return render(request, 'profile.html')
else:
form = SelectionForm(instance=request.user.student)
student_gender = request.user.student.gender
student_course = request.user.student.course
student_room_type = request.user.student.course.room_type
hostel = Hostel.objects.filter(
gender=student_gender, course=student_course)
x = Room.objects.none()
if student_room_type == 'B':
for i in range(len(hostel)):
h_id = hostel[i].id
a = Room.objects.filter(
hostel_id=h_id, room_type=['A', 'B'], vacant=True)
x = x | a
else :
for i in range(len(hostel)):
h_id = hostel[i].id
a = Room.objects.filter(
hostel_id=h_id, room_type=student_room_type, vacant=True)
x = x | a
form.fields["room"].queryset = x
return render(request, 'select_room.html', {'form': form})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment