--- a/src/hdalab/views/profile.py Tue Mar 03 14:03:38 2015 +0100
+++ b/src/hdalab/views/profile.py Wed Mar 04 15:24:23 2015 +0100
@@ -6,6 +6,14 @@
'''
from datetime import datetime
+import json
+import logging
+from renkanmanager.models import Renkan
+from renkanmanager.utils import LineNodePlacer, HorLineNodePlacer, renkan_copier, renkan_deleter, \
+ CircleNodePlacer
+from renkanmanager.views import RenkanGetPut
+import uuid
+
from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login
from django.contrib.auth.forms import AuthenticationForm
@@ -26,22 +34,15 @@
from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.views.decorators.debug import sensitive_post_parameters
from django.views.generic import TemplateView, View
+
from hdabo.models import Tag, Datasheet, TaggedSheet, Folder
+from hdalab.forms import HdalabRenkanStateForm, HdalabRenkanFavoriteForm
from hdalab.models.dataviz import DbpediaFieldsTranslation
from hdalab.models.renkan import HdalabRenkan
+from hdalab.services import change_renkan_state
from hdalab.views.ajax import filter_generic
-from renkanmanager.models import Renkan
-from renkanmanager.utils import LineNodePlacer, HorLineNodePlacer, renkan_copier, renkan_deleter,\
- CircleNodePlacer
-from renkanmanager.views import RenkanGetPut
-import json
-import uuid
-import logging
-from django.views.generic.edit import ModelFormMixin
-from hdalab.forms import HdalabRenkanStateForm
-from django.contrib.admin.models import CHANGE
-from hdalab.services import change_renkan_state
+
logger = logging.getLogger(__name__)
@@ -75,19 +76,23 @@
if filter_enddate!="":
renkan_queryset = renkan_queryset.filter(renkan__modification_date__lt=filter_enddate + " 23:59:59")
filters += "&enddate=" + filter_enddate
-
-
+ filter_favorite = int(self.request.GET.get('favorite', "2"))
+ if filter_favorite == 1:
+ renkan_queryset = renkan_queryset.filter(favorite=True)
+ elif filter_favorite == 0:
+ renkan_queryset = renkan_queryset.filter(favorite=False)
+
sort_param = self.request.GET.get('sort', "date")
order_param = self.request.GET.get('order', "desc")
- sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state", "user":"renkan__owner__username"}.get(sort_param)
+ sort = {"date":"renkan__modification_date", "title":"renkan__title", "state":"state", "user":"renkan__owner__username", "favorite":"favorite"}.get(sort_param, None)
if order_param=="desc":
order = "-"
opposite = "asc"
else:
order = ""
opposite = "desc"
-
- renkan_queryset = renkan_queryset.order_by(order + sort)
+ if sort:
+ renkan_queryset = renkan_queryset.order_by(order + sort)
p = Paginator(renkan_queryset, settings.RENKANS_PER_PAGE)
page_nb = self.request.GET.get('page')
try:
@@ -99,7 +104,7 @@
context.update({"page": page, "sort_param":sort_param, "order_param":order_param, "opposite":opposite,
"filters":filters, "title": filter_title, "username": filter_username, "state": filter_state,
- "startdate":filter_startdate, "enddate":filter_enddate})
+ "startdate":filter_startdate, "enddate":filter_enddate, "favorite": filter_favorite})
return context
@@ -121,11 +126,19 @@
return self.update_context( super(RenkanPublicList, self).get_context_data(**kwargs), HdalabRenkan.objects.select_related("renkan", "renkan__owner").filter(state=HdalabRenkan.PUBLISHED) )
-#TODO transform in post
+class RenkanFavoriteList(BaseRenkanList):
+
+ template_name = "renkan_list.html"
+
+ def get_context_data(self, **kwargs):
+ context = super(BaseRenkanList, self).get_context_data(**kwargs)
+ context['hide_favorite'] = True
+ return self.update_context(context , HdalabRenkan.objects.select_related("renkan", "renkan__owner").filter(state=HdalabRenkan.PUBLISHED, favorite=True) )
+
+
class RenkanNew(View):
- def get(self, request):
-
+ def post(self, request):
rk = Renkan()
rk_id = unicode(uuid.uuid1())
rk.rk_id = rk_id
@@ -140,7 +153,6 @@
return redirect("%s?rk_id=%s" % (reverse('renkan_edit'), rk_id))
-
class RenkanEdit(TemplateView):
template_name="renkan_edit.html"
@@ -648,13 +660,13 @@
return redirect(reverse('profile_home'))
-class HdalabRenkanModerate(View, ModelFormMixin):
+class HdalabRenkanModerate(View):
def post(self, request, rk_id):
form = HdalabRenkanStateForm(request.POST)
if form.is_valid():
logger.debug("FORM DATA %r", form.cleaned_data)
- renkan_hda = get_object_or_404(HdalabRenkan, renkan__rk_id=rk_id)
+ renkan_hda = get_object_or_404(HdalabRenkan.objects.select_related(), renkan__rk_id=rk_id)
change_renkan_state(renkan_hda, form.cleaned_data['state'], form.cleaned_data['message'], request.user)
next_url = form.cleaned_data.get('next', None)
if next_url:
@@ -665,6 +677,18 @@
logger.debug("FORM INVALID %r : %r", request.POST, form.errors)
return HttpResponseBadRequest("State form invalid")
+class HdalabRenkanFavorite(View):
+
+ def post(self, request, rk_id):
+ form = HdalabRenkanFavoriteForm(request.POST)
+ if form.is_valid():
+ renkan_hda = get_object_or_404(HdalabRenkan.objects.select_related(), renkan__rk_id=rk_id)
+ renkan_hda.favorite = form.cleaned_data['favorite']
+ renkan_hda.save()
+ return HttpResponse(
+ json.dumps({'status': 'ok', 'renkan': {'rk_id': renkan_hda.renkan.rk_id, 'favorite': renkan_hda.favorite}}),
+ content_type="application/json"
+ )
# Function copied from django.contrib.auth.views to simplify ajax login
@@ -707,4 +731,3 @@
context.update(extra_context)
return TemplateResponse(request, template_name, context,
current_app=current_app)
-
\ No newline at end of file