Skip to content

Commit b106255

Browse files
committed
initialize ui plugin structure
1 parent b95c3b4 commit b106255

File tree

4 files changed

+87
-0
lines changed

4 files changed

+87
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import {APIObject} from "/static/base_viewer/js/geospaas_api.js"
2+
3+
4+
5+
document.addEventListener("DOMContentLoaded", function() {
6+
let host = `${window.location.protocol}//${window.location.host}`;
7+
fetch(`${host}/api/harvesting/providers/`)
8+
.then(response => response.json())
9+
.then(page => {
10+
let selector = document.getElementById("providers_selector");
11+
for(let provider_json of page.results) {
12+
let option = document.createElement("option");
13+
option.value = provider_json.id;
14+
option.text = provider_json.name;
15+
selector.add(option);
16+
}
17+
})
18+
.catch(error => console.log(`${error}: Failed to get providers`));
19+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{% extends "base_viewer/geospaas.html" %}
2+
{% block geospaas_tab_contents %}
3+
<div id="harvesting" class="geospaas_app">
4+
{% load static %}
5+
<script src='{% static "geospaas_harvesting/js/harvesting.js" %}' type=module></script>
6+
<div id="providers">
7+
<label for="provider">Provider:</label>
8+
<select name="provider" id="providers_selector"></select>
9+
</div>
10+
</div>
11+
{% endblock %}

geospaas_harvesting/web_api.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import rest_framework.serializers
2+
import rest_framework_filters
3+
from django_filters.rest_framework.filters import CharFilter
4+
from django.db import models
5+
from rest_framework import routers
6+
from rest_framework.viewsets import ModelViewSet
7+
8+
import geospaas_harvesting.models
9+
10+
11+
class ProviderSerializer(rest_framework.serializers.HyperlinkedModelSerializer):
12+
"""Serializer for Provider objects"""
13+
class Meta:
14+
model = geospaas_harvesting.models.Provider
15+
fields = ['id', 'url', 'name', 'normalizer_name', 'crawler_name', 'config']
16+
extra_kwargs = {
17+
'url': {'view_name': 'base_viewer:api:harvesting:provider-detail'}
18+
}
19+
20+
class ProviderFilter(rest_framework_filters.FilterSet):
21+
"""Filterset for providers"""
22+
class Meta:
23+
model = geospaas_harvesting.models.Provider
24+
fields = {
25+
'name': '__all__',
26+
'normalizer_name': '__all__',
27+
'crawler_name': '__all__',
28+
'config': '__all__',
29+
}
30+
filter_overrides = {
31+
models.JSONField: {
32+
'filter_class': CharFilter
33+
}
34+
}
35+
36+
class ProviderViewSet(ModelViewSet):
37+
"""ViewSet for Providers"""
38+
queryset = geospaas_harvesting.models.Provider.objects.all()
39+
serializer_class = ProviderSerializer
40+
filter_class = ProviderFilter
41+
42+
43+
router = routers.DefaultRouter()
44+
router.register(r'providers', ProviderViewSet)
45+
46+
urlpatterns = router.urls

geospaas_harvesting/web_ui.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from django.urls import path
2+
3+
from geospaas.base_viewer.views import GeoSPaaSView
4+
5+
6+
class HarvestingView(GeoSPaaSView):
7+
""""""
8+
template_name = 'geospaas_harvesting/harvesting.html'
9+
tab_label = 'Harvesting'
10+
11+
urlpatterns = [path('', HarvestingView.as_view(), name='geospaas_harvesting')]

0 commit comments

Comments
 (0)