コード例 #1
0
def add_rapid_event_types(apps, schema_editor):
    RapidNHEvent.init()
    RapidNHEventType.init()
    events = [{
        "name": "earthquake",
        "display_name": "Earthquake"
    }, {
        "name": "landslide",
        "display_name": "Landslide"
    }, {
        "name": "tsunami",
        "display_name": "Tsunami"
    }, {
        "name": "flood",
        "display_name": "Flood"
    }, {
        "name": "hurricane",
        "display_name": "Hurricane/Typhoon"
    }, {
        "name": "tornado",
        "display_name": "Tornado"
    }]

    s = RapidNHEventType.search()

    for ev in events:
        q = s.query("match", name=ev["name"])
        if q.count() > 0:
            continue
        et = RapidNHEventType(**ev)
        et.save()
コード例 #2
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
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)
コード例 #3
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def admin_delete_event(request, event_id):

    metrics_logger.info('Rapid Admin delete event',
                        extra={
                            'user':
                            request.user.username,
                            'sessionId':
                            getattr(request.session, 'session_key', ''),
                            'operation':
                            'rapid_admin_delete_event'
                        })

    try:
        event = RapidNHEvent.get(event_id)
    except:
        return HttpResponseNotFound()
    if request.method == 'POST':
        image_uuid = event.main_image_uuid
        try:
            os.remove(
                os.path.join(settings.DESIGNSAFE_UPLOAD_PATH, 'RAPID',
                             'images', image_uuid))
        except:
            pass
        event.delete(refresh=True)
        return HttpResponseRedirect(reverse('designsafe_rapid:admin'))
コード例 #4
0
ファイル: views.py プロジェクト: letaniaferreira/portal
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)
コード例 #5
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def admin_event_datasets(request, event_id):
    try:
        event = RapidNHEvent.get(event_id)
    except:
        return HttpResponseNotFound()

    context = {"event": event}
    return render(request, 'designsafe/apps/rapid/admin_event_datasets.html',
                  context)
コード例 #6
0
ファイル: views.py プロジェクト: letaniaferreira/portal
def get_events(request):
    s = RapidNHEvent.search()
    try:
        results = s.sort("-event_date").execute(ignore_cache=True)
    except (TransportError, ConnectionTimeout) as err:
        if getattr(err, 'status_code', 500) == 404:
            raise
        results = s.sort("-event_date").execute(ignore_cache=True)

    out = [h.to_dict() for h in results.hits]
    return JsonResponse(out, safe=False)
コード例 #7
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def admin_event_delete_dataset(request, event_id, dataset_id):
    try:
        event = RapidNHEvent.get(event_id)
    except:
        return HttpResponseNotFound()
    if request.method == 'POST':
        event.datasets = [ds for ds in event.datasets if ds.id != dataset_id]
        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'))
コード例 #8
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def admin(request):

    metrics_logger.info('Rapid Admin index',
                        extra={
                            'user':
                            request.user.username,
                            'sessionId':
                            getattr(request.session, 'session_key', ''),
                            'operation':
                            'rapid_admin_index_view'
                        })

    s = RapidNHEvent.search()
    s = s.sort("-event_date")
    total = s.count()
    results = [h for h in s[0:total]]
    context = {}
    context["rapid_events"] = results
    return render(request, 'designsafe/apps/rapid/admin.html', context)
コード例 #9
0
ファイル: views.py プロジェクト: letaniaferreira/portal
def admin(request):

    metrics_logger.info('Rapid Admin index',
                 extra = {
                     'user': request.user.username,
                     'sessionId': getattr(request.session, 'session_key', ''),
                     'operation': 'rapid_admin_index_view'
                 })

    s = RapidNHEvent.search()
    try:
        results = s.execute(ignore_cache=True)
    except (TransportError, ConnectionTimeout) as err:
        if getattr(err, 'status_code', 500) == 404:
            raise
        results = s.execute(ignore_cache=True)




    context = {}
    context["rapid_events"] = results
    return render(request, 'designsafe/apps/rapid/admin.html', context)
コード例 #10
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def get_events(request):
    s = RapidNHEvent.search()
    s = s.sort("-event_date")
    total = s.count()
    out = [h.to_dict() for h in s[0:total]]
    return JsonResponse(out, safe=False)
