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
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)
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)
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 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))
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)
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 })
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 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))
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 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))
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}))
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)
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)
def test_get_all_projects(self): projects = get_all_projects(self.dbm) self.assertEquals(len(projects), 2)
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)
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))