Ejemplo n.º 1
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 += '\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))))
Ejemplo n.º 2
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))))
Ejemplo n.º 3
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'))
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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
Ejemplo n.º 6
0
    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")
Ejemplo n.º 7
0
    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())
Ejemplo n.º 8
0
    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")
Ejemplo n.º 9
0
    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')
Ejemplo n.º 10
0
    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')
Ejemplo n.º 11
0
 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())
Ejemplo n.º 12
0
    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")
Ejemplo n.º 13
0
    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')
Ejemplo n.º 14
0
    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')