--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jocondelab/views.py Sat Jun 15 01:33:28 2013 +0200
@@ -0,0 +1,131 @@
+# -*- coding: utf-8 -*-
+'''
+Created on Jun 12, 2013
+
+@author: ymh
+'''
+
+from .forms import (ModifyWpLinkForm, ValidateTermForm, RemoveWpLinkForm,
+ TermFilterForm)
+from core.models import Term, TERM_URL_STATUS_DICT
+from core.wp_utils import process_term as wp_process_term
+from django.conf import settings
+from django.http.response import HttpResponse
+from django.views.generic import ListView, DetailView, View
+import logging
+
+logger = logging.getLogger(__name__)
+
+class TermListView(ListView):
+
+ model = Term
+ paginate_by = settings.TERM_LIST_PAGE_SIZE
+ template_name = "jocondelab/term_list.html"
+ form_class = TermFilterForm
+
+ def get_filter_form(self):
+ initial = { 'order_by':'label',
+ 'order_dir': 'asc',
+ 'thesaurus': None,
+ 'label': None,
+ 'link_status': -1,
+ 'validated': None}
+ return self.form_class(self.request.GET, initial=initial, auto_id=True)
+
+ def get_context_data(self, **kwargs):
+ context = ListView.get_context_data(self, **kwargs)
+ context['filter_form'] = self.get_filter_form()
+ return context
+
+ def get_queryset(self):
+ qs = ListView.get_queryset(self)
+ filter_form = self.get_filter_form()
+ if filter_form.is_valid():
+ return filter_form.get_filter_qs(qs)
+ else:
+ return None
+
+class TermEditView(DetailView):
+
+ queryset = Term.objects.select_related()
+ pk_url_kwarg = "term_id"
+ context_object_name = "term"
+ template_name = "jocondelab/term_edit.html"
+
+
+
+class TermUpdateView(View):
+
+ form_class = None
+ http_method_names = ['post']
+
+ def __init__(self, **kwargs):
+ View.__init__(self, **kwargs)
+ self.form = None
+ self.form_values = None
+ self.term = None
+
+ def post(self, request, *args, **kwargs):
+ self.form = self.form_class(request.POST)
+ if not self.form.is_valid():
+ return HttpResponse("Parameters not valid : %s" % (self.form.cleaned_data), status=400)
+
+ self.form_values = self.form.cleaned_data
+
+ try:
+ self.term = Term.objects.get(id=self.form_values['term_id'])
+ except Term.DoesNotExist:
+ return HttpResponse("Term %d not found" % self.form_values['term_id'],status=404)
+
+ return self.process_term(request)
+
+ def process_term(self, request):
+ raise NotImplemented()
+
+
+class TermValidate(TermUpdateView):
+
+ form_class = ValidateTermForm
+
+ def process_term(self, request):
+ if self.form_values['validation_val']:
+ self.term.validate(request.user)
+ else:
+ self.term.unvalidate()
+
+ return HttpResponse(status=204)
+
+
+class TermRemoveWpLink(TermUpdateView):
+
+ form_class = RemoveWpLinkForm
+
+ def process_term(self, request):
+
+ self.term.wp_label = None
+ self.term.wp_alternative_label = None
+ self.term.alternative_wikipedia_url = None
+ self.term.alternative_wikipedia_pageid = None
+ self.term.wikipedia_url =None
+ self.term.wikipedia_pageid = None
+ self.term.dbpedia_uri = None
+ self.term.wikipedia_revision_id = None
+ self.term.url_status = TERM_URL_STATUS_DICT["null_result"]
+
+ self.term.save()
+
+ return HttpResponse(status=204)
+
+
+
+class TermModifyWpLink(TermUpdateView):
+
+ form_class = ModifyWpLinkForm
+
+ def process_term(self, request):
+
+ label = self.form_values['label']
+
+ wp_process_term(None, self.term, label)
+
+ return HttpResponse(status=204)
\ No newline at end of file