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)
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")
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")
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")
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)
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('[]'))