Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/status board #708

Open
wants to merge 16 commits into
base: develop
Choose a base branch
from
13 changes: 12 additions & 1 deletion api/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from collections import OrderedDict

from django.contrib.auth.models import AnonymousUser

from rest_framework_json_api import serializers
Expand Down Expand Up @@ -139,6 +138,18 @@ class Meta:
fields = ('name', 'home_page', 'long_title', 'icon')


class HarvestLogSerializer(ShareModelSerializer):
class Meta:
model = models.HarvestLog
fields = '__all__'


class SourceConfigSerializer(ShareModelSerializer):
class Meta:
model = models.SourceConfig
fields = '__all__'


class SiteBannerSerializer(ShareModelSerializer):
color = serializers.SerializerMethodField()

Expand Down
2 changes: 2 additions & 0 deletions api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ def register_url(self, subclass, viewset):
register_route(r'rawdata', views.RawDatumViewSet)
register_route(r'user', views.ShareUserViewSet)
register_route(r'sources', views.SourceViewSet)
register_route(r'harvest_logs', views.HarvestLogViewSet)
register_route(r'source_configs', views.SourceConfigViewSet)

router.register(r'normalizeddata', views.NormalizedDataViewSet, base_name='normalizeddata')

Expand Down
2 changes: 2 additions & 0 deletions api/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@
from .registration import * # noqa
from .schema import * # noqa
from .banner import * # noqa
from .harvest_logs import * # noqa
from .source_config import * # noqa
24 changes: 24 additions & 0 deletions api/views/harvest_logs.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
from django_filters.filters import MultipleChoiceFilter

from share.models import HarvestLog
from share.util import IDObfuscator

from api.serializers import HarvestLogSerializer
# from api.views import ShareObjectViewSet


class SourceConfigFilterBackend(MultipleChoiceFilter):
def filter_queryset(self, request, queryset, view):
if 'source_config_id' in request.GET:
decoded = IDObfuscator.decode_id(request.GET['source_config_id'])
queryset = queryset.filter(source_config_id=decoded)
if 'status' in request.GET:
queryset = queryset.filter(status__in=request.GET.getlist('status'))
return queryset


class HarvestLogViewSet(ShareObjectViewSet):
serializer_class = HarvestLogSerializer
queryset = HarvestLog.objects.all()
filter_backends = (SourceConfigFilterBackend, )
filter_fields = ('source_config_id', 'status',)
6 changes: 3 additions & 3 deletions api/views/share.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@
from django.views.decorators.http import require_GET
from django.views.generic.base import RedirectView

from share.util import IDObfuscator, InvalidID
from share.models import Source

from api.pagination import CursorPagination
from api.permissions import IsDeletedPremissions
from api import serializers as api_serializers

from share.util import IDObfuscator, InvalidID
from share.models import Source


class ShareObjectViewSet(viewsets.ReadOnlyModelViewSet):
ordering = ('-id', )
Expand Down
11 changes: 11 additions & 0 deletions api/views/source_config.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from share.models import SourceConfig

from api.pagination import FuzzyPageNumberPagination
from api.serializers import SourceConfigSerializer
from api.views import ShareObjectViewSet


class SourceConfigViewSet(ShareObjectViewSet):
serializer_class = SourceConfigSerializer
pagination_class = FuzzyPageNumberPagination
queryset = SourceConfig.objects.all()
13 changes: 7 additions & 6 deletions api/views/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,19 @@
from rest_framework.serializers import ValidationError
from rest_framework.permissions import DjangoModelPermissionsOrAnonReadOnly

from api import schemas
from api.pagination import CursorPagination
from api.authentication import APIV1TokenBackPortAuthentication
from api.permissions import ReadOnlyOrTokenHasScopeOrIsAuthenticated
from api.serializers import FullNormalizedDataSerializer, BasicNormalizedDataSerializer, \
RawDatumSerializer, ShareUserSerializer, SourceSerializer
from share.models import RawDatum, NormalizedData, Source, SourceConfig, Transformer, ShareUser
from share.tasks import disambiguate
from share.harvest.serialization import DictSerializer
from share.harvest.base import FetchResult
from share.util import IDObfuscator

from api import schemas
from api.pagination import CursorPagination
from api.authentication import APIV1TokenBackPortAuthentication
from api.permissions import ReadOnlyOrTokenHasScopeOrIsAuthenticated
from api.serializers import FullNormalizedDataSerializer, BasicNormalizedDataSerializer, RawDatumSerializer, ShareUserSerializer, SourceSerializer


logger = logging.getLogger(__name__)
__all__ = ('NormalizedDataViewSet', 'RawDatumViewSet', 'ShareUserViewSet', 'SourceViewSet', 'V1DataView')

Expand Down
1 change: 1 addition & 0 deletions docs/elasticsearch.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Elasticsearch can be used to search the following fields in the normalized data:
'contributors'
'funders'
'publishers'
'id'


Accessing the Search API
Expand Down