Example #1
0
def search(request):
    if request.is_ajax():
        term = request.GET.get('term', '')
        results = []

        if str(term[0]) == '@':
            queries = User.objects.filter(username__icontains=term[1:])[:NUM]
            for query in queries:
                results.append("@" + query.username)
        else:
            queries = Thread.objects.filter(title__icontains=term,
                                            lang=lang())[:NUM]
            for query in queries:
                results.append(query.title)

        res = json.dumps(results)
        mimetype = 'application/json'

        return HttpResponse(res, mimetype)
    else:
        get = request.GET.get('q')
        data = get.strip()
        if data[0] == '@':
            user = User.objects.get(username=data[1:])
            return redirect(reverse("user:profile", args=[user.username]))

        elif data[0] == '#' and data[1:].isnumeric():
            return redirect("entry:read", pk=data[1:])

        else:
            title = re.sub(' +', ' ', data)
            try:
                thread = Thread.objects.get(title=title, lang=lang())
                return redirect(thread)
            except ObjectDoesNotExist:
                eform = EntryForm()
                tform = ThreadForm({'title': title})

                eform.fields['body'].widget.attrs['placeholder'] = \
                    "write something to create this thread"
                if tform.is_valid():
                    return render(request, 'threads/store.html', {
                        'title': title,
                        'eform': eform,
                        'tform': tform
                    })
                return render(request, 'threads/store.html', {
                    'title': title,
                    'error': True
                })
Example #2
0
    def get(self, request, *args, **kwargs):
        self.last_request = request
        self.object_list = self.get_queryset()
        allow_empty = self.get_allow_empty()

        if not allow_empty:
            # When pagination is enabled and object_list is a queryset,
            # it's better to do a cheap query than to load the unpaginated
            # queryset in memory.

            if self.get_paginate_by(self.object_list) is not None and hasattr(self.object_list, 'exists'):
                is_empty = not self.object_list.exists()
            else:
                is_empty = not self.object_list
            if is_empty:
                raise Http404(lang('Empty list and “%(class_name)s.allow_empty” is False.') % {
                    'class_name': self.__class__.__name__,
                })
        serializer = my_serializer

        if self.standard_serializer:
            serializer = self.standard_serializer
        elif hasattr(self.model, 'serializer'):
            serializer = self.model.serializer

        context = serialize_queryset(self.object_list, self.last_page_info, custom_serializer=serializer,
                                     serialize_config=self.serialized_fields, form_complex_response=True)

        add_context = self.get_additional_context_attribute()
        if add_context:
            context.update(**add_context)
        if self.additional_static_attribute:
            context.update(**self.additional_static_attribute)

        return JsonResponse(context)
Example #3
0
 def formfield_for_manytomany(self, db_field, request, **kwargs):
     item = request.path.split("/")[-3]
     thread = self.get_object(request, item)
     if thread:
         kwargs["queryset"] = Tag.objects.filter(lang=thread.lang)
     else:
         kwargs["queryset"] = Tag.objects.filter(lang=lang())
     return super().formfield_for_manytomany(db_field, request, **kwargs)
Example #4
0
    def get_queryset(self, **kwargs):

        queryset = super().get_queryset().with_favs(self.request.user)\
            .filter(user=self.user).filter(lang=lang())\
            .annotate(title=F('thread__title'),
                      slug=F('thread__slug'),
                      username=F('user__username')).order_by("-created_at")
        return queryset
Example #5
0
def api_thread(request, *args, **kwargs):
    if request.GET.get("week", None):
        cnt = Count("entries",
                    filter=Q(entries__created_at__gt=timezone.now() -
                             timezone.timedelta(days=30))
                    & Q(entries__deleted_at=None),
                    distinct=True)
        queries = Thread.objects.filter(lang=lang()) \
                      .annotate(cnt=cnt).filter(cnt__gt=0) \
                      .order_by("-last_entry").only('title', 'slug')[:20]
    else:
        cnt = Count("entries",
                    filter=Q(entries__deleted_at=None),
                    distinct=True)
        queries = Thread.objects.filter(lang=lang()) \
                      .annotate(cnt=cnt).filter(cnt__gt=0)  \
                      .order_by("-cnt").only('title', 'slug')[:20]
    return api(queries)
