Exemplo n.º 1
0
def admin_event_add_dataset(request, event_id):
    try:
        event = RapidNHEvent.get(event_id)
    except:
        return HttpResponseNotFound()

    form = rapid_forms.RapidNHEventDatasetForm(request.POST or None)

    if request.method == 'POST':
        if form.is_valid():
            data = form.cleaned_data
            data["id"] = str(uuid.uuid1())
            event.datasets.append(data)
            try:
                event.save(refresh=True)
            except (TransportError, ConnectionTimeout) as err:
                if getattr(err, 'status_code', 500) == 404:
                    raise
                event.save(refresh=True)

            return HttpResponseRedirect(reverse('designsafe_rapid:admin'))
    else:
        context = {}
        context["event"] = event
        context["form"] = form
        return render(request,
                      'designsafe/apps/rapid/admin_event_add_dataset.html',
                      context)
Exemplo n.º 2
0
def admin_event_edit_dataset(request, event_id, dataset_id):
    try:
        event = RapidNHEvent.get(event_id)
    except:
        return HttpResponseNotFound()

    dataset = next((d for d in event.datasets if d.id == dataset_id), None)
    if not dataset:
        return HttpResponseNotFound()

    form = rapid_forms.RapidNHEventDatasetForm(request.POST or dataset.to_dict())

    if request.method == 'POST':
        if form.is_valid():
            dataset["doi"] = form.cleaned_data["doi"]
            dataset["title"] = form.cleaned_data["title"]
            dataset["url"] = form.cleaned_data["url"]

            event.datasets = [d for d in event.datasets if d["id"] != dataset["id"]]
            event.datasets.append(dataset)
            try:
                event.save(refresh=True)
            except (TransportError, ConnectionTimeout) as err:
                if getattr(err, 'status_code', 500) == 404:
                    raise
                event.save(refresh=True)

            return HttpResponseRedirect(reverse('designsafe_rapid:admin'))

    else:
        context = {}
        context["event"] = event
        context["form"] = form
        return render(request, 'designsafe/apps/rapid/admin_event_edit_dataset.html', context)