コード例 #11
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def admin_edit_event(request, event_id):
    try:
        event = RapidNHEvent.get(event_id)
    except:
        return HttpResponseNotFound()

    metrics_logger.info('Rapid Admin edit event',
                        extra={
                            'user':
                            request.user.username,
                            'sessionId':
                            getattr(request.session, 'session_key', ''),
                            'operation':
                            'rapid_admin_edit_event'
                        })

    data = event.to_dict()
    data["lat"] = event.location.lat
    data["lon"] = event.location.lon
    form = rapid_forms.RapidNHEventForm(request.POST or data, request.FILES
                                        or None)
    q = RapidNHEventType.search()
    try:
        event_types = q.execute()
    except (TransportError, ConnectionTimeout) as err:
        if getattr(err, 'status_code', 500) == 404:
            raise
        event_types = q.execute(ignore_cache=True)

    options = [(et.name, et.display_name) for et in event_types]
    form.fields["event_type"].choices = options
    form.fields['lat'].initial = event.location["lat"]
    form.fields['lon'].initial = event.location["lon"]
    if request.method == 'POST':
        if form.is_valid():
            event.event_date = form.cleaned_data["event_date"]
            event.location = {
                "lat": form.cleaned_data["lat"],
                "lon": form.cleaned_data["lon"]
            }
            event.title = form.cleaned_data["title"]
            event.location_description = form.cleaned_data[
                "location_description"]
            event.event_type = form.cleaned_data["event_type"]
            if request.FILES:
                old_image_uuid = event.main_image_uuid
                try:
                    image_uuid = str(uuid.uuid1())
                    f = request.FILES["image"]
                    thumb = thumbnail_image(f)
                    handle_uploaded_image(thumb, image_uuid)
                    event.main_image_uuid = image_uuid
                except:
                    return HttpResponseBadRequest("Hmm, a bad file perhaps?")
                if old_image_uuid:
                    os.remove(
                        os.path.join(settings.DESIGNSAFE_UPLOAD_PATH, 'RAPID',
                                     'images', old_image_uuid))
            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["form"] = form
            return render(request,
                          'designsafe/apps/rapid/admin_create_event.html',
                          context)
    else:
        context = {}
        context["form"] = form
        context["event"] = event
        return render(request, 'designsafe/apps/rapid/admin_edit_event.html',
                      context)
コード例 #12
0
ファイル: views.py プロジェクト: DesignSafe-CI/portal
def admin_create_event(request):
    form = rapid_forms.RapidNHEventForm(request.POST or None, request.FILES
                                        or None)
    q = RapidNHEventType.search()
    try:
        event_types = q.execute(ignore_cache=True)
    except (TransportError, ConnectionTimeout) as err:
        if getattr(err, 'status_code', 500) == 404:
            raise
        event_types = q.execute(ignore_cache=True)

    options = [(et.name, et.display_name) for et in event_types]
    form.fields["event_type"].choices = options

    metrics_logger.info('Rapid Admin create event',
                        extra={
                            'user':
                            request.user.username,
                            'sessionId':
                            getattr(request.session, 'session_key', ''),
                            'operation':
                            'rapid_admin_create_event'
                        })

    if request.method == 'POST':
        if form.is_valid():
            ev = RapidNHEvent()
            ev.location_description = form.cleaned_data["location_description"]
            ev.location = {
                "lat": form.cleaned_data["lat"],
                "lon": form.cleaned_data["lon"]
            }
            ev.event_date = form.cleaned_data["event_date"]
            ev.event_type = form.cleaned_data["event_type"]
            ev.title = form.cleaned_data["title"]
            ev.created_date = datetime.utcnow()
            if request.FILES:
                try:
                    image_uuid = str(uuid.uuid1())
                    f = request.FILES["image"]
                    thumb = thumbnail_image(f)
                    handle_uploaded_image(thumb, image_uuid)
                    ev.main_image_uuid = image_uuid
                except:
                    return HttpResponseBadRequest("Hmm, a bad file perhaps?")
            try:
                ev.save(refresh=True)
            except (TransportError, ConnectionTimeout) as err:
                if getattr(err, 'status_code', 500) == 404:
                    raise
                ev.save(refresh=True)

            return HttpResponseRedirect(reverse('designsafe_rapid:admin'))
        else:
            context = {}
            context["form"] = form
            return render(request,
                          'designsafe/apps/rapid/admin_create_event.html',
                          context)
    else:
        context = {}
        context["form"] = form
        return render(request, 'designsafe/apps/rapid/admin_create_event.html',
                      context)