Пример #1
0
def get_base_querydict(context, base):
    if base is None and "request" in context:
        return context["request"].GET.copy()
    if isinstance(base, QueryDict):
        return base.copy()
    if isinstance(base, dict):
        return QueryDict.fromkeys(base, mutable=True)
    if isinstance(base, str):
        return QueryDict(base, mutable=True)
    # request not present or base value unsupported
    return QueryDict("", mutable=True)
Пример #2
0
def signUp(request):
    if request.method == 'POST':
        if request.POST.get('password', '') != request.POST.get(
                'password2', ''):
            return HttpResponse(json.dumps({'password':
                                            ['password_mismatch']}),
                                content_type="application/json")

        areas = handle(request, "areas")
        if areas == None:
            return HttpResponse(json.dumps({"areas": ['missing_areas']}),
                                content_type="application/json")

        user_areas = []
        for area in areas:
            q_dict = QueryDict()
            valid_form_object = q_dict.fromkeys(['area'], area)
            area_f = AreaForm(valid_form_object)
            if area_f.is_valid():
                try:
                    existing_area = Area.objects.get(
                        area=area_f.cleaned_data.get('area', ''))
                    user_areas.append(existing_area)
                except ObjectDoesNotExist:
                    new_area = area_f.save()
                    user_areas.append(new_area)
            else:
                return HttpResponse(json.dumps(area_f._errors),
                                    content_type="application/json")

        new_userf = UserForm(request.POST)

        if new_userf.is_valid():
            new_user = new_userf.save()
            for user_area in user_areas:
                new_user.areas.add(user_area)
            login(request, new_user)
            request.session.set_expiry(0)
            send_email.delay(new_user.username, new_user.verification_code,
                             new_user.email)
            return HttpResponseRedirect('/serve_verification_page/')
        else:
            return HttpResponse(json.dumps(new_userf._errors),
                                content_type="application/json")
Пример #3
0
def reply(request):
    if request.user.is_verified == False:
        return HttpResponse(json.dumps(
            {'verification': ['verification_required']}),
                            content_type="application/json")

    if request.method == 'POST':
        keywords = handle(request, "keywords")
        if keywords == None:
            return HttpResponse(json.dumps({"keywords": ['missing_keywords']}),
                                content_type="application/json")

        reply_keywords = []
        for keyword in keywords:
            q_dict = QueryDict()
            valid_form_object = q_dict.fromkeys(['keyword'], keyword)
            keyword_f = KeywordForm(valid_form_object)
            if keyword_f.is_valid():
                try:
                    existing_keyword = Keyword.objects.get(
                        keyword=keyword_f.cleaned_data.get('keyword', ''))
                    reply_keywords.append(existing_keyword)
                except ObjectDoesNotExist:
                    new_keyword = keyword_f.save()
                    reply_keywords.append(new_keyword)
            else:
                return HttpResponse(json.dumps(keyword_f._errors),
                                    content_type="application/json")

        new_replyf = ReplyForm(request.POST)

        if new_replyf.is_valid():

            try:
                question = Question.objects.get(
                    pk=new_replyf.cleaned_data.get('in_reply_to_id', ''))
                new_reply = Reply.objects.create(
                    user=request.user,
                    question=question,
                    in_reply_to_id=new_replyf.cleaned_data.get(
                        'in_reply_to_id', ''),
                    reply=new_replyf.cleaned_data.get('reply', ''))

                for reply_keyword in reply_keywords:
                    new_reply.keywords.add(reply_keyword)

                question.reply_count = question.reply_count + 1
                question.save()
                new_reply.user.reply_count = new_reply.user.reply_count + 1
                new_reply.user.save()

                return HttpResponse(json.dumps({'success': ['submitted']}),
                                    content_type="application/json")
            except ObjectDoesNotExist:
                return HttpResponse(json.dumps(
                    {'in_reply_to_id': ['question does not exists']}),
                                    content_type="application/json")
            except Exception as e:
                return HttpResponse(json.dumps({'reply': [str(e)]}),
                                    content_type="application/json")

        else:
            return HttpResponse(json.dumps(new_replyf._errors),
                                content_type="application/json")
Пример #4
0
def ask(request):
    if request.user.is_verified == False:
        return HttpResponse(json.dumps(
            {'verification': ['verification_required']}),
                            content_type="application/json")

    if request.method == 'POST':
        areas = handle(request, "areas")
        keywords = handle(request, "keywords")

        if areas == None:
            return HttpResponse(json.dumps({"areas": ['missing_areas']}),
                                content_type="application/json")
        if keywords == None:
            return HttpResponse(json.dumps({"keywords": ['missing_keywords']}),
                                content_type="application/json")

        question_areas = []
        question_keywords = []

        for area in areas:
            q_dict = QueryDict()
            valid_form_object = q_dict.fromkeys(['area'], area)
            area_f = AreaForm(valid_form_object)
            if area_f.is_valid():
                try:
                    existing_area = Area.objects.get(
                        area=area_f.cleaned_data.get('area', ''))
                    question_areas.append(existing_area)
                except ObjectDoesNotExist:
                    new_area = area_f.save()
                    question_areas.append(new_area)
            else:
                return HttpResponse(json.dumps(area_f._errors),
                                    content_type="application/json")

        for keyword in keywords:
            q_dict = QueryDict()
            valid_form_object = q_dict.fromkeys(['keyword'], keyword)
            keyword_f = KeywordForm(valid_form_object)
            if keyword_f.is_valid():
                try:
                    existing_keyword = Keyword.objects.get(
                        keyword=keyword_f.cleaned_data.get('keyword', ''))
                    question_keywords.append(existing_keyword)
                except ObjectDoesNotExist:
                    new_keyword = keyword_f.save()
                    question_keywords.append(new_keyword)
            else:
                return HttpResponse(json.dumps(keyword_f._errors),
                                    content_type="application/json")

        new_questionf = QuestionForm(request.POST)

        if new_questionf.is_valid():
            new_question = new_questionf.save()

            for question_area in question_areas:
                new_question.areas.add(question_area)

            for question_keyword in question_keywords:
                new_question.keywords.add(question_keyword)

            new_question.user = request.user
            new_question.subscriber_count = 1
            new_question.subscriptions.add(request.user)
            new_question.save()
            new_question.user.asked_question_count = new_question.user.asked_question_count + 1
            new_question.user.save()

            return HttpResponse(json.dumps({'success': ['submitted']}),
                                content_type="application/json")
        else:
            return HttpResponse(json.dumps(new_questionf._errors),
                                content_type="application/json")
Пример #5
0
 def __init__(self, data, *args, **kwargs):
     if data is None or not data.get('status', None):
         data = QueryDict.fromkeys(data or {}, mutable=True)
         data['status'] = '有效'
     super(CompanyFilter, self).__init__(data, *args, **kwargs)
Пример #6
0
 def test_remove_array_append(self):
     """Appended multi-value notation is trimmed from keys"""
     raw = QueryDict.fromkeys(['a[]', 'b[]', 'c'], value=[1, 2, 3])
     processed = _filterable_params(raw)
     for key in processed.keys():
         self.assertFalse(key.endswith('[]'))