Example #1
0
def update_draft(request, draft_pk):
    """Updates current draft to save admin comments

    :param draft_pk: Unique id for current draft
    :return: DraftRegistration obj
    """
    data = json.loads(request.body)
    draft = get_draft_or_error(draft_pk)

    if 'admin_settings' in data:
        form = DraftRegistrationForm(data=data['admin_settings'])
        if not form.is_valid():
            return HttpResponseBadRequest("Invalid form data")
        admin_settings = form.cleaned_data
        draft.notes = admin_settings.get('notes', draft.notes)
        del admin_settings['notes']
        draft.flags = admin_settings
        draft.save()
    else:
        schema_data = data.get('schema_data', {})
        data = deepcopy(draft.registration_metadata)
        for key, value in data.items():
            data[key]['comments'] = schema_data.get(key,
                                                    {}).get('comments', [])
        try:
            draft.update_metadata(data)
            draft.save()
        except (NodeStateError):
            raise HTTPError(http.BAD_REQUEST)
    return JsonResponse(serializers.serialize_draft_registration(draft))
Example #2
0
 def test_form_valid_notes(self):
     form = DraftRegistrationForm(data=self.form_data)
     nt.assert_true(form.is_valid())
     view = setup_form_view(self.post_view, self.post, form,
                            draft_pk=self.dr1._id)
     view.draft = self.dr1
     count = AdminLogEntry.objects.count()
     with transaction.atomic():
         view.form_valid(form)
     nt.assert_equal(count, AdminLogEntry.objects.count())
     self.dr1.reload()
     nt.assert_equal(self.dr1.notes, self.form_data['notes'])
Example #3
0
 def test_form_valid_reject(self, mock_reject, mock_files):
     self.form_data.update(approve_reject='reject')
     form = DraftRegistrationForm(data=self.form_data)
     nt.assert_true(form.is_valid())
     view = setup_form_view(self.post_view, self.post, form,
                            draft_pk=self.dr1._id)
     view.draft = self.dr1
     count = AdminLogEntry.objects.count()
     with transaction.atomic():
         view.form_valid(form)
     nt.assert_true(mock_reject.called)
     nt.assert_equal(count + 1, AdminLogEntry.objects.count())
Example #4
0
def prereg(request):
    """Redirects to prereg page if user has prereg access
    :param request: Current logged in user
    :return: Redirect to prereg page with username, reviewers, and user obj
    """
    paginator = Paginator(get_prereg_drafts(user=request.user), 5)

    try:
        page_number = int(request.GET.get('page'))
    except (TypeError, ValueError):
        page_number = 1

    page = paginator.page(page_number)

    try:
        drafts = [
            serializers.serialize_draft_registration(d, json_safe=False)
            for d in page
        ]
    except EmptyPage:
        drafts = []

    for draft in drafts:
        draft['form'] = DraftRegistrationForm(draft)

    context = {'drafts': drafts, 'page': page}
    return render(request, 'pre_reg/prereg.html', context)
Example #5
0
def update_draft(request, draft_pk):
    """Updates current draft to save admin comments

    :param draft_pk: Unique id for current draft
    :return: DraftRegistration obj
    """
    data = json.loads(request.body)
    draft = get_draft_or_error(draft_pk)

    if 'admin_settings' in data:
        form = DraftRegistrationForm(data=data['admin_settings'])
        if not form.is_valid():
            return HttpResponseBadRequest("Invalid form data")
        admin_settings = form.cleaned_data
        draft.notes = admin_settings.get('notes', draft.notes)
        del admin_settings['notes']
        draft.flags = admin_settings
        draft.save()
    else:
        schema_data = data.get('schema_data', {})
        data = deepcopy(draft.registration_metadata)
        log_message = list()
        for key, value in data.items():
            comments = schema_data.get(key, {}).get('comments', [])
            for comment in comments:
                log_message.append('{}: {}'.format(key, comment['value']))
        try:
            draft.update_metadata(data)
            draft.save()
            update_admin_log(user_id=request.user.id,
                             object_id=draft._id,
                             object_repr='Draft Registration',
                             message='Comments: <p>{}</p>'.format(
                                 '</p><p>'.join(log_message)),
                             action_flag=COMMENT_PREREG)
        except (NodeStateError):
            raise HTTPError(http.BAD_REQUEST)
    return JsonResponse(serializers.serialize_draft_registration(draft))