Beispiel #1
0
def create_web_users(org_id, reporter_details, language_code):
    duplicate_entries = {}
    [duplicate_entries.update({item[0]: item[1]}) for item in reporter_details.items() if
     [val for val in reporter_details.values()].count(item[1]) > 1]

    errors = []
    if len(duplicate_entries) > 0:
        content = json.dumps({'success': False, 'errors': errors, 'duplicate_entries': duplicate_entries})

    organization = Organization.objects.get(org_id=org_id)
    dbm = get_database_manager_for_org(organization)
    existent_email_addresses = User.objects.filter(email__in=reporter_details.values()).values('email')

    if len(existent_email_addresses) > 0:
        for duplicate_email in existent_email_addresses:
            errors.append("User with email %s already exists" % duplicate_email['email'])
        content = json.dumps({'success': False, 'errors': errors, 'duplicate_entries': duplicate_entries})
    if errors.__len__() == 0 and duplicate_entries.keys().__len__() == 0:
        for reporter_id, email in reporter_details.iteritems():
            reporter_entity = contact_by_short_code(dbm, reporter_id)
            reporter_email = email.lower()
            set_email_for_contact(dbm, reporter_entity, email=reporter_email)
            user = User.objects.create_user(reporter_email, reporter_email, 'test123')
            group = Group.objects.filter(name="Data Senders")[0]
            user.groups.add(group)
            user.first_name = reporter_entity.value(NAME_FIELD)
            user.save()
            profile = NGOUserProfile(user=user, org_id=org_id, title="Mr",
                                     reporter_id=reporter_id.lower())
            profile.save()

            send_email_to_data_sender(user, language_code, organization=organization)

        content = json.dumps({'success': True, 'message': "Users has been created"})
    return content
Beispiel #2
0
def __create_web_users(org_id, reporter_details, language_code):
    duplicate_email_ids = User.objects.filter(
        email__in=[x['email'].lower()
                   for x in reporter_details]).values('email')
    errors = []
    dbm = get_database_manager_for_org(Organization.objects.get(org_id=org_id))
    if len(duplicate_email_ids) > 0:
        for duplicate_email in duplicate_email_ids:
            errors.append("User with email %s already exists" %
                          duplicate_email['email'])
        content = json.dumps({'success': False, 'errors': errors})
    else:
        for reporter in reporter_details:
            reporter_entity = get_by_short_code(dbm, reporter['reporter_id'],
                                                [REPORTER])
            user = User.objects.create_user(reporter['email'].lower(),
                                            reporter['email'].lower(),
                                            'test123')
            group = Group.objects.filter(name="Data Senders")[0]
            user.groups.add(group)
            user.first_name = reporter_entity.value(NAME_FIELD)
            user.save()
            profile = NGOUserProfile(user=user,
                                     org_id=org_id,
                                     title="Mr",
                                     reporter_id=reporter['reporter_id'])
            profile.save()

            send_email_to_data_sender(user, language_code)

        content = json.dumps({
            'success': True,
            'message': "Users has been created"
        })
    return content
Beispiel #3
0
def is_mobile_number_unique_for_paid_account(org,mobile_number):
    manager = get_database_manager_for_org(org)
    try:
        find_reporters_by_from_number(manager, mobile_number)
        return False
    except NumberNotRegisteredException:
        return True
Beispiel #4
0
def is_mobile_number_unique_for_paid_account(org, mobile_number, reporter_id=None):
    manager = get_database_manager_for_org(org)
    from mangrove.transport.repository.reporters import find_reporters_by_from_number
    try:
        registered_reporters = find_reporters_by_from_number(manager, mobile_number)
    except NumberNotRegisteredException:
        return True
    if len(registered_reporters) == 1 and registered_reporters[0].short_code == reporter_id:
        return True
    return False
Beispiel #5
0
 def is_mobile_number_unique_for_the_account(self):
     dbm = get_database_manager_for_org(self.organization)
     datasenders = dbm.load_all_rows_in_view(
         "datasender_by_mobile",
         start_key=[self.mobile_number],
         end_key=[self.mobile_number, {}, {}])
     if len(datasenders) == 0 or self.is_the_datasender_is_current_user(
             datasenders):
         return True
     return False
Beispiel #6
0
 def is_mobile_number_unique_for_paid_account(self):
     manager = get_database_manager_for_org(self.organization)
     try:
         registered_reporters = find_reporters_by_from_number(
             manager, self.mobile_number)
     except NumberNotRegisteredException:
         return True, ''
     if len(registered_reporters) == 1 and registered_reporters[
             0].short_code == self.reporter_id:
         return True, ''
     return False, validation_message_dict['paid_account_duplicate']
 def delete_organizations(modeladmin, request, queryset):
     orgs = queryset.filter(status='Deactivated')
     for organization in orgs:
         dbm = get_database_manager_for_org(organization)
         organization.purge_all_data()
         del dbm.server[dbm.database_name]
         feed_database_name = "feed_" + dbm.database_name
         feed_dbm = feeds_db_for(feed_database_name)
         del feed_dbm.server[feed_database_name]
         es = get_elasticsearch_handle()
         es.delete_index(dbm.database_name)
