def associate_account_users_to_project(manager, questionnaire): user_ids = get_all_user_repids_for_org( get_organization_from_manager(manager).org_id) # for id in user_ids: questionnaire.associate_data_sender_to_project(manager, user_ids) for data_senders_code in user_ids: update_datasender_index_by_id(data_senders_code, manager)
def make_user_data_sender_with_project(manager, reporter_id, project_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 _associate_datasender_to_poll_questionnaire(self, current_project_id, dbm, short_codes): questionnaire = Project.get(dbm, current_project_id) questionnaire.associate_data_sender_to_project(dbm, short_codes) questionnaire.save() for short_code in short_codes: update_datasender_index_by_id(short_code, dbm)
def post(self, request, *args, **kwargs): manager = get_database_manager(request.user) questionnaires = self._get_projects(manager, request) projects_name = Set() removed_rep_ids = Set() selected_rep_ids = data_sender_short_codes(request, manager) for questionnaire in questionnaires: dashboard_page = settings.HOME_PAGE + "?deleted=true" if questionnaire.is_void(): return HttpResponseRedirect(dashboard_page) for rep_id in selected_rep_ids: if rep_id in questionnaire.data_senders: questionnaire.delete_datasender(manager, rep_id) update_datasender_index_by_id(rep_id, manager) projects_name.add(questionnaire.name.capitalize()) removed_rep_ids.add(rep_id) if len(removed_rep_ids): UserActivityLog().log(request, action=REMOVED_DATA_SENDER_TO_QUESTIONNAIRES, detail=json.dumps({"Unique ID": "[%s]" % ", ".join(removed_rep_ids), "Projects": "[%s]" % ", ".join(projects_name)})) return HttpResponse( json.dumps({"success": True, "message": _("The Data Sender(s) are removed from Questionnaire(s) successfully")}))
def _associate_datasender_to_questionnaire(self, dbm, reporter_id, questionnaire_id): questionnaire = Project.get(dbm, questionnaire_id) reporters_to_associate = [reporter_id] questionnaire.associate_data_sender_to_project(dbm, reporters_to_associate) for data_senders_code in reporters_to_associate: update_datasender_index_by_id(data_senders_code, dbm) return questionnaire.name
def associate_data_sender_to_project(self, dbm, data_sender_code): if data_sender_code in self.data_senders: return from datawinners.search.datasender_index import update_datasender_index_by_id # Normally this case should not happen. However in a special case # blank id was sent from client side. So introduced this check. if data_sender_code: self.data_senders.append(data_sender_code) self.save(process_post_update=False) update_datasender_index_by_id(data_sender_code, dbm)
def remove_user_as_datasender_for_projects(manager, project_ids, selected_questionnaires, reporter_id): removed_questionnaires = list( set(project_ids) - set(selected_questionnaires)) for questionnaire in removed_questionnaires: project = Project.get(manager, questionnaire) project.delete_datasender(manager, reporter_id) update_datasender_index_by_id(reporter_id, manager)
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 _convert_contacts_to_datasenders(self, contact_short_codes, manager, request): datasender_id_email_map = {} for contact_short_code in contact_short_codes: datasender = contact_by_short_code(manager, contact_short_code) if datasender.is_contact: datasender.change_status_to_datasender() datasender.save(process_post_update=False) if datasender.email: datasender_id_email_map.update({datasender.short_code: datasender.email}) update_datasender_index_by_id(contact_short_code, manager) org_id = get_org_id(request) create_web_users(org_id, datasender_id_email_map, request.LANGUAGE_CODE)
def _add_imported_datasenders_to_project(imported_datasenders_id, manager, project): project.data_senders.extend(imported_datasenders_id) project.save(process_post_update=False) for datasender_id in imported_datasenders_id: update_datasender_index_by_id(datasender_id, manager)
def delete_datasender(self, dbm, entity_id): from datawinners.search.datasender_index import update_datasender_index_by_id self.data_senders.remove(entity_id) self.save(process_post_update=False) update_datasender_index_by_id(entity_id, dbm)