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
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
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
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
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
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)
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))
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
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")
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"})
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)
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()