def create_or_update_application(request, learning_container_year_id): tutor = mdl_base.tutor.find_by_user(request.user) global_id = tutor.person.global_id learning_container_year = mdl_base.learning_container_year.find_by_id(learning_container_year_id) can_be_saved = True if request.method == 'POST': form = ApplicationForm(learning_container_year=learning_container_year, data=request.POST) if form.is_valid(): application = form.cleaned_data try: tutor_application.create_or_update_application(global_id, application) tutor_application.set_pending_flag(global_id, application, tutor_application_epc.UPDATE_OPERATION) # Send message to EPC tutor_application_epc.send_message(tutor_application_epc.UPDATE_OPERATION, global_id, application) except Exception as e: error_msg = e.args[0] messages.add_message(request, messages.ERROR, error_msg) return redirect('applications_overview') else: inital_data = tutor_application.get_application(global_id, learning_container_year) can_be_saved = tutor_application.can_be_updated(inital_data) if inital_data else True form = ApplicationForm( initial=inital_data, learning_container_year=learning_container_year, ) return layout.render(request, "application_form.html", { 'a_tutor': tutor, 'form': form, 'learning_container_year': learning_container_year, 'can_be_saved': can_be_saved })