示例#1
0
def submit_answer(request):
  form = AnswerForm(request.POST, instance=Answer(user=request.user))
  if not form.is_valid():
    return ajax_response(False, extract_all_errors(form))
  answer = form.save()
  action_factory.question_answer(answer)
  return ajax_response(True, html=render_to_string('main/answer.html',
    {'answer':answer}, RequestContext(request)))
示例#2
0
def submit_question(request):
  form = QuestionForm(request.POST, instance=Question(user=request.user))
  if not form.is_valid():
    return ajax_response(False, extract_all_errors(form))
  question = form.save()
  action_factory.question_ask(question)
  return ajax_response(True, html=render_to_string('main/question.html',
    {'question':question}, RequestContext(request)))
示例#3
0
def change_password(request):
  'Change the password of the given user.'
  user = request.user
  # reuse d.c.auth's form for validation.
  form = PasswordChangeForm(user, request.POST)
  if form.is_valid():
    form.save();
    # notify.
    action_factory.user_change_password(user)
    return JsonResponse({'success':True,
                         'message':'Successfully changed password.'})
  return JsonResponse({'success':False,
                       'errors':extract_all_errors(form, True, PASSWORD_FIELD_TO_LABEL)})
示例#4
0
def get_rankings(request):
  # returns the list of UWPostings.
  parameters = get_rankings_Parameters(request.GET)
  if parameters.is_valid():
    employer_id, sort_by, search_term, order = extract_cd(parameters,
      'employer_id', 'sort_by', 'search_term', 'order')
    qs = UserPostings.objects.get_filtered_queryset(
      Employer(id=employer_id), sort_by, search_term)
    if order == 'desc':
      qs = qs.reverse()
    average = employer_ranking_average(average_rankings(qs))
    result = [employer_ranking_row(x) for x in process_rankings(qs)]

    return JsonResponse(dict(success=True,
      result=result,
      average=average,
      filter_message=parameters.human_readable_query,
    ))
  else:
    return JsonResponse(dict(success=False, errors=extract_all_errors(parameters)))
示例#5
0
def get_uwpostings(request):
  # returns the list of UWPostings.
  # get_uwpostings and get_rankings are too familiar... we can maybe refactor them out.
  parameters = get_uwpostings_Parameters(request.GET)
  if parameters.is_valid():
    employer_id, page_number, sort_by, search_term, order = extract_cd(parameters,
      'employer_id', 'page_number', 'sort_by', 'search_term', 'order')
    qs = UWPostings.objects.get_uwpostings_queryset(Employer(id=employer_id), sort_by, search_term, order)
    paginator = Paginator(qs, UWPOSTINGS_PAGE_SIZE)
    uw_postings = paginator.page(page_number)
    # render.
    result = [uw_posting_row(x) for x in uw_postings.object_list]
    return JsonResponse(dict(success=True,
      result=result,
      uw_postings_count=paginator.count,
      filter_message=parameters.human_readable_query,
      paging=render_to_string('main/employer_paging_control.html',
        dict(uw_postings=uw_postings))
    ))
  else:
    return JsonResponse(dict(success=False, errors=extract_all_errors(parameters)))
示例#6
0
def submit_iworkedhere(request):
  user = request.user
  form_classes = [
    EmployerRankingBasic,
    EmployerRankingNumeric,
    EmployerRankingComments,
    EmployerRankingSettings]

  # f**k... i don't know how to handle this correctly
  posting_id = request.REQUEST.get('posting_id', None)
  if posting_id:
    postings = UserPostings.objects.get(id=posting_id)
  else:
    postings = UserPostings()
  def inst_form(Class):
    if isinstance(Class, ModelFormMetaclass):
      return Class(request.POST, instance=postings)
    else:
      return Class(request.POST)
  # dictionary of form class -> instance.
  forms = dict((Class, inst_form(Class)) for Class in form_classes)

#  ern = forms[EmployerRankingNumeric]
#  import ipdb;ipdb.set_trace()

  if all(x.is_valid() for x in forms.values()):
    # the form is all valid, perform the submit.
    try:
      _submit_iworkedhere(forms, postings, user)
    except Exception:
      logger.critical("Unknown error while submitting form.", exc_info=True)
      return JsonResponse(dict(success=False, errors=[['Server error.', 'Unknown error. Please try again later.']]))
    return JsonResponse(dict(success=True))
  else:
    list_of_errors = map(lambda x: extract_all_errors(x, True), forms.values())
    errors = list(chain(*list_of_errors))
    return JsonResponse(dict(success=False, errors=errors))