def post(self, request, form_code):
        manager = get_database_manager(request.user)
        feeds_dbm = get_feeds_database(request.user)
        project_id = request.GET["project_id"]
        project = Project.load(manager.database, project_id)
        form_model = get_form_model_by_code(manager, form_code)
        user_profile = NGOUserProfile.objects.get(user=request.user)
        organization = Organization.objects.get(org_id=user_profile.org_id)
        submission_importer = SubmissionImporter(
            manager, feeds_dbm, request.user, form_model, project,
            SubmissionQuotaService(organization))
        response = submission_importer.import_submission(request)

        return HttpResponse(
            json.dumps({
                "success":
                self._successful(response),
                "question_map":
                self._get_question_code_map(form_model, request),
                "success_submissions":
                response.saved_entries,
                "errored_submission_details":
                response.errored_entrie_details,
                "message":
                response.message,
                "total_submissions":
                response.total_submissions,
                "quota_over":
                self._is_submission_quota_over(response)
            }))
    def test_should_update_datasender_id_with_logged_in_user_for_a_project_submitted_by_a_non_user(
            self):

        submission_importer = SubmissionImporter(None, None, None, None, None)

        rows = [{}, {}]
        user_profile = MagicMock()
        user_profile.reporter_id = 'rep123'
        submission_importer._add_reporter_id_for_datasender(
            parsed_rows=rows,
            user_profile=user_profile,
            is_organization_user=False)

        self.assertEquals(rows[0]['dsid'], 'rep123')
        self.assertEquals(rows[1]['dsid'], 'rep123')
    def test_should_update_datasender_id_with_logged_in_user_for_a_summary_project_submitted_by_a_user_with_no_explicit_datasender_entry(
            self):

        submission_importer = SubmissionImporter(None, None, None, None, None,
                                                 None)

        rows = [{'eid': ''}, {'eid': 'rep276'}]
        user_profile = MagicMock()
        user_profile.reporter_id = 'rep123'
        submission_importer._add_reporter_id_for_datasender(
            parsed_rows=rows,
            user_profile=user_profile,
            is_organization_user=True,
            is_summary_project=True)

        self.assertEquals(rows[0]['eid'], 'rep123')
        self.assertEquals(rows[1]['eid'], 'rep276')
    def test_should_not_update_datasender_id_with_logged_in_user_for_a_individual_project(
            self):

        submission_importer = SubmissionImporter(None, None, None, None, None,
                                                 None)

        rows = [{}, {}]
        user_profile = MagicMock()
        user_profile.reporter_id = 'rep123'
        submission_importer._add_reporter_id_for_datasender(
            parsed_rows=rows,
            user_profile=user_profile,
            is_organization_user=False,
            is_summary_project=False)

        self.assertFalse('eid' in rows[0])
        self.assertFalse('eid' in rows[1])