Example #1
0
    def wrapper(*args, **kw):
        user = args[0].user
        if user.get_profile().reporter:
            projects = get_all_projects(get_database_manager(user), user.get_profile().reporter_id)
        else:
            projects = get_all_projects(get_database_manager(user))
        project_ids = [project.id for project in projects]
        project_id = kw['project_id']
        if not project_id in project_ids:
            return HttpResponseRedirect(django_settings.DATASENDER_DASHBOARD)

        return f(*args, **kw)
    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 %s" % (user.user.first_name.capitalize(),
                                      user.user.last_name.capitalize()))
                          for user in users_rs])

        self.fields["user"].choices = all_users
        project_choices = [("", _("All Projects"))]
        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
Example #3
0
    def wrapper(*args, **kw):
        user = args[0].user
        if not len(get_all_projects(get_database_manager(args[0].user))) and not user.groups.filter(
            name="Data Senders").count() > 0:
            return HttpResponseRedirect("/start?page=" + args[0].path)

        return f(*args, **kw)
Example #4
0
def associate_user_with_existing_project(manager, reporter_id):
    rows = get_all_projects(manager)
    for row in rows:
        project_id = row['value']['_id']
        project = Project.load(manager.database, project_id)
        project.data_senders.append(reporter_id)
        project.save(manager, process_post_update=True)
Example #5
0
def index(request):

    manager = get_database_manager(request)
    rows = models.get_all_projects(dbm=manager)
    project_list = []
    for row in rows:
        analysis = log = "#"
        disabled = "disable_link"
        project_id = row['value']['_id']
        project = models.get_project(project_id, dbm=manager)
        questionnaire = manager.get(project['qid'], FormModel)
        questionnaire_code = questionnaire.form_code
        link = reverse(project_overview, args=[project_id])
        if project.state != ProjectState.INACTIVE:
            disabled = ""
            analysis = reverse(project_data,
                               args=[project_id, questionnaire_code])
            log = reverse(project_results,
                          args=[project_id, questionnaire_code])

        project = dict(name=row['value']['name'],
                       created=row['value']['created'],
                       type=row['value']['project_type'],
                       link=link,
                       log=log,
                       analysis=analysis,
                       disabled=disabled)
        project_list.append(project)
    return render_to_response('alldata/index.html', {'projects': project_list},
                              context_instance=RequestContext(request))
Example #6
0
def delete_project(request, project_id):
    manager = get_database_manager(request.user)
    project = Project.load(manager.database, project_id)
    helper.delete_project(manager, project)
    undelete_link = reverse(undelete_project, args=[project_id])
    if len(get_all_projects(manager)) > 0:
        messages.info(request, undelete_link)
    UserActivityLog().log(request, action=DELETED_PROJECT, project=project.name)
    return HttpResponseRedirect(reverse(index))
Example #7
0
    def wrapper(*args, **kw):
        superuser = False
        user = args[0].user
        if user.get_profile().reporter:
            projects = get_all_projects(get_database_manager(user),
                                        user.get_profile().reporter_id)
        else:
            projects = get_all_projects(get_database_manager(user))
            superuser = True
        project_ids = [project.id for project in projects]
        project_id = kw['project_id']
        if not project_id in project_ids:
            if not superuser:
                return HttpResponseRedirect(
                    django_settings.DATASENDER_DASHBOARD + "?associate=False")
            else:
                return HttpResponseRedirect(django_settings.HOME_PAGE +
                                            "?deleted=True")

        return f(*args, **kw)
Example #8
0
def delete_projects(request, project_id):
    manager = get_database_manager(request.user)
    questionnaire = Project.get(manager, project_id)
    dashboard_page = settings.HOME_PAGE + "?deleted=true"
    if questionnaire.is_void():
        return HttpResponseRedirect(dashboard_page)
    helper.delete_project(manager, questionnaire)
    undelete_link = reverse(undelete_projects, args=[project_id])
    if len(get_all_projects(manager)) > 0:
        messages.info(request, undelete_link)
        UserActivityLog().log(request, action=DELETED_PROJECT, project=questionnaire.name)
    return HttpResponseRedirect(reverse(index))
def update_submission_search_for_datasender_edition(entity_doc, dbm):
    from datawinners.search.submission_query import SubmissionQueryBuilder

    kwargs = {"%s%s"%(SubmissionIndexConstants.DATASENDER_ID_KEY, "_value"): entity_doc.short_code}
    fields_mapping = {SubmissionIndexConstants.DATASENDER_NAME_KEY: entity_doc.data['name']['value']}
    project_form_model_ids = [project.value['qid'] for project in get_all_projects(dbm)]

    filtered_query = SubmissionQueryBuilder().query_all(dbm.database_name, *project_form_model_ids, **kwargs)

    for survey_response in filtered_query.all():
        SubmissionIndexUpdateHandler(dbm.database_name, survey_response._type).update_field_in_submission_index(
            survey_response._id, fields_mapping)
    def get(self, request, *args, **kwargs):
        manager = get_database_manager(request.user)
        projects = get_all_projects(manager)
        in_trial_mode = utils.get_organization(request).in_trial_mode
        user_rep_id_name_dict = rep_id_name_dict_of_users(manager)

        return self.render_to_response({
            "user_dict": json.dumps(user_rep_id_name_dict),
            "projects": projects,
            'current_language': translation.get_language(),
            'in_trial_mode': in_trial_mode
        })