Beispiel #8
0
 def delete_organizations(modeladmin, request, queryset):
     orgs = queryset.filter(status__in=['Deactivated', "Pending Activation"])
     for organization in orgs:
         dbm = get_database_manager_for_org(organization)
         organization.purge_all_data()
         del dbm.server[dbm.database_name]
         feed_database_name = "feed_" + dbm.database_name
         feed_dbm = feeds_db_for(feed_database_name)
         del feed_dbm.server[feed_database_name]
         es = get_elasticsearch_handle()
         try:
             es.delete_index(dbm.database_name)
         except Exception as e:
             logging.info("Could not delete index " + str(e.message))
Beispiel #9
0
def find_dbm(request):
    incoming_request = {}
    #This is the http post request. After this state, the request being sent is a python dictionary
    SMSMessageRequestProcessor().process(http_request=request, mangrove_request=incoming_request)
    SMSTransportInfoRequestProcessor().process(http_request=request, mangrove_request=incoming_request)
    organization, error = _get_organization(request)

    if error is not None:
        incoming_request['outgoing_message'] = error
        create_failure_log(error, incoming_request)
        return incoming_request

    incoming_request['dbm'] = get_database_manager_for_org(organization)
    incoming_request['organization'] = organization

    incoming_request['next_state'] = process_sms_counter
    return incoming_request
Beispiel #10
0
def deactivate_poll_questionnaire():
    now = datetime.now()
    try:
        logger.info("Deactivating polls for date :- %s" % now)
        paid_organizations = _get_active_paid_organizations()
        for org in paid_organizations:
            dbm = get_database_manager_for_org(org)
            projects = dbm.load_all_rows_in_view("all_projects")
            for project_row in projects:
                project_doc = ProjectDocument.wrap(project_row.get('value'))
                project = Project.new_from_doc(dbm, project_doc)
                if project.end_date:
                    if project.end_date.date() <= now.date():
                        project.active = "deactivated"
                        project.save()
    except Exception:
        logger.exception("Exception while deactivating poll for this project")
Beispiel #11
0
def create_web_users(org_id, reporter_details, language_code):
    organization = Organization.objects.get(org_id=org_id)
    dbm = get_database_manager_for_org(organization)
    for reporter_id, email in reporter_details.iteritems():
        reporter_entity = contact_by_short_code(dbm, reporter_id)
        reporter_email = email.lower()
        set_email_for_contact(dbm, reporter_entity, email=reporter_email)
        user = User.objects.create_user(reporter_email, reporter_email, 'test123')
        group = Group.objects.filter(name="Data Senders")[0]
        user.groups.add(group)
        user.first_name = reporter_entity.value(NAME_FIELD)
        user.save()
        profile = NGOUserProfile(user=user, org_id=org_id, title="Mr",
                                 reporter_id=reporter_id.lower())
        profile.save()

        send_email_to_data_sender(user, language_code, organization=organization)
    return json.dumps({'success': True, 'message': "Users has been created"})
Beispiel #12
0
def find_dbm(request):
    send_to_carbon(create_path('submissions.sms'), 1)
    incoming_request = {}
    # This is the http post request. After this state, the request being sent is a python dictionary
    SMSMessageRequestProcessor().process(http_request=request, mangrove_request=incoming_request)
    SMSTransportInfoRequestProcessor().process(http_request=request, mangrove_request=incoming_request)
    organization, error = _get_organization(request)

    if error is not None:
        incoming_request['outgoing_message'] = error
        create_failure_log(error, incoming_request)
        return incoming_request

    incoming_request['dbm'] = get_database_manager_for_org(organization)
    incoming_request['feeds_dbm'] = get_feeds_db_for_org(organization)
    incoming_request['organization'] = organization
    incoming_request['message_id'] = request.POST.get('message_id')
    translation.activate(organization.language)

    incoming_request['next_state'] = check_account_and_datasender
    return incoming_request
 def setUp(self):
     organization = Organization.objects.get(pk=DEFAULT_TEST_ORG_ID)
     self.manager = utils.get_database_manager_for_org(organization)
Beispiel #14
0
 def process(self, http_request, mangrove_request):
     mangrove_request['dbm'] = get_database_manager_for_org(
         mangrove_request['organization'])
email_addresses = [
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**',
    '*****@*****.**', '*****@*****.**', '*****@*****.**'
]

organization = Organization.objects.get(org_id=org_id)

print "Organization in trail mode:%s" % organization.in_trial_mode
dbm = get_database_manager_for_org(organization)


def _delete_user_entry(profiles):
    user_profile = profiles[0]
    profile_reporter_id = user_profile.reporter_id

    if profile_reporter_id.lower() == profile_reporter_id:
        print "Not deleting user since the reporter id is already lowercase."
    else:
        entity_to_be_deleted = get_by_short_code_include_voided(
            dbm, profile_reporter_id.lower(), ['reporter'])
        print "User void status:%s" % entity_to_be_deleted.is_void()
        if entity_to_be_deleted.is_void():
            print "Deleting user."
            user_profile.user.delete()