diff --git a/apis_bibsonomy/api_views.py b/apis_bibsonomy/api_views.py
index 16bca63..2b4cbc0 100644
--- a/apis_bibsonomy/api_views.py
+++ b/apis_bibsonomy/api_views.py
@@ -8,9 +8,29 @@
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
+from rest_framework import viewsets, generics
from .models import Reference
from .utils import BibsonomyEntry
+from .serializers import ReferenceSerializer, ReferenceQuerySerializer
+
+class ReferenceList(APIView):
+ """
+ API endpoint that allows references to be viewed.
+ """
+ authentication_classes = []
+ permission_classes = []
+
+ def post(self, request, format=None):
+ serializer = ReferenceQuerySerializer(data=request.data, many=True)
+ references = []
+ if serializer.is_valid():
+ for item in serializer.validated_data:
+ print(item)
+ references.extend(list(Reference.objects.filter(**item)))
+ print(references)
+ reference_data = ReferenceSerializer(references, many=True).data
+ return Response(reference_data)
class SaveBibsonomyEntry(APIView):
diff --git a/apis_bibsonomy/serializers.py b/apis_bibsonomy/serializers.py
new file mode 100644
index 0000000..86a91d3
--- /dev/null
+++ b/apis_bibsonomy/serializers.py
@@ -0,0 +1,12 @@
+from .models import Reference
+from rest_framework import serializers
+
+
+class ReferenceSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = Reference
+ fields = '__all__'
+
+class ReferenceQuerySerializer(serializers.Serializer):
+ content_type_id = serializers.IntegerField()
+ object_id = serializers.IntegerField()
diff --git a/apis_bibsonomy/templates/apis_bibsonomy/reference_list.html b/apis_bibsonomy/templates/apis_bibsonomy/reference_list.html
new file mode 100644
index 0000000..c03e1c3
--- /dev/null
+++ b/apis_bibsonomy/templates/apis_bibsonomy/reference_list.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+{% load bibsonomy_templatetags %}
+
+{% block content %}
+
+{% for reference in object_list %}
+- {% with reference.bibtex|json_obj as bibtex %}{{ bibtex.title }}{% endwith %}
+{% empty %}
+- No references yet.
+{% endfor %}
+
+{% endblock content %}
diff --git a/apis_bibsonomy/templates/base.html b/apis_bibsonomy/templates/base.html
new file mode 100644
index 0000000..c8e90d9
--- /dev/null
+++ b/apis_bibsonomy/templates/base.html
@@ -0,0 +1,9 @@
+
+
+
+ Bibsonomy
+
+
+ {% block content %}{% endblock content %}
+
+
diff --git a/apis_bibsonomy/templatetags/bibsonomy_templatetags.py b/apis_bibsonomy/templatetags/bibsonomy_templatetags.py
index fa8c0d6..9d55f5d 100644
--- a/apis_bibsonomy/templatetags/bibsonomy_templatetags.py
+++ b/apis_bibsonomy/templatetags/bibsonomy_templatetags.py
@@ -1,3 +1,5 @@
+import json
+
from django import template
from apis_bibsonomy.forms import ReferenceForm
@@ -16,3 +18,7 @@ def bibsonomy_list(content_type=None, object_pk=None, attribute_name=None):
c_dict = {'content_type': content_type, 'object_pk': object_pk, 'attribute_name': attribute_name}
form = ReferenceForm(**c_dict)
return {"form": form}
+
+@register.filter
+def json_obj(value):
+ return json.loads(value)
diff --git a/apis_bibsonomy/urls.py b/apis_bibsonomy/urls.py
index 38bc236..f4a7993 100644
--- a/apis_bibsonomy/urls.py
+++ b/apis_bibsonomy/urls.py
@@ -1,11 +1,12 @@
+from rest_framework.routers import DefaultRouter
from django.urls import path
-from . import api_views
+from . import api_views, views
from . import autocompletes
app_name = 'apis_bibsonomy'
urlpatterns = [
path('save_get/', api_views.SaveBibsonomyEntry.as_view(), name='savegetbibsonomyentry'),
- path('autocomplete/', autocompletes.BibsonomyAutocomplete.as_view(), name='bibsonomyautocomplete')
+ path('autocomplete/', autocompletes.BibsonomyAutocomplete.as_view(), name='bibsonomyautocomplete'),
+ path('references/', views.ReferenceListView.as_view(), name='referenceslist'),
]
-
diff --git a/apis_bibsonomy/views.py b/apis_bibsonomy/views.py
new file mode 100644
index 0000000..8947efc
--- /dev/null
+++ b/apis_bibsonomy/views.py
@@ -0,0 +1,16 @@
+from django.views.generic.list import ListView
+from django.db.models import Q
+
+from .models import Reference
+
+
+class ReferenceListView(ListView):
+ def get_queryset(self):
+ ctois = self.request.GET.getlist("ctoi")
+ q_objects = Q()
+ for ctoi in ctois:
+ ctoi = ctoi.split(":")
+ if len(ctoi) == 2:
+ q_objects |= Q(content_type__id=ctoi[0], object_id=ctoi[1])
+ refs = Reference.objects.filter(q_objects)
+ return refs