poli_planning/polyclinic_scheduling/apps/schedule/views.py

50 lines
1.5 KiB
Python

from django.shortcuts import render, redirect
from django.views.generic.list import ListView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.auth.decorators import login_required
from .models import Schedule
from .forms import ScheduleForm
import json
# Create your views here.
class ScheduleListView(LoginRequiredMixin,ListView):
model = Schedule
paginate_by = 10
def get_queryset(self):
return Schedule.objects.filter(employee=self.request.user.employee).order_by('-created_at')
@login_required
def new_or_update_study(request, schedule = None):
template_name = 'schedule/schedule_new.html'
if request.method == 'POST':
schedule_form = ScheduleForm(request.POST)
if schedule_form.is_valid():
new_schedule = Schedule()
try:
new_schedule.planning_source = json.loads(schedule_form.cleaned_data['json'])
except json.JSONDecodeError as ex:
new_schedule.planning_source = json.loads(json.dumps({'error': str(ex)}))
new_schedule.status = Schedule.ScheduleStatus.INVALID
new_schedule.employee = request.user.employee
new_schedule.name = schedule_form.cleaned_data['name']
new_schedule.email = schedule_form.cleaned_data['email']
new_schedule.save()
return redirect('schedule:list')
else:
schedule_form = ScheduleForm()
return render(request, template_name, {
'form' : schedule_form,
})