def get_all_project_for_user(user): if user.get_profile().reporter: questionnaires = [ row['value'] for row in get_all_projects(get_database_manager(user), user.get_profile().reporter_id) ] return remove_poll_questionnaires(questionnaires) if user.is_ngo_admin() or user.is_extended_user(): questionnaires = [ row['value'] for row in get_all_projects(get_database_manager(user)) ] return questionnaires questionnaires_as_datasender = [ row['value'] for row in get_all_projects(get_database_manager(user), user.get_profile().reporter_id) ] questionnaires_as_pm = get_questionnaires_for_user( user.id, get_database_manager(user)) for q_ds in questionnaires_as_datasender: already_exists = [ True for q_pm in questionnaires_as_pm if q_pm.get('_id') == q_ds.get('_id') ] if True not in already_exists: questionnaires_as_pm.append(q_ds) return questionnaires_as_pm
def get_all_project_for_user( user, get_project_info_function=default_get_project_info, dbm=None): if user.get_profile().reporter: return [ get_project_info_function(dbm, row['value']) for row in get_all_projects(get_database_manager(user), user.get_profile().reporter_id) if row['value'].get('is_poll', False) is False ] if user.is_ngo_admin() or user.is_extended_user(): questionnaires = [ get_project_info_function(dbm, row['value']) for row in get_all_projects(get_database_manager(user)) ] return questionnaires questionnaires_as_datasender = [ get_project_info_function(dbm, row['value']) for row in get_all_projects(get_database_manager(user), user.get_profile().reporter_id) ] questionnaires_as_pm = get_questionnaires_for_user( user.id, get_database_manager(user), project_info_function=get_project_info_function) for q_ds in questionnaires_as_datasender: already_exists = [ True for q_pm in questionnaires_as_pm if q_pm.get('_id') == q_ds.get('project_id', q_ds.get('_id')) ] if True not in already_exists: questionnaires_as_pm.append(q_ds) return questionnaires_as_pm
def link_user_to_all_projects(user_id): user = User.objects.get(pk=user_id) reporter_id = user.get_profile().reporter_id manager = get_database_manager(user) rows = get_all_projects(manager) for row in rows: make_user_data_sender_with_project(manager, reporter_id, row['value']['_id'])
def associate_user_with_existing_project(manager, reporter_id): rows = get_all_projects(manager) for row in rows: project_id = row['value']['_id'] questionnaire = Project.get(manager, project_id) reporters_to_associate = [reporter_id] questionnaire.associate_data_sender_to_project(manager, reporters_to_associate) for data_senders_code in reporters_to_associate: update_datasender_index_by_id(data_senders_code, manager)
def delete_datasenders_from_project(manager, data_sender_ids): from datawinners.search.datasender_index import update_datasender_index_by_id for entity_id in data_sender_ids: associated_projects = get_all_projects(manager, data_sender_id=entity_id) for associated_project in associated_projects: project = Project.get(manager, associated_project['value']['_id']) project.delete_datasender(manager, entity_id) update_datasender_index_by_id(entity_id, manager)
def update_submission_search_for_datasender_edition(dbm, short_code, ds_name): kwargs = {"%s%s" % (SubmissionIndexConstants.DATASENDER_ID_KEY, "_value"): short_code} fields_mapping = {SubmissionIndexConstants.DATASENDER_NAME_KEY: ds_name} project_form_model_ids = [project.id for project in get_all_projects(dbm, short_code)] query = elasticutils.S().es(urls=ELASTIC_SEARCH_URL, timeout=ELASTIC_SEARCH_TIMEOUT).indexes(dbm.database_name).doctypes(*project_form_model_ids) query = query[:query.count()].filter(**kwargs) for survey_response in query.values_dict('void'): SubmissionIndexUpdateHandler(dbm.database_name, survey_response._type).update_field_in_submission_index( survey_response._id, fields_mapping)
def dissociate_user_as_datasender_with_projects(reporter_id, user, previous_role, selected_questionnaires): manager = get_database_manager(user) if previous_role == 'Project Managers': user_permission = get_user_permission(user.id, manager) project_ids = user_permission.project_ids if user_permission else [] elif previous_role == 'Extended Users': rows = get_all_projects(manager) project_ids = [] for row in rows: project_ids.append(row['value']['_id']) remove_user_as_datasender_for_projects(manager, project_ids, selected_questionnaires, reporter_id) return
def _is_pm_data_sender_for_project(user, project_id): if user.is_project_manager(): questionnaires_as_datasender = [ row['value'] for row in get_all_projects(get_database_manager(user), user.get_profile().reporter_id) ] qn_as_ds = [] for q_ds in questionnaires_as_datasender: qn_as_ds.append(q_ds.get('_id')) questionnaires_as_pm = get_questionnaires_for_user( user.id, get_database_manager(user)) qn_as_pm = [] for q_pm in questionnaires_as_pm: qn_as_pm.append(q_pm.get('_id')) questionnaires_only_as_datasender = list(set(qn_as_ds) - set(qn_as_pm)) return project_id in questionnaires_only_as_datasender return False
def generate_template_data(): templates = [] #database which has template specific projects. test_dbm = get_db_manager('hni_templates_aoi959205') projects = get_all_projects(test_dbm) for doc in projects: form_model = FormModel.get(test_dbm, doc.id) json_obj = {} json_obj.update({"name": form_model.name}) json_obj.update({"language": form_model.activeLanguages[0]}) json_obj.update({"category": _get_category(form_model)}) json_obj.update({"form_code": form_model.form_code}) fields = _remove_entity_field(form_model) json_obj.update({"json_fields": [field_to_json(f) for f in fields]}) json_obj.update({"validators": [validator.to_json() for validator in form_model.validators]}) templates.append(json_obj) file = os.path.dirname(__file__) + '/../datawinners/questionnaire/template_data.json' with codecs.open(file, 'w', encoding='utf-8') as outfile: json.dump(templates, outfile, ensure_ascii=False, indent=4)
def update_submission_search_for_datasender_edition(dbm, short_code, datasender_dict): kwargs = { "%s%s" % (SubmissionIndexConstants.DATASENDER_ID_KEY, "_value"): short_code } name = datasender_dict['name'] if datasender_dict[ 'name'] else datasender_dict['mobile_number'] fields_mapping = { SubmissionIndexConstants.DATASENDER_NAME_KEY: name, 'datasender': datasender_dict } project_form_model_ids = [ project.id for project in get_all_projects(dbm, short_code) ] chunk, i = ES_NUMBER_OF_TYPES_SUPPORTED, 0 while i <= len(project_form_model_ids) / chunk: process_by_chunk_questionnaire( dbm, project_form_model_ids[i * chunk:(i + 1) * chunk - 1], fields_mapping, kwargs) i += 1
def __init__(self, *args, **kwargs): request = kwargs.pop("request", None) assert request is not None forms.Form.__init__(self, *args, **kwargs) org_id = request.user.get_profile().org_id users_rs = NGOUserProfile.objects.select_related().\ extra(select={'lower_username': '******'}).\ filter(org_id=org_id).order_by("lower_username") all_users = [("", _("All Users"))] all_users.extend([(user.user.id, "%s" % (user.user.first_name)) for user in users_rs]) self.fields["user"].choices = all_users project_choices = [("", _("All Questionnaires"))] projects = get_all_projects(get_database_manager(request.user)) project_choices.extend( sorted([(prj["value"]["name"], prj["value"]["name"].capitalize()) for prj in projects], key=itemgetter(1, 0))) self.fields["project"].choices = project_choices
def associate_user_with_all_projects_of_organisation(manager, reporter_id): rows = get_all_projects(manager) for row in rows: make_user_data_sender_with_project(manager, reporter_id, row['value']['_id'])
def get_all_project_for_user(user): if user.get_profile().reporter: return get_all_projects(get_database_manager(user), user.get_profile().reporter_id) return get_all_projects(get_database_manager(user))
def get_all_project_for_user(user): if user.get_profile().reporter: questionnaires = get_all_projects(get_database_manager(user), user.get_profile().reporter_id) return remove_poll_questionnaires(questionnaires) return get_all_projects(get_database_manager(user))
def test_get_all_projects(self): projects = get_all_projects(self.manager) self.assertEquals(len(projects), 2)