Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
views.py 5.19 KiB
from django.shortcuts import redirect, render
from django.http import HttpResponse
from django.template import loader
from django.views import generic
from .models import *
from .forms import *
from .auth import * # Own wrapper for django logging in/out
from django.forms import modelformset_factory
from django.shortcuts import render
import collections

def index(request):
	if request.user.is_authenticated():
		return redirect(assignments)
	return redirect(login)


def login(request):
	context = {
		'state' : 'initial'
	}
	if request.GET and request.GET.get('error'):
		context['state'] = request.GET.get('error')

	if request.method == "POST" and request.POST:
		state, message = do_login(request)
		if state == True:
			return redirect(assignments)
		else:
			return redirect('/login?error=' + message)

	return render(request, "login.html", context)


"""
Saturates response with information about logged user
"""
def wrap_response(request, template, params):
	person, role = Worker.get_details(request.user)

	final_params = params.copy()
	final_params.update({
		'person' : person,
		'role': role
	})

	return render(request, template, final_params)


def logout(request):
	state, message = do_logout(request)
	return redirect('/login?error=' + message)


def assignments(request):
	return wrap_response(request, 'assignments/index.html', {})


def subjects(request):
	subjects_list = Subject.objects.order_by('-lastName')
	context = {
		'subjects_list': subjects_list
	}

	return wrap_response(request, 'subjects/index.html', context)


def subjectadd(request):
    subjectFormSet = modelformset_factory(Subject , fields='__all__')
    if request.method == 'POST':
        formset = subjectFormSet(request.POST, request.FILES)
        if formset.is_valid():
			formset.save()
			return redirect(subjects)
    else:
		formset = subjectFormSet(queryset=Subject.objects.none())

    return wrap_response(request, 'subjects/add.html', {'formset': formset})


def subjectdet(request, ids):
	form = SubjectDetailForm(instance=Subject.objects.get(id=ids))

	return wrap_response(request, 'subjects/details.html', {'form': form})


def subjectedit(request, ids):
	if request.method == 'POST':
		form = SubjectEditForm(request.POST, request.FILES, instance=Subject.objects.get(id=ids))
		if form.is_valid():
			form.save()
			return redirect(subjects)
	else:
		form = SubjectEditForm(instance=Subject.objects.get(id=ids))
	return wrap_response(request, 'subjects/edit.html', {'form': form})


def subjectdelete(request, ids):
    if request.method == 'POST':
		Subject.objects.get(id=ids).delete()
		return redirect(subjects)
    else:
		form = SubjectEditForm(instance=Subject.objects.get(id=ids))
    return wrap_response(request, 'subjects/delete.html', {'form': form})


def doctors(request):
	doctors_list = Worker.objects.order_by('-lastName')
	context = {
		'doctors_list': doctors_list
	}

	return wrap_response(request, "doctors/index.html", context)


def doctoradd(request):
    WorkerFormSet = modelformset_factory(Worker , fields='__all__')
    if request.method == 'POST':
        formset = WorkerFormSet(request.POST, request.FILES)
        if formset.is_valid():
			formset.save()
			return redirect(doctors)
    else:
		formset = WorkerFormSet(queryset=Worker.objects.none())
    return wrap_response(request, 'doctors/add.html', {'formset': formset})


def doctoredit(request, ids):
	if request.method == 'POST':
		form = WorkerEditForm(request.POST, request.FILES, instance=Worker.objects.get(id=ids))
		if form.is_valid():
			form.save()
			return redirect(doctors)
	else:
		form = WorkerEditForm(instance=Worker.objects.get(id=ids))
	return wrap_response(request, 'doctors/edit.html', {'form': form})


def doctordetails(request, ids):
	form = WorkerDetailForm(instance=Worker.objects.get(id=ids))

	return wrap_response(request, 'doctors/details.html', {'form': form})


def doctoravail(request, ids):
	avall = Avaibility.objects.filter(person = ids)

	avmon = avall.filter(dayNo=1)
	avtue = avall.filter(dayNo=2)
	avwed = avall.filter(dayNo=3)
	avthu = avall.filter(dayNo=4)
	avfri = avall.filter(dayNo=5)
	avsat = avall.filter(dayNo=6)

	context = {
		'avmon': avmon,
		'avtue': avtue,
		'avwed': avwed,
		'avthu': avthu,
		'avfri': avfri,
		'avsat': avsat,
		'ids': ids
	}

	return wrap_response(request, "doctors/availdex.html", context)


def availdelete(request, id):
	return redirect(doctors)


def equipment_def(request):
	equipment_list = Item.objects.order_by('-name')
	context = {
		'equipment_list': equipment_list
	}

	return wrap_response(request, "eqdef/index.html", context)


def equipment_and_rooms(request):
	return wrap_response(request, "equipment_and_rooms/index.html", {})


def mail_templates(request):
	return wrap_response(request, "mail_templates/index.html", {})

def assignments(request):
	planning_list = Appointment.objects.none()
	approaching_list = Appointment.objects.filter(appDateTime__gt = datetime.datetime.now())

	context = {
		'planning_list': planning_list,
		'approaching_list': approaching_list
	}

	return wrap_response(request, "assignments/index.html",context)

def assignmentdetails(request, ids):
	form = AppointmentDetailForm(instance=Appointment.objects.get(id=ids))
	return wrap_response(request, 'assignments/details.html', {'form': form})