def test_requests_updated(self):
        # prepare data
        data = self.make_data()

        # check and clean data
        errors_occur, cleaned = clean_upload_trainingrequest_manual_score(data)
        self.assertFalse(errors_occur)

        # make sure so far nothing changed
        self.tr1.refresh_from_db()
        self.tr2.refresh_from_db()
        self.tr3.refresh_from_db()
        self.tr4.refresh_from_db()
        self.assertEqual(self.tr1.score_manual, 10)
        self.assertEqual(self.tr2.score_manual, -10)
        self.assertEqual(self.tr3.score_manual, 0)
        self.assertEqual(self.tr4.score_manual, None)

        records_updated = update_manual_score(cleaned)
        # 4 records should be updated: self.tr1, self.tr2, self.tr3, self.tr4
        self.assertEqual(records_updated, 4)
        # make sure requests updated
        self.tr1.refresh_from_db()
        self.tr2.refresh_from_db()
        self.tr3.refresh_from_db()
        self.tr4.refresh_from_db()
        self.assertEqual(self.tr1.score_manual, -10)
        self.assertEqual(self.tr2.score_manual, 0)
        self.assertEqual(self.tr3.score_manual, 10)
        self.assertEqual(self.tr4.score_manual, 0)
Example #2
0
    def test_requests_updated(self):
        # prepare data
        data = self.make_data()

        # check and clean data
        errors_occur, cleaned = clean_upload_trainingrequest_manual_score(data)
        self.assertFalse(errors_occur)

        # make sure so far nothing changed
        self.tr1.refresh_from_db()
        self.tr2.refresh_from_db()
        self.tr3.refresh_from_db()
        self.tr4.refresh_from_db()
        self.assertEqual(self.tr1.score_manual, 10)
        self.assertEqual(self.tr2.score_manual, -10)
        self.assertEqual(self.tr3.score_manual, 0)
        self.assertEqual(self.tr4.score_manual, None)

        records_updated = update_manual_score(cleaned)
        # 4 records should be updated: self.tr1, self.tr2, self.tr3, self.tr4
        self.assertEqual(records_updated, 4)
        # make sure requests updated
        self.tr1.refresh_from_db()
        self.tr2.refresh_from_db()
        self.tr3.refresh_from_db()
        self.tr4.refresh_from_db()
        self.assertEqual(self.tr1.score_manual, -10)
        self.assertEqual(self.tr2.score_manual, 0)
        self.assertEqual(self.tr3.score_manual, 10)
        self.assertEqual(self.tr4.score_manual, 0)
Example #3
0
File: views.py Project: mattipt/amy
def bulk_upload_training_request_scores_confirmation(request):
    """This view allows for verifying and saving of uploaded training
    request scores."""
    data = request.session.get('bulk-upload-training-request-scores')

    if not data:
        messages.warning(request,
                         "Could not locate CSV data, please upload again.")
        return redirect('bulk_upload_training_request_scores')

    if request.method == "POST":
        if (request.POST.get('confirm', None)
                and not request.POST.get('cancel', None)):

            errors, cleaned_data = \
                clean_upload_trainingrequest_manual_score(data)

            if not errors:
                try:
                    records_count = update_manual_score(cleaned_data)
                except (IntegrityError, ObjectDoesNotExist, InternalError,
                        TypeError, ValueError) as e:
                    messages.error(
                        request,
                        "Error saving data to the database: {}. Please make "
                        "sure to fix all errors listed below.".format(e))
                    errors, cleaned_data = \
                        clean_upload_trainingrequest_manual_score(data)
                else:
                    request.session['bulk-upload-training-request-scores'] = \
                        None
                    messages.success(
                        request,
                        "Successfully updated {} Training Requests.".format(
                            records_count))
                    return redirect('bulk_upload_training_request_scores')
            else:
                messages.warning(
                    request,
                    "Please fix the data according to error messages below.",
                )

        else:
            # any "cancel" or lack of "confirm" in POST cancels the upload
            request.session['bulk-upload-training-request-scores'] = None
            return redirect('bulk_upload_training_request_scores')

    else:
        errors, cleaned_data = clean_upload_trainingrequest_manual_score(data)
        if errors:
            messages.warning(
                request,
                'Please fix errors in the provided CSV file and re-upload.',
            )

    context = {
        'title': 'Confirm uploaded Training Requests manual score data',
        'any_errors': errors,
        'zipped': zip(cleaned_data, data),
    }
    return render(
        request,
        'requests/trainingrequest_bulk_upload_manual_score_confirmation.html',
        context,
    )
Example #4
0
def bulk_upload_training_request_scores_confirmation(request):
    """This view allows for verifying and saving of uploaded training
    request scores."""
    data = request.session.get('bulk-upload-training-request-scores')

    if not data:
        messages.warning(request,
                         "Could not locate CSV data, please upload again.")
        return redirect('bulk_upload_training_request_scores')

    if request.method == "POST":
        if (request.POST.get('confirm', None) and
                not request.POST.get('cancel', None)):

            errors, cleaned_data = \
                clean_upload_trainingrequest_manual_score(data)

            if not errors:
                try:
                    records_count = update_manual_score(cleaned_data)
                except (IntegrityError, ObjectDoesNotExist, InternalError,
                        TypeError, ValueError) as e:
                    messages.error(
                        request,
                        "Error saving data to the database: {}. Please make "
                        "sure to fix all errors listed below.".format(e)
                    )
                    errors, cleaned_data = \
                        clean_upload_trainingrequest_manual_score(data)
                else:
                    request.session['bulk-upload-training-request-scores'] = \
                        None
                    messages.success(
                        request,
                        "Successfully updated {} Training Requests."
                        .format(records_count)
                    )
                    return redirect('bulk_upload_training_request_scores')
            else:
                messages.warning(
                    request,
                    "Please fix the data according to error messages below.",
                )

        else:
            # any "cancel" or lack of "confirm" in POST cancels the upload
            request.session['bulk-upload-training-request-scores'] = None
            return redirect('bulk_upload_training_request_scores')

    else:
        errors, cleaned_data = clean_upload_trainingrequest_manual_score(data)
        if errors:
            messages.warning(
                request,
                'Please fix errors in the provided CSV file and re-upload.',
            )

    context = {
        'title': 'Confirm uploaded Training Requests manual score data',
        'any_errors': errors,
        'zipped': zip(cleaned_data, data),
    }
    return render(
        request,
        'requests/trainingrequest_bulk_upload_manual_score_confirmation.html',
        context,
    )