Example #11
0
def index(request):
    project_list = []
    rows = models.get_all_projects(dbm=get_database_manager(request))
    for row in rows:
        project_id = row['value']['_id']
        link = reverse(project_overview, args=[project_id])
        activate_link = reverse(activate_project, args=[project_id])
        project = dict(name=row['value']['name'], created=row['value']['created'], type=row['value']['project_type'],
                       link=link, activate_link=activate_link, state=row['value']['state'])
        project["created"] = project["created"].strftime("%d %B, %Y")
        project_list.append(project)
    return render_to_response('project/index.html', {'projects': project_list},
                              context_instance=RequestContext(request))
Example #12
0
def index(request):
    project_list = []
    rows = models.get_all_projects(dbm=get_database_manager(request.user))
    for row in rows:
        project_id = row['value']['_id']
        link = reverse('project-overview', args=[project_id])
        if row['value']['state'] == 'Inactive':
            link = reverse('edit_project', args=[project_id])
        activate_link = reverse('activate_project', args=[project_id])
        delete_link = reverse('delete_project', args=[project_id])
        project = dict(delete_link=delete_link, name=row['value']['name'], created=row['value']['created'],
                       type=row['value']['project_type'],
                       link=link, activate_link=activate_link, state=row['value']['state'])
        project_list.append(project)
    return render_to_response('project/index.html', {'projects': project_list},
                              context_instance=RequestContext(request))
Example #13
0
def index(request):
    project_list = []
    rows = models.get_all_projects(dbm=get_database_manager(request))
    for row in rows:
        project_id = row['value']['_id']
        link = reverse(project_overview, args=[project_id])
        activate_link = reverse(activate_project, args=[project_id])
        project = dict(name=row['value']['name'],
                       created=row['value']['created'],
                       type=row['value']['project_type'],
                       link=link,
                       activate_link=activate_link,
                       state=row['value']['state'])
        project["created"] = project["created"].strftime("%d %B, %Y")
        project_list.append(project)
    return render_to_response('project/index.html', {'projects': project_list},
                              context_instance=RequestContext(request))
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)
Example #15
0
def index(request):

    manager = get_database_manager(request)
    rows = models.get_all_projects(dbm=manager)
    project_list = []
    for row in rows:
        analysis = log = "#"
        disabled = "disable_link"
        project_id = row['value']['_id']
        project = models.get_project(project_id, dbm=manager)
        questionnaire = manager.get(project['qid'], FormModel)
        questionnaire_code=questionnaire.form_code
        link = reverse(project_overview, args=[project_id])
        if project.state != ProjectState.INACTIVE:
            disabled=""
            analysis = reverse(project_data, args=[project_id, questionnaire_code])
            log=reverse(project_results, args=[project_id, questionnaire_code])

        project = dict(name=row['value']['name'], created=row['value']['created'], type=row['value']['project_type'],
                       link=link, log=log, analysis=analysis, disabled=disabled)
        project_list.append(project)
    return render_to_response('alldata/index.html', {'projects': project_list}, context_instance=RequestContext(request))
def get_all_project_for_user(user):
    if user.get_profile().reporter:
        return models.get_all_projects(get_database_manager(user),
                                       user.get_profile().reporter_id)
    return models.get_all_projects(get_database_manager(user))
