def add_shift_view(request, semester): """ View for the workshift manager to create new types of workshifts. """ page_name = "Add Workshift" pools = WorkshiftPool.objects.filter(semester=semester) full_management = utils.can_manage(request.user, semester=semester) if not full_management: pools = pools.filter(managers__incumbent__user=request.user) if not pools.count(): messages.add_message(request, messages.ERROR, MESSAGES['ADMINS_ONLY']) return HttpResponseRedirect(wurl('workshift:view_semester', sem_url=semester.sem_url)) if full_management: add_type_form = WorkshiftTypeForm( request.POST if "add_type" in request.POST else None, ) else: add_type_form = None add_instance_form = WorkshiftInstanceForm( request.POST if "add_instance" in request.POST else None, pools=pools, semester=semester, ) if WorkshiftType.objects.count(): add_shift_form = RegularWorkshiftForm( request.POST if "add_shift" in request.POST else None, pools=pools, semester=semester, ) else: add_shift_form = None if add_type_form and add_type_form.is_valid(): add_type_form.save() return HttpResponseRedirect(wurl("workshift:manage", sem_url=semester.sem_url)) elif add_instance_form and add_instance_form.is_valid(): add_instance_form.save() return HttpResponseRedirect(wurl("workshift:manage", sem_url=semester.sem_url)) elif add_shift_form and add_shift_form.is_valid(): add_shift_form.save() return HttpResponseRedirect(wurl("workshift:manage", sem_url=semester.sem_url)) return render_to_response("add_shift.html", { "page_name": page_name, "add_type_form": add_type_form, "add_instance_form": add_instance_form, "add_shift_form": add_shift_form, }, context_instance=RequestContext(request))
def edit_type_view(request, pk): """ View for a manager to edit the details of a particular WorkshiftType. """ shift = get_object_or_404(WorkshiftType, pk=pk) edit_form = WorkshiftTypeForm( request.POST or None, instance=shift, ) if edit_form.is_valid(): shift = edit_form.save() return HttpResponseRedirect(wurl('workshift:view_type', pk=pk)) page_name = "Edit " + shift.title return render_to_response("edit_type.html", { "page_name": page_name, "shift": shift, "edit_form": edit_form, }, context_instance=RequestContext(request))
def edit_type_view(request, pk): """ View for a manager to edit the details of a particular WorkshiftType. """ wtype = get_object_or_404(WorkshiftType, pk=pk) if "delete" in request.POST: pass edit_form = WorkshiftTypeForm( request.POST if "edit" in request.POST else None, instance=wtype, prefix="edit", ) shifts_formset = RegularWorkshiftFormSet( request.POST if "edit" in request.POST else None, prefix="shifts", queryset=RegularWorkshift.objects.filter( workshift_type=wtype, ), ) if edit_form.is_valid() and shifts_formset.is_valid(): wtype = edit_form.save() shifts_formset.save(wtype) return HttpResponseRedirect(wtype.get_view_url()) page_name = "Edit {0}".format(wtype.title) return render_to_response("edit_type.html", { "page_name": page_name, "shift": wtype, "edit_form": edit_form, "shifts_formset": shifts_formset, }, context_instance=RequestContext(request))