def upload_samplegroups(request): if request.method == "POST": form = samples.forms.UploadSampleGroupFileForm(request.POST, request.FILES) if form.is_valid(): from readfromexcel import ReadFromExcel try: excel = ReadFromExcel(request.FILES["file"].read()) except Exception: return HttpResponse("problem with input data") try: jsondata = excel.json_from_sheets() except Exception as e: return HttpResponse("Cannot upload data: " + str(e)) from django.core.serializers import deserialize from django.core.serializers.base import DeserializationError try: for obj in deserialize("json", jsondata, ignorenonexistent=True): obj.save() """ Call the newly created AQISSampleGroup object's save() method """ obj.object.save() except DeserializationError as error: return HttpResponse("problem with input data: {}".format(error)) return HttpResponseRedirect(reverse_lazy("samplegroup_index")) else: return HttpResponse("invalid form data") else: form = samples.forms.UploadSampleGroupFileForm() return render(request, "upload_samplegroups.html", {"form": form})
def upload_c14(request): if request.method == "POST": form = samples.forms.UploadC14FileForm(request.POST, request.FILES) if form.is_valid(): from readfromexcel import ReadFromExcel try: excel = ReadFromExcel(request.FILES["file"].read()) except Exception: return HttpResponse("problem with input data") jsondata = excel.json_from_sheets() from django.core.serializers import deserialize from django.core.serializers.base import DeserializationError try: for obj in deserialize("json", jsondata, ignorenonexistent=True): if not Sample.objects.filter( acad_num=obj.object.sample_id): obj.object.sample = None try: existing = C14.objects.get(slug="{}-{}".format( obj.object.centre, obj.object.centre_num)) obj.object.pk = existing.id except Exception: pass obj.save() obj.object.save() except DeserializationError as error: return HttpResponse( "problem with input data: {}".format(error)) return HttpResponseRedirect(reverse_lazy("c14_index")) else: return HttpResponse("invalid form data") else: form = samples.forms.UploadC14FileForm() return render(request, "upload_c14.html", {"form": form})
def upload_samplegroups(request): if request.method == "POST": form = samples.forms.UploadSampleGroupFileForm(request.POST, request.FILES) if form.is_valid(): from readfromexcel import ReadFromExcel try: excel = ReadFromExcel(request.FILES["file"].read()) except Exception: return HttpResponse("problem with input data") try: jsondata = excel.json_from_sheets() except Exception as e: return HttpResponse("Cannot upload data: " + str(e)) from django.core.serializers import deserialize from django.core.serializers.base import DeserializationError try: for obj in deserialize("json", jsondata, ignorenonexistent=True): obj.save() """ Call the newly created AQISSampleGroup object's save() method """ obj.object.save() except DeserializationError as error: return HttpResponse( "problem with input data: {}".format(error)) return HttpResponseRedirect(reverse_lazy("samplegroup_index")) else: return HttpResponse("invalid form data") else: form = samples.forms.UploadSampleGroupFileForm() return render(request, "upload_samplegroups.html", {"form": form})
def upload_c14(request): if request.method == "POST": form = samples.forms.UploadC14FileForm(request.POST, request.FILES) if form.is_valid(): from readfromexcel import ReadFromExcel try: excel = ReadFromExcel(request.FILES["file"].read()) except Exception: return HttpResponse("problem with input data") jsondata = excel.json_from_sheets() from django.core.serializers import deserialize from django.core.serializers.base import DeserializationError try: for obj in deserialize("json", jsondata, ignorenonexistent=True): if not Sample.objects.filter(acad_num=obj.object.sample_id): obj.object.sample = None try: existing = C14.objects.get(slug="{}-{}".format(obj.object.centre, obj.object.centre_num)) obj.object.pk = existing.id except Exception: pass obj.save() obj.object.save() except DeserializationError as error: return HttpResponse("problem with input data: {}".format(error)) return HttpResponseRedirect(reverse_lazy("c14_index")) else: return HttpResponse("invalid form data") else: form = samples.forms.UploadC14FileForm() return render(request, "upload_c14.html", {"form": form})
def upload_samples(request): if request.method == "POST": form = samples.forms.UploadSamplesFileForm(request.POST, request.FILES) if form.is_valid(): """ May need better handling than read() if we ever have to deal with a huge ingest file. """ from readfromexcel import ReadFromExcel try: excel = ReadFromExcel(request.FILES["file"].read()) except Exception: return HttpResponse("problem with input data") try: jsondata = excel.json_from_sheets() except Exception as e: return HttpResponse("Cannot upload data: " + str(e)) if not request.user.is_superuser and _check_sample_pk(jsondata): return HttpResponse("Your user permission does not allow to have acad_num in uploading spreadsheet.") newobjs = [] rejects = [] force_update = False if request.user.is_superuser and form.cleaned_data["force_update"]: force_update = True newgroup = False from django.core.serializers import deserialize from django.core.serializers.base import DeserializationError try: for obj in deserialize("json", jsondata, ignorenonexistent=True): if Sample.objects.filter(acad_num=obj.object.pk) and not force_update: rejects.append(obj.object) else: newobjs.append(obj.object) if obj.object.group_id and not AQISSampleGroup.objects.filter(group_num=obj.object.group_id): AQISSampleGroup.objects.create(group_num=obj.object.group_id) except DeserializationError as error: return HttpResponse("problem with input data following ACAD{}: {}".format(obj.object.acad_num, error)) if form.cleaned_data["makeagroup"] and newobjs: newgroup = AQISSampleGroup.objects.create() for newobj in newobjs: if not newobj.group: newobj.group = newgroup newgroup.description = form.cleaned_data["group_description"] newgroup.origin = form.cleaned_data["group_origin"] newgroup.quantity = len(newobjs) newgroup.save() for newobj in newobjs: newobj.save() context = {"sample_list": newobjs, "reject_list": rejects} if newgroup: context["newgroup"] = newgroup return render(request, "upload_samples_results.html", context) else: return HttpResponse("invalid form data") else: form = samples.forms.UploadSamplesFileForm() if not request.user.is_superuser: del form.fields['force_update'] return render(request, "upload_samples.html", {"form": form})
def upload_samples(request): if request.method == "POST": form = samples.forms.UploadSamplesFileForm(request.POST, request.FILES) if form.is_valid(): """ May need better handling than read() if we ever have to deal with a huge ingest file. """ from readfromexcel import ReadFromExcel try: excel = ReadFromExcel(request.FILES["file"].read()) except Exception: return HttpResponse("problem with input data") try: jsondata = excel.json_from_sheets() except Exception as e: return HttpResponse("Cannot upload data: " + str(e)) if not request.user.is_superuser and _check_sample_pk(jsondata): return HttpResponse( "Your user permission does not allow to have acad_num in uploading spreadsheet." ) newobjs = [] rejects = [] force_update = False if request.user.is_superuser and form.cleaned_data["force_update"]: force_update = True newgroup = False from django.core.serializers import deserialize from django.core.serializers.base import DeserializationError try: for obj in deserialize("json", jsondata, ignorenonexistent=True): if Sample.objects.filter( acad_num=obj.object.pk) and not force_update: rejects.append(obj.object) else: newobjs.append(obj.object) if obj.object.group_id and not AQISSampleGroup.objects.filter( group_num=obj.object.group_id): AQISSampleGroup.objects.create( group_num=obj.object.group_id) except DeserializationError as error: return HttpResponse( "problem with input data following ACAD{}: {}".format( obj.object.acad_num, error)) if form.cleaned_data["makeagroup"] and newobjs: newgroup = AQISSampleGroup.objects.create() for newobj in newobjs: if not newobj.group: newobj.group = newgroup newgroup.description = form.cleaned_data["group_description"] newgroup.origin = form.cleaned_data["group_origin"] newgroup.quantity = len(newobjs) newgroup.save() for newobj in newobjs: newobj.save() context = {"sample_list": newobjs, "reject_list": rejects} if newgroup: context["newgroup"] = newgroup return render(request, "upload_samples_results.html", context) else: return HttpResponse("invalid form data") else: form = samples.forms.UploadSamplesFileForm() if not request.user.is_superuser: del form.fields['force_update'] return render(request, "upload_samples.html", {"form": form})