Esempio n. 1
0
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})
Esempio n. 2
0
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})
Esempio n. 3
0
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})
Esempio n. 4
0
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})
Esempio n. 5
0
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})
Esempio n. 6
0
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})