Example #6
0
    def get_queryset(self, **kwargs):
        if self.request.GET.get("week", None):
            cnt = Count("entries",
                        filter=Q(entries__created_at__gt=dt.date.today() -
                                 dt.timedelta(days=7))
                        & Q(entries__deleted_at=None),
                        distinct=True)
            queries = Thread.objects.filter(lang=lang()) \
                          .annotate(cnt=cnt).filter(cnt__gt=0) \
                          .order_by("-last_entry").only('title', 'slug')
        else:
            cnt = Count("entries",
                        filter=Q(entries__deleted_at=None),
                        distinct=True)
            queries = Thread.objects.filter(lang=lang()) \
                          .annotate(cnt=cnt) \
                          .order_by("-cnt").only('title', 'slug')

        return queries
Example #7
0
def newt(request):
    if request.method == "GET":
        return render(request, "threads/new.html")  # TODO :düzelt
    elif request.method == "POST":
        thread_form = ThreadForm(request.POST)
        entry_form = BodyForm(request.POST)

        title = thread_form.clean_title()
        try:
            thread = Thread.objects.get(title=title, lang=lang())
            return add_entry(request, thread.slug)
        except ObjectDoesNotExist:
            if thread_form.is_valid() and entry_form.is_valid():
                thread = Thread(title=title, user=request.user, lang=lang())
                # thread = thread_form.save(commit=False)
                # thread.user = request.user
                # thread.lang = lang()
                thread.save()
                add_entry(request, thread.slug)
                messages.success(request, _('and the thread was created'))
                return redirect(thread)
def language_change(request):
    languages = {}
    current_lang = lang()

    if request.is_secure():
        scheme = 'https'
    else:
        scheme = 'http'
    base_url = ''.join([scheme, '://', request.META['HTTP_HOST'], '/'])

    path = str(request.path).replace('/' + str(current_lang) + '/', '')
    for language in Languages.objects.all():
        languages[language.code] = {
            'path': base_url + '/'.join([language.code, path]),
            'active': True if language.code == current_lang else False
        }
    return {'languages': languages, 'current_lang': current_lang}
Example #9
0
def contact(request):
    if request.method == 'GET':
        sub = request.GET.get("subject", "")
        # print(type)
        message = request.GET.get("message", None)
        # print(message)
        form = ContactMessageForm(initial={"subject": str(sub),
                                           "message": message})
    else:
        form = ContactMessageForm(request.POST)
        if form.is_valid():
            contact_message = form.save(commit=False)
            if request.user.is_authenticated:
                contact_message.user = request.user
            contact_message.lang = lang()
            contact_message.save()
            messages.success(request, _('your message sent successfully'))
            return redirect("/")
    return render(request, "app/contact.html", {'form': form})
Example #10
0
    def get_queryset(self, **kwargs):
        queryset = super(LangMixin, self).get_queryset(**kwargs)
        queryset = queryset.filter(lang=lang())

        return queryset
Example #11
0
def random_thread(request):
    thread = Thread.objects.all().filter(lang=lang()).order_by("?")[:1]

    return redirect(thread.get())
 def trans(self):
     try:
         return self.translation.get(language__code=lang())
     except:
         return self
Example #13
0
 def get_queryset(self):
     return Tag.objects.filter(lang=lang())\
         .annotate(tcnt=Count("threads")).all()
Example #14
0
 def get_queryset(self):
     queryset = super().get_queryset().filter(lang=lang())
     return queryset
Example #15
0
def index(request):
    entries = Entry.objects.all().with_favs(request.user).filter(lang=lang()).\
        annotate(title=F('thread__title'), slug=F('thread__slug'),
                 username=F('user__username')).order_by("?")[:5]
    return render(request, 'threads/idx.html', context={'entries': entries})