def get(self, request, *args, **kwargs): # handle quoting case if 'cite' in self.request.GET: try: cited_pk = int(self.request.GET['cite']) except ValueError: raise Http404('L\'argument `cite` doit être un entier.') reaction = ContentReaction.objects.filter(pk=cited_pk).first() if reaction: if not reaction.is_visible: raise PermissionDenied text = '\n'.join('> ' + line for line in reaction.text.split('\n')) text += '\nSource: [{}]({})'.format( reaction.author.username, reaction.get_absolute_url()) if self.request.is_ajax(): return StreamingHttpResponse( json_handler.dumps({'text': text}, ensure_ascii=False)) else: self.quoted_reaction_text = text try: return super(SendNoteFormView, self).get(request, *args, **kwargs) except MustRedirect: # if someone changed the pk argument, and reached a 'must redirect' public object raise Http404( "Aucun contenu public trouvé avec l'identifiant {}".format( str(self.request.GET.get('pk', 0))))
def get(self, request, *args, **kwargs): # handle quoting case if "cite" in self.request.GET: try: cited_pk = int(self.request.GET["cite"]) except ValueError: raise Http404("L'argument `cite` doit être un entier.") reaction = ContentReaction.objects.filter(pk=cited_pk).first() if reaction: if not reaction.is_visible: raise PermissionDenied text = "\n".join("> " + line for line in reaction.text.split("\n")) text += f"\nSource: [{reaction.author.username}]({reaction.get_absolute_url()})" if self.request.is_ajax(): return StreamingHttpResponse( json_handler.dumps({"text": text}, ensure_ascii=False)) else: self.quoted_reaction_text = text try: return super().get(request, *args, **kwargs) except MustRedirect: # if someone changed the pk argument, and reached a 'must redirect' public object raise Http404( "Aucun contenu public trouvé avec l'identifiant {}".format( str(self.request.GET.get("pk", 0))))
def post(self, request, *args, **kwargs): response = {} # get user to follow try: user_to_follow = User.objects.get(pk=kwargs['pk']) except User.DoesNotExist: raise Http404 # follow content if user != user_to_follow only if user_to_follow == request.user: raise PermissionDenied with transaction.atomic(): if 'follow' in request.POST: response['follow'] = self.perform_follow( user_to_follow, request.user) response['subscriberCount'] = NewPublicationSubscription.objects \ .get_subscriptions(user_to_follow).count() elif 'email' in request.POST: response['email'] = self.perform_follow_by_email( user_to_follow, request.user) if request.is_ajax(): return HttpResponse(json_handler.dumps(response), content_type='application/json') return redirect(request.META.get('HTTP_REFERER'))
def get_json(self): """ :return: raw JSON file :rtype: str """ dct = export_content(self) data = json_handler.dumps(dct, indent=4, ensure_ascii=False) return data
def get(self, request, *args, **kwargs): if "q" in request.GET: self.search_query = "".join(request.GET["q"]) excluded_content_ids = request.GET.get("excluded", "").split(",") results = [] if self.index_manager.connected_to_es and self.search_query: self.authorized_forums = get_authorized_forums(self.request.user) search_queryset = Search() if len(excluded_content_ids) > 0 and excluded_content_ids != [""]: search_queryset = search_queryset.exclude( "terms", content_pk=excluded_content_ids) query = Match(_type="publishedcontent") & MultiMatch( query=self.search_query, fields=["title", "description"]) functions_score = [ { "filter": Match(content_type="TUTORIAL"), "weight": settings.ZDS_APP["search"]["boosts"]["publishedcontent"] ["if_tutorial"], }, { "filter": Match(content_type="ARTICLE"), "weight": settings.ZDS_APP["search"]["boosts"]["publishedcontent"] ["if_article"], }, { "filter": Match(content_type="OPINION"), "weight": settings.ZDS_APP["search"]["boosts"]["publishedcontent"] ["if_opinion"], }, ] scored_query = FunctionScore(query=query, boost_mode="multiply", functions=functions_score) search_queryset = search_queryset.query(scored_query)[:10] # Build the result for hit in search_queryset.execute(): result = { "id": hit.content_pk, "pubdate": hit.publication_date, "title": str(hit.title), "description": str(hit.description), } results.append(result) data = {"results": results} return HttpResponse(json_handler.dumps(data), content_type="application/json")
def post(self, request, *args, **kwargs): self.public_content_object = self.get_public_object() self.object = self.get_object() response = dict() response["requesting"], response["newCount"] = self.toogle_featured_request(request.user) if self.request.is_ajax(): return HttpResponse(json_handler.dumps(response), content_type="application/json") return redirect(self.public_content_object.get_absolute_url_online())
def get(self, request, *args, **kwargs): if "q" in request.GET: self.search_query = "".join(request.GET["q"]) results = [] if self.index_manager.connected_to_es and self.search_query: self.authorized_forums = get_authorized_forums(self.request.user) search_queryset = Search() query = (Match(_type="topic") & Terms(forum_pk=self.authorized_forums) & MultiMatch(query=self.search_query, fields=["title", "subtitle", "tags"])) functions_score = [ { "filter": Match(is_solved=True), "weight": settings.ZDS_APP["search"]["boosts"]["topic"]["if_solved"] }, { "filter": Match(is_sticky=True), "weight": settings.ZDS_APP["search"]["boosts"]["topic"]["if_sticky"] }, { "filter": Match(is_locked=True), "weight": settings.ZDS_APP["search"]["boosts"]["topic"]["if_locked"] }, ] scored_query = FunctionScore(query=query, boost_mode="multiply", functions=functions_score) search_queryset = search_queryset.query(scored_query)[:10] # Build the result for hit in search_queryset.execute(): result = { "id": hit.pk, "url": str(hit.get_absolute_url), "title": str(hit.title), "subtitle": str(hit.subtitle), "forumTitle": str(hit.forum_title), "forumUrl": str(hit.forum_get_absolute_url), "pubdate": str(hit.pubdate), } results.append(result) data = {"results": results} return HttpResponse(json_handler.dumps(data), content_type="application/json")
def get(self, request, *args, **kwargs): if 'q' in request.GET: self.search_query = ''.join(request.GET['q']) excluded_content_ids = request.GET.get('excluded', '').split(',') results = [] if self.index_manager.connected_to_es and self.search_query: self.authorized_forums = get_authorized_forums(self.request.user) search_queryset = Search() if len(excluded_content_ids) > 0 and excluded_content_ids != ['']: search_queryset = search_queryset.exclude( 'terms', content_pk=excluded_content_ids) query = Match(_type='publishedcontent') & MultiMatch( query=self.search_query, fields=['title', 'description']) functions_score = [{ 'filter': Match(content_type='TUTORIAL'), 'weight': settings.ZDS_APP['search']['boosts']['publishedcontent'] ['if_tutorial'] }, { 'filter': Match(content_type='ARTICLE'), 'weight': settings.ZDS_APP['search']['boosts']['publishedcontent'] ['if_article'] }, { 'filter': Match(content_type='OPINION'), 'weight': settings.ZDS_APP['search']['boosts']['publishedcontent'] ['if_opinion'] }] scored_query = FunctionScore(query=query, boost_mode='multiply', functions=functions_score) search_queryset = search_queryset.query(scored_query)[:10] # Build the result for hit in search_queryset.execute(): result = { 'id': hit.content_pk, 'pubdate': hit.publication_date, 'title': str(hit.title), 'description': str(hit.description) } results.append(result) data = {'results': results} return HttpResponse(json_handler.dumps(data), content_type='application/json')
def get(self, request, *args, **kwargs): if 'q' in request.GET: self.search_query = ''.join(request.GET['q']) results = [] if self.index_manager.connected_to_es and self.search_query: self.authorized_forums = get_authorized_forums(self.request.user) search_queryset = Search() query = Match(_type='topic') \ & Terms(forum_pk=self.authorized_forums) \ & MultiMatch(query=self.search_query, fields=['title', 'subtitle', 'tags']) functions_score = [{ 'filter': Match(is_solved=True), 'weight': settings.ZDS_APP['search']['boosts']['topic']['if_solved'] }, { 'filter': Match(is_sticky=True), 'weight': settings.ZDS_APP['search']['boosts']['topic']['if_sticky'] }, { 'filter': Match(is_locked=True), 'weight': settings.ZDS_APP['search']['boosts']['topic']['if_locked'] }] scored_query = FunctionScore(query=query, boost_mode='multiply', functions=functions_score) search_queryset = search_queryset.query(scored_query)[:10] # Build the result for hit in search_queryset.execute(): result = { 'id': hit.pk, 'url': str(hit.get_absolute_url), 'title': str(hit.title), 'subtitle': str(hit.subtitle), 'forumTitle': str(hit.forum_title), 'forumUrl': str(hit.forum_get_absolute_url), 'pubdate': str(hit.pubdate), } results.append(result) data = {'results': results} return HttpResponse(json_handler.dumps(data), content_type='application/json')
def post(self, request, *args, **kwargs): response = {} self.public_content_object = self.get_public_object() if 'follow' in request.POST: response['follow'] = ContentReactionAnswerSubscription.objects\ .toggle_follow(self.get_object(), self.request.user).is_active response['subscriberCount'] = ContentReactionAnswerSubscription\ .objects.get_subscriptions(self.get_object()).count() elif 'email' in request.POST: response['follow'] = ContentReactionAnswerSubscription.objects\ .toggle_follow(self.get_object(), self.request.user, True).is_active if self.request.is_ajax(): return HttpResponse(json_handler.dumps(response), content_type='application/json') return redirect(self.get_object().get_absolute_url())
def post(self, request, *args, **kwargs): obj = self.get_object() result = {"result": "FAIL"} if "operation" in request.POST: if "REJECT" in request.POST["operation"]: obj.rejected = True obj.save() result = {"result": "OK"} if "REJECT_FOR_GOOD" in request.POST["operation"]: obj.rejected = True obj.rejected_for_good = True obj.save() result = {"result": "OK"} elif "CONSIDER" in request.POST["operation"]: obj.rejected = False obj.save() result = {"result": "OK"} return HttpResponse(json_handler.dumps(result), content_type="application/json")
def post(self, request, *args, **kwargs): obj = self.get_object() result = {'result': 'FAIL'} if 'operation' in request.POST: if 'REJECT' in request.POST['operation']: obj.rejected = True obj.save() result = {'result': 'OK'} if 'REJECT_FOR_GOOD' in request.POST['operation']: obj.rejected = True obj.rejected_for_good = True obj.save() result = {'result': 'OK'} elif 'CONSIDER' in request.POST['operation']: obj.rejected = False obj.save() result = {'result': 'OK'} return HttpResponse(json_handler.dumps(result), content_type='application/json')
def get(self, request, *args, **kwargs): if 'q' in request.GET: self.search_query = ''.join(request.GET['q']) results = [] if self.index_manager.connected_to_es and self.search_query: self.authorized_forums = get_authorized_forums(self.request.user) search_queryset = Search() query = Match(_type='topic') \ & Terms(forum_pk=self.authorized_forums) \ & MultiMatch(query=self.search_query, fields=['title', 'subtitle', 'tags']) functions_score = [ {'filter': Match(is_solved=True), 'weight': settings.ZDS_APP['search']['boosts']['topic']['if_solved']}, {'filter': Match(is_sticky=True), 'weight': settings.ZDS_APP['search']['boosts']['topic']['if_sticky']}, {'filter': Match(is_locked=True), 'weight': settings.ZDS_APP['search']['boosts']['topic']['if_locked']} ] scored_query = FunctionScore(query=query, boost_mode='multiply', functions=functions_score) search_queryset = search_queryset.query(scored_query)[:10] # Build the result for hit in search_queryset.execute(): result = {'id': hit.pk, 'url': str(hit.get_absolute_url), 'title': str(hit.title), 'subtitle': str(hit.subtitle), 'forumTitle': str(hit.forum_title), 'forumUrl': str(hit.forum_get_absolute_url), 'pubdate': str(hit.pubdate), } results.append(result) data = {'results': results} return HttpResponse(json_handler.dumps(data), content_type='application/json')