Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
views.py 5.95 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 visits(request):
	visit_list = Visit.objects.order_by('-datetime_begin')
	context = {
		'visit_list': visit_list
	}

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


def visit_details(request, id):
	displayedVisit = Visit.objects.get(id=id)
	visFinished = displayedVisit.is_finished
	displayedSubject = displayedVisit.subject
	listOfAppointments = displayedVisit.appointment_set.all()
	vform = VisitDetailForm(instance=displayedVisit)
	sform = SubjectDetailForm(instance=displayedSubject)

	return wrap_response(request, 'visits/details.html', {'vform': vform, 'sform': sform, 'loApp': listOfAppointments, 'visFinished': visFinished})


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

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


def subject_add(request):
	if request.method == 'POST':
		form = SubjectAddForm(request.POST, request.FILES)
		if form.is_valid():
			form.save()
			return redirect(subjects)
	else:
		form = SubjectAddForm()

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


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

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


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


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


def subject_mark(request, id, as_what):
	who = Subject.objects.get(id=id)
	if as_what == '1':
		who.mark_as_dead()
	elif as_what == '0':
		who.mark_as_rejected()
	return redirect(subject_edit, id=id)


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

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


def doctor_add(request):
	if request.method == 'POST':
		form = WorkerAddForm(request.POST, request.FILES)
		if form.is_valid():
			form.save()
			return redirect(doctors)
	else:
		form = WorkerAddForm()

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



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


def doctor_details(request, doctor_id):
	form = WorkerDetailForm(instance=Worker.objects.get(id=doctor_id))

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


def doctor_availability(request, doctor_id):
	avall = Avaibility.objects.filter(person=doctor_id)

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

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

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


def doctor_availability_delete(request, doctor_id, availability_id):
	availibility = Avaibility.objects.filter(id=availability_id)
	if len(availibility) > 0:
		availibility.delete()
	return redirect(doctoravail, id=doctor_id)


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(datetime_when__gt = datetime.datetime.now())

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

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

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