Esempio n. 1
0
    def post(self, request, *args, **kwargs):
        entity_links = {
            'registered_datasenders_link': reverse("all_datasenders")
        }
        dbm = get_database_manager(request.user)
        org_id = request.user.get_profile().org_id
        form = ReporterRegistrationForm(org_id=org_id, data=request.POST)
        try:
            reporter_id, message = process_create_data_sender_form(
                dbm, form, org_id)
        except DataObjectAlreadyExists as e:
            message = _(
                "Data Sender with Unique Identification Number (ID) = %s already exists."
            ) % e.data[1]
        if len(form.errors) == 0 and form.requires_web_access(
        ) and reporter_id:
            email_id = form.cleaned_data['email']
            create_single_web_user(org_id=org_id,
                                   email_address=email_id,
                                   reporter_id=reporter_id,
                                   language_code=request.LANGUAGE_CODE)

        if message is not None and reporter_id:
            if form.cleaned_data['project_id'] != "":
                questionnaire = Project.get(dbm,
                                            form.cleaned_data['project_id'])
                questionnaire.associate_data_sender_to_project(
                    dbm, reporter_id)
                questionnaire = questionnaire.name
            else:
                questionnaire = ""
            if not len(form.errors):
                UserActivityLog().log(request,
                                      action=REGISTERED_DATA_SENDER,
                                      detail=json.dumps(
                                          dict({"Unique ID": reporter_id})),
                                      project=questionnaire)
            form = ReporterRegistrationForm(
                initial={'project_id': form.cleaned_data['project_id']})
        return render_to_response(
            'datasender_form.html', {
                'form': form,
                'message': message,
                'success': reporter_id is not None,
                'project_inks': entity_links,
                'current_language': translation.get_language(),
                'registration_link': '/entity/datasender/register/',
            },
            context_instance=RequestContext(request))
Esempio n. 2
0
def create_data_sender_and_web_user(request, project_id=None):
    manager = get_database_manager(request.user)
    project, project_links = _get_project_and_project_link(manager, project_id)
    in_trial_mode = _in_trial_mode(request)

    if request.method == 'GET':
        form = ReporterRegistrationForm(initial={'project_id': project_id})
        return render_to_response('project/register_datasender.html', {
            'project': project,
            'project_links': project_links,
            'is_quota_reached': is_quota_reached(request),
            'form': form,
            'in_trial_mode': in_trial_mode,
            'current_language': translation.get_language()
        }, context_instance=RequestContext(request))

    if request.method == 'POST':
        org_id = request.user.get_profile().org_id
        form = ReporterRegistrationForm(org_id=org_id, data=request.POST)
        try:
            reporter_id, message = process_create_data_sender_form(manager, form, org_id)
        except DataObjectAlreadyExists as e:
            message = _("Data Sender with Unique Identification Number (ID) = %s already exists.") % e.data[1]

        if not len(form.errors) and reporter_id:
            project.associate_data_sender_to_project(manager, reporter_id)
            if form.requires_web_access():
                email_id = request.POST['email']
                create_single_web_user(org_id=org_id, email_address=email_id, reporter_id=reporter_id,
                                       language_code=request.LANGUAGE_CODE)
            UserActivityLog().log(request, action=REGISTERED_DATA_SENDER,
                                  detail=json.dumps(dict({"Unique ID": reporter_id})), project=project.name)
        if message is not None and reporter_id:
            form = ReporterRegistrationForm(initial={'project_id': form.cleaned_data['project_id']})
        context = {'form': form, 'message': message, 'in_trial_mode': in_trial_mode, 'success': reporter_id is not None}
        return render_to_response('datasender_form.html',
                                  context,
                                  context_instance=RequestContext(request))
Esempio n. 3
0
    def test_create_single_web_user(self):
        org = Mock(spec=Organization)
        org.org_id = "org_id"
        org.account_type = "Basic"
        site = get_current_site(None)

        mock_entity = Mock(spec=Contact)
        mock_entity.value.return_value = 'test'

        users = User.objects.filter(email=WEB_USER_TEST_EMAIL)
        NGOUserProfile.objects.filter(org_id=org.org_id).delete()
        users.delete()

        with patch(
                "django.contrib.auth.tokens.default_token_generator.make_token"
        ) as make_token:
            make_token.return_value = "token"
            with patch(
                    "datawinners.accountmanagement.helper.get_database_manager_for_org"
            ) as get_dbm:
                get_dbm.return_value = Mock(spec=DatabaseManager)
                with patch(
                        "datawinners.accountmanagement.models.Organization.objects.get"
                ) as get_organization_mock:
                    get_organization_mock.return_value = org
                    with patch(
                            "datawinners.accountmanagement.helper.contact_by_short_code"
                    ) as reporter_entity:
                        with patch(
                                "datawinners.accountmanagement.helper.set_email_for_contact"
                        ) as set_email_for_contact_mock:
                            set_email_for_contact_mock.return_value = None
                            reporter_entity.return_value = mock_entity
                            create_single_web_user(org.org_id,
                                                   WEB_USER_TEST_EMAIL, "test",
                                                   "en")
                            user = User.objects.filter(
                                email=WEB_USER_TEST_EMAIL)[0]
                            emails = [
                                mail.outbox.pop()
                                for i in range(len(mail.outbox))
                            ]

                            self.assertEqual(1, len(emails))
                            sent_email = emails[0]

                            self.assertEqual(settings.EMAIL_HOST_USER,
                                             sent_email.from_email)
                            self.assertEqual([WEB_USER_TEST_EMAIL],
                                             sent_email.to)
                            ctx_dict = {
                                'domain': "localhost:8000",
                                'uid': int_to_base36(user.id),
                                'user': user,
                                'token': "token",
                                'protocol': 'http',
                                'account_type': org.account_type,
                                'site': site,
                            }
                            self.assertEqual(
                                render_to_string(
                                    'activatedatasenderemail/activation_email_subject_for_data_sender_account_en.txt'
                                ), sent_email.subject)
                            self.assertEqual(
                                render_to_string(
                                    'activatedatasenderemail/activation_email_for_data_sender_account_en.html',
                                    ctx_dict), sent_email.body)
Esempio n. 4
0
 def _send_email_to_datasender(self, email, org_id, reporter_entity, reporter_id, request):
     if not reporter_entity.is_contact and not User.objects.filter(email=email):
         create_single_web_user(org_id, email, reporter_id, request.LANGUAGE_CODE)
     return email
Esempio n. 5
0
 def _give_web_access_to_successful_datasender_registration(self, form, org_id, reporter_id, request):
     if len(form.errors) == 0 and form.requires_web_access() and reporter_id and \
                     form.cleaned_data['project_id'] != "":
         email_id = form.cleaned_data['email']
         create_single_web_user(org_id=org_id, email_address=email_id, reporter_id=reporter_id,
                                language_code=request.LANGUAGE_CODE)