Newer
Older
__copyright__ = "Copyright 2016-2018, Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"
from django.core.urlresolvers import reverse_lazy
from django.http import HttpResponse, HttpResponseServerError
from django.shortcuts import render
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView
from django.views.generic.list import ListView
from .models import Topic, RelationAsym, RelationSym
from scipost.mixins import PaginationMixin, PermissionsMixin
def ontology(request):
return render(request, 'ontology/ontology.html')
class TopicCreateView(PermissionsMixin, CreateView):
"""
Create a new Topic for an Ontology.
"""
permission_required = 'scipost.can_manage_ontology'
model = Topic
fields = '__all__'
template_name = 'ontology/topic_form.html'
success_url = reverse_lazy('ontology:topics')
class TopicUpdateView(PermissionsMixin, UpdateView):
"""
Update a Topic for an Ontology.
"""
permission_required = 'scipost.can_manage_ontology'
model = Topic
fields = '__all__'
template_name = 'ontology/topic_form.html'
success_url = reverse_lazy('ontology:topics')
class TopicListView(PaginationMixin, ListView):
def get_queryset(self):
"""
Return a queryset of Topics using optional GET data.
"""
queryset = Topic.objects.all()
if self.request.GET.get('text'):
queryset = queryset.filter(name__icontains=self.request.GET['text'])
return queryset
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'searchform': SearchTextForm(initial={'text': self.request.GET.get('text')}),
})
return context
class TopicDetailView(DetailView):
model = Topic
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs)
context['relations_asym'] = RelationAsym.objects.filter(Q(A=self.object) | Q(B=self.object))
return context