def membership_import_confirm(request, id): """ Confirm the membership import and continue with the process. This can only be accessed via a hidden post form from the preview page. That will hold the original mappings selected by the user. """ if not request.user.profile.is_superuser: raise Http403 memport = get_object_or_404(MembershipImport, pk=id) if request.method == "POST": form = ImportMapForm(request.POST, memport=memport) if form.is_valid(): cleaned_data = form.cleaned_data EventLog.objects.log() if not settings.CELERY_IS_ACTIVE: result = ImportMembershipsTask() memberships, stats = result.run(memport, cleaned_data) return render_to_response('memberships/import-confirm.html', { 'memberships': memberships, 'stats': stats, 'datetime': datetime, }, context_instance=RequestContext(request)) else: result = ImportMembershipsTask.delay(memport, cleaned_data) return redirect('membership_import_status', result.task_id) else: return redirect('membership_import_preview', memport.id)
def membership_import_preview(request, id): """ This will generate a form based on the uploaded CSV for field mapping. A preview will be generated based on the mapping given. """ if not request.user.profile.is_superuser: raise Http403 memport = get_object_or_404(MembershipImport, pk=id) if request.method == 'POST': form = ImportMapForm(request.POST, memport=memport) if form.is_valid(): #show the user a preview based on the mapping cleaned_data = form.cleaned_data file_path = memport.get_file().file.name #file_path = os.path.join(settings.MEDIA_ROOT, memport.get_file().file.name) memberships, stats = parse_mems_from_csv( file_path, cleaned_data, membership_import=memport ) EventLog.objects.log() # return the form to use it for the confirm view template_name = 'memberships/import-preview.html' return render_to_response(template_name, { 'memberships': memberships, 'stats': stats, 'memport': memport, 'form': form, 'datetime': datetime, }, context_instance=RequestContext(request)) else: form = ImportMapForm(memport=memport) template_name = 'memberships/import-map-fields.html' return render_to_response(template_name, { 'form': form, 'memport': memport, 'datetime': datetime, }, context_instance=RequestContext(request))