Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 84 additions & 76 deletions events/viewsv2.py
Original file line number Diff line number Diff line change
Expand Up @@ -648,91 +648,99 @@ def form_valid(self, form, **kwargs):
messages.success(self.request,'STP has been added successfully. Now continue with step 3 "Select Participants " on STPS page. Select the participants from the Master Batch Student List for any one course that you are starting with. This is necessary for receiving certificates.')
return HttpResponseRedirect('/software-training/{0}/training-request/'.format(self.tpid))

class TrainingRequestEditView(CreateView):
form_class = TrainingRequestEditForm
user = None
training = None
@method_decorator(group_required("Organiser"))
def dispatch(self, *args, **kwargs):
if 'pk' in self.kwargs:
self.training = TrainingRequest.objects.get(pk=self.kwargs['pk'])
if not self.training.can_edit():
messages.error(self.request, "Training has attendance, edit is not permitted for training.")
return HttpResponseRedirect('/software-training/training-planner/')
return super(TrainingRequestEditView, self).dispatch(*args, **kwargs)
class TrainingRequestEditView(UpdateView):
model = TrainingRequest
form_class = TrainingRequestEditForm
template_name = "software_training/training_request_edit.html"

def get_form_kwargs(self):
kwargs = super(TrainingRequestEditView, self).get_form_kwargs()
kwargs.update({'training' : self.training})
kwargs.update({'user' : self.request.user})
return kwargs
training = None

def get_context_data(self, **kwargs):
context = super(TrainingRequestEditView, self).get_context_data(**kwargs)
context['training'] = self.training
return context
@method_decorator(group_required("Organiser"))
def dispatch(self, request, *args, **kwargs):
self.training = TrainingRequest.objects.get(pk=kwargs.get('pk'))

def form_valid(self, form, **kwargs):
# Check if all student participate in selected foss
try:
# Check if batch has student?
sb = StudentBatch.objects.get(pk=form.cleaned_data['batch'].id)
selectedBatch = form.cleaned_data['batch']
selectedDept = form.cleaned_data['department']
selectedCourse = form.cleaned_data['course']
if not sb.student_count():
messages.error(self.request, 'There is no student present in this batch.')
return self.form_invalid(form)
training_planner = self.training.training_planner
if not self.training.can_edit():
messages.error(
request,
"Training has attendance, edit is not permitted for training."
)
return HttpResponseRedirect('/software-training/training-planner/')

# Check if batch has already has same foss course?
if not ( (selectedBatch == self.training.batch) and (selectedCourse == self.training.course)):
is_batch_has_course = TrainingRequest.objects.filter(
batch = selectedBatch,
course = selectedCourse,
training_planner_id = training_planner.id
).count()
if is_batch_has_course:
messages.error(self.request, 'This "%s" already taken/requested the selected "%s" course in current semester.' % (selectedBatch, selectedCourse))
return self.form_invalid(form)
# Check if course is full for this semester
if not ( (selectedBatch == self.training.batch) and (selectedDept == self.training.department)):
if training_planner.is_full(selectedDept.id, selectedBatch.id):
messages.error(self.request, 'No. of training requests exceeded for this semester.')
return self.form_invalid(form)
return super(TrainingRequestEditView, self).dispatch(request, *args, **kwargs)

# Assigning values
self.training.department = selectedDept
self.training.batch = selectedBatch
self.training.course_type = form.cleaned_data['course_type']
def get_object(self, queryset=None):
return self.training

if self.training.batch.is_foss_batch_acceptable(selectedCourse):
self.training.sem_start_date = form.cleaned_data['sem_start_date']
self.training.training_start_date = form.cleaned_data['training_start_date']
self.training.training_end_date = form.cleaned_data['training_end_date']
self.training.course_id = selectedCourse
else:
messages.error(self.request, 'This student batch already taken the selected course.')
return self.form_invalid(form)
# save form
self.training.save()
def get_form_kwargs(self):
kwargs = super(TrainingRequestEditView, self).get_form_kwargs()
kwargs['instance'] = self.training
kwargs['training'] = self.training
kwargs['user'] = self.request.user
return kwargs

except:
return self.form_invalid(form)
context = {}
return HttpResponseRedirect('/software-training/select-participants/')
def get_context_data(self, **kwargs):
context = super(TrainingRequestEditView, self).get_context_data(**kwargs)
context['training'] = self.training
return context

def form_valid(self, form):
selected_batch = form.cleaned_data['batch']
selected_dept = form.cleaned_data['department']
selected_course = form.cleaned_data['course']
training_planner = self.training.training_planner

# --- validations ---
if not selected_batch.student_count():
messages.error(self.request, 'There is no student present in this batch.')
return self.form_invalid(form)

def post(self, request, *args, **kwargs):
self.object = None
self.user = request.user
form_class = self.get_form_class()
form = self.get_form(form_class)
if not (
selected_batch == self.training.batch and
selected_course == self.training.course
):
if TrainingRequest.objects.filter(
batch=selected_batch,
course=selected_course,
training_planner_id=training_planner.id
).exists():
messages.error(
self.request,
'This "%s" already taken/requested the selected "%s" course in current semester.'
% (selected_batch, selected_course)
)
return self.form_invalid(form)

if not (
selected_batch == self.training.batch and
selected_dept == self.training.department
):
if training_planner.is_full(selected_dept.id, selected_batch.id):
messages.error(
self.request,
'No. of training requests exceeded for this semester.'
)
return self.form_invalid(form)

if not selected_batch.is_foss_batch_acceptable(selected_course):
messages.error(
self.request,
'This student batch already taken the selected course.'
)
return self.form_invalid(form)

if form.is_valid():
return self.form_valid(form)
else:
return self.form_invalid(form)
return HttpResponseRedirect('/software-training/select-participants/')
# --- update ---
training = self.training
training.department = selected_dept
training.batch = selected_batch
training.course_type = form.cleaned_data['course_type']
training.sem_start_date = form.cleaned_data['sem_start_date']
training.training_start_date = form.cleaned_data['training_start_date']
training.training_end_date = form.cleaned_data['training_end_date']
training.course = selected_course
training.fossmdlmap = form.cleaned_data.get('fossmdlmap')
training.save()

return HttpResponseRedirect('/software-training/select-participants/')


class TrainingAttendanceListView(ListView):
Expand Down