Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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")}))
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
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)
Ejemplo n.º 12
0
    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)