Example #17
0
def create_project(request):
    manager = get_database_manager(request.user)
    entity_list = get_all_entity_types(manager)
    entity_list = helper.remove_reporter(entity_list)
    projects = get_all_projects(get_database_manager(request.user))
    all_projects_name = [prj["value"]["name"] for prj in projects]
    name = generate_project_name(all_projects_name)
    project_summary = dict(name=name)
    ngo_admin = NGOUserProfile.objects.get(user=request.user)

    if request.method == 'GET':
        form = CreateProject(entity_list=entity_list, initial={'name': name})
        activity_report_questions = json.dumps(helper.get_activity_report_questions(manager), default=field_to_json)
        subject_report_questions = json.dumps(helper.get_subject_report_questions(manager), default=field_to_json)
        return render_to_response('project/create_project.html',
            {'form': form, "activity_report_questions": repr(activity_report_questions),
             'subject_report_questions': repr(subject_report_questions),
             'preview_links': get_preview_and_instruction_links(),
             'existing_questions': repr(activity_report_questions), 'project': project_summary,
             'questionnaire_code': helper.generate_questionnaire_code(manager), 'is_edit': 'false',
             'post_url': reverse(create_project)}, context_instance=RequestContext(request))

    if request.method == 'POST':
        project_info = json.loads(request.POST['profile_form'])
        form = CreateProject(entity_list, data=project_info)
        if form.is_valid():
            project = Project(name=form.cleaned_data['name'], goals=form.cleaned_data['goals'],
                project_type='survey', entity_type=form.cleaned_data['entity_type'],
                activity_report=form.cleaned_data['activity_report'],
                state=request.POST['project_state'], devices=[u'sms', u'web', u'smartPhone'],
                language=form.cleaned_data['language'])

            if ngo_admin.reporter_id is not None:
                project.data_senders.append(ngo_admin.reporter_id)

            try:
                questionnaire = create_questionnaire(post=request.POST, manager=manager,
                    entity_type=form.cleaned_data['entity_type'],
                    name=form.cleaned_data['name'], language=form.cleaned_data['language'])
            except (QuestionCodeAlreadyExistsException, QuestionAlreadyExistsException,
                    EntityQuestionAlreadyExistsException) as ex:
                return HttpResponse(
                    json.dumps({'success': False, 'error_message': _(ex.message), 'error_in_project_section': False}))

            try:
                project.qid = questionnaire.save()
            except DataObjectAlreadyExists:
                return HttpResponse(json.dumps(
                    {'success': False, 'error_message': "Questionnaire with this code already exists",
                     'error_in_project_section': False}))

            try:
                project.save(manager)
                UserActivityLog().log(request, action=CREATED_PROJECT, project=project.name, detail=project.name)
            except DataObjectAlreadyExists as ex:
                questionnaire.delete()
                message = _("%s with %s = %s already exists.") % (_(ex.data[2]), _(ex.data[0]), "'%s'" % project.name)
                return HttpResponse(
                    json.dumps({'success': False, 'error_message': message, 'error_in_project_section': True}))

            return HttpResponse(json.dumps({'success': True, 'project_id': project.id}))
Example #18
0
    def wrapper(*args, **kw):
        if not len(get_all_projects(get_database_manager(args[0]))):
            return HttpResponseRedirect("/start?page=" + args[0].path)

        return f(*args, **kw)
Example #19
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)
        questionnaire.associate_data_sender_to_project(manager, reporter_id)
Example #20
0
 def test_get_all_projects(self):
     projects = get_all_projects(self.dbm)
     self.assertEquals(len(projects), 2)
Example #21
0
def delete_datasender_from_project(manager, all_ids):
    for entity_id in all_ids:
        associated_projects = get_all_projects(manager, data_sender_id=entity_id)
        for associated_project in associated_projects:
            project = Project.load(manager.database, associated_project['value']['_id'])
            project.delete_datasender(manager, entity_id)
Example #22
0
    def wrapper(*args, **kw):
        if not len(get_all_projects(get_database_manager(args[0]))):
            return HttpResponseRedirect("/start?page=" + args[0].path)

        return f(*args, **kw)
Example #23
0
 def test_get_all_projects(self):
     projects = get_all_projects(self.dbm)
     self.assertEquals(len(projects), 2)
Example #24
0
def all_datasenders(request):
    manager = get_database_manager(request.user)
    projects = get_all_projects(manager)
    fields, old_labels, codes = get_entity_type_fields(manager)
    in_trial_mode = utils.get_organization(request).in_trial_mode
    labels = []
    for label in old_labels:
        if label != "What is the mobile number associated with the subject?":
            labels.append(_(label.replace('subject', 'Data Sender')))
        else:
            labels.append(_("What is the Data Sender's mobile number?"))
    grant_web_access = False
    if request.method == 'GET' and int(request.GET.get('web', '0')):
        grant_web_access = True
    if request.method == 'POST':
        error_message, failure_imports, success_message, imported_datasenders = import_module.import_data(
            request, manager, default_parser=XlsDatasenderParser)
        if len(imported_datasenders.keys()):
            UserActivityLog().log(
                request,
                action=IMPORTED_DATA_SENDERS,
                detail=json.dumps(
                    dict({
                        "Unique ID":
                        "[%s]" % ", ".join(imported_datasenders.keys())
                    })))
        all_data_senders = _get_all_datasenders(manager, projects,
                                                request.user)
        mobile_number_index = fields.index('mobile_number')
        add_imported_data_sender_to_trial_organization(
            request,
            imported_datasenders,
            all_data_senders=all_data_senders,
            index=mobile_number_index)

        return HttpResponse(
            json.dumps({
                'success':
                error_message is None and is_empty(failure_imports),
                'message':
                success_message,
                'error_message':
                error_message,
                'failure_imports':
                failure_imports,
                'all_data':
                all_data_senders,
                'imported_datasenders':
                imported_datasenders
            }))

    all_data_senders = _get_all_datasenders(manager, projects, request.user)
    return render_to_response('entity/all_datasenders.html', {
        'all_data': all_data_senders,
        'projects': projects,
        'grant_web_access': grant_web_access,
        "labels": labels,
        'current_language': translation.get_language(),
        'in_trial_mode': in_trial_mode
    },
                              context_instance=RequestContext(request))