Example #1
0
def set_locale(request):
    user = request.user
    user_settings = user.settings

    available_languages = constants.AVAILABLE_LANGUAGES
    period = get_period_from_request(request)
    if request.method == "POST":
        locale = request.POST.get("locale", "")
        request._LOCALE_ = locale
        if locale and locale in available_languages:
            user_settings.language = locale
            user_settings.save()
            referrer = request.cookies.get('referrer')
            headers = request.response.headers
            request.response.set_cookie('_LOCALE_', locale)
            request.session.flash(_("Language changed successfully"),
                                  "success")

            if referrer:
                return HTTPFound(location=referrer, headers=headers)

    if request.method == "GET":
        referrer = request.referrer
        request.response.set_cookie('referrer', referrer)

    return {
        "available_languages": available_languages,
        "period": period,
        "user_settings": user_settings
    }
Example #2
0
    def assess_clinics(self):
        user = self.request.user
        clinics = []

        if user.location:
            clinics = user.location.clinics

        period = get_period_from_request(self.request)

        sample_frames = {}

        client_tools = {}

        _dict = {
            '2017':
            (constants.RECOMMENDED_SAMPLE_FRAMES, constants.CLIENT_TOOLS)
        }

        sample_frames, client_tools_cont = _dict.get(
            period.form_xpath, (constants.RECOMMENDED_SAMPLE_FRAMES_V2,
                                constants.CLIENT_TOOLS_V2))

        client_tools = tuple_to_dict_list(("id", "name"), client_tools_cont)

        return {
            'clinics': clinics,
            'period': period,
            'periods': ReportingPeriod.get_active_periods(),
            'client_tools': client_tools,
            'recommended_sample_frame': sample_frames,
        }
Example #3
0
def default(request):
    user = request.user

    period = get_period_from_request(request)

    user_setting = user.settings
    if user_setting:
        request.response.set_cookie('_LOCALE_', user_setting.language)

    url = request.route_url('clinics',
                            traverse=(),
                            _query={'period': period.id})

    # redirect to view depending on location owned
    group = user.group

    if group and group.name == groups.NATIONAL_OFFICIAL:
        url = request.route_url('states',
                                traverse=(),
                                _query={'period': period.id})

    if user.location:
        url = user.location.get_url(request, period)

    return HTTPFound(url)
Example #4
0
    def register(self):
        form = Form(RegistrationForm().bind(request=self.request),
                    buttons=('Save', ))

        if self.request.method == 'POST':
            data = self.request.POST.items()

            try:
                values = form.validate(data)

            except ValidationFailure:
                self.request.session.flash(
                    _(u"Please fix the highlighted errors below"), "error")

            else:
                try:
                    new_user = User()
                    new_user.update(values)

                    self.request.session.flash(
                        _(u"Success! {} user created".format(
                            new_user.profile.username)), 'success')

                    return HTTPFound(
                        self.request.route_url('admin',
                                               traverse=(new_user.id, 'edit')))

                except IntegrityError:
                    transaction.abort()
                    self.request.session.flash(_("Username already in use"),
                                               "error")

        return {'form': form, 'period': get_period_from_request(self.request)}
Example #5
0
    def edit(self):
        user = self.request.context
        dashboard_user = user

        if user.ona_user is not None:
            dashboard_user = dashboard_user.ona_user

        form = Form(UserForm().bind(request=self.request, user=dashboard_user),
                    buttons=('Save', Button(name='cancel', type='button')),
                    appstruct=user.appstruct)

        if self.request.method == 'POST':
            data = self.request.POST.items()
            try:
                values = form.validate(data)
            except ValidationFailure:
                pass
            else:
                dashboard_user.update(values)
                self.request.session.flash(_("Your changes have been saved"),
                                           'success')
                return HTTPFound(
                    self.request.route_url('admin',
                                           traverse=(dashboard_user.id,
                                                     'edit')))

        period = get_period_from_request(self.request)

        return {'form': form, 'user': dashboard_user, 'period': period}
Example #6
0
    def manage_clinics(self):
        user = self.request.user

        if self.request.has_permission(perms.SUPER_USER, self.request.context):
            clinics = Clinic.all()
        else:
            clinics = user.location.clinics

        period = get_period_from_request(self.request)
        return {'clinics': clinics, 'period': period}
Example #7
0
    def test_redirects_to_states_for_national_official(self):
        self.setup_test_data()
        self._create_dash_user("national", "national", "*****@*****.**",
                               groups.NATIONAL_OFFICIAL)
        user = User.newest()

        url = self.request.route_url('default')
        headers = self._login_dashboard_user(user)
        response = self.testapp.get(url, headers=headers)

        period = get_period_from_request(self.request)
        self.assertEqual(response.status_code, 302)
        self.assertEqual(
            self.request.route_url('states',
                                   traverse=(),
                                   _query={'period': period.id}),
            response.location)
Example #8
0
    def register_clinic(self):
        clinic = Clinic()
        period = get_period_from_request(self.request)

        form = Form(ClinicForm().bind(request=self.request, clinic=clinic),
                    button=('Save', Button(name='cancel', type='button')),
                    appstruct=clinic.appstruct)

        if self.request.method == 'POST':
            data = self.request.POST.items()
            try:
                values = form.validate(data)
            except ValidationFailure:
                pass
            else:
                try:
                    municipality = Municipality.get(
                        Municipality.id == values.get('municipality'))
                    clinic.update(values.get('name'), values.get('code'),
                                  municipality)
                    self.request.session.flash(
                        _("{} saved.".format(clinic.name)), "success")

                    return HTTPFound(
                        self.request.route_url('clinics',
                                               traverse=(clinic.id,
                                                         'edit_clinic')))

                except NoResultFound:
                    self.request.session.flash(
                        _("Cannot find selected municipality."), "error")

                except IntegrityError:
                    DBSession.rollback()

                    self.request.session.flash(
                        _("A clinic already exists with the \
                          provided CNES."), "error")

        return {'form': form, 'clinic': clinic, 'period': period}
Example #9
0
 def __init__(self, request):
     self.request = request
     self.period = get_period_from_request(self.request)
Example #10
0
 def __init__(self, request):
     self.request = request
     self.period = get_period_from_request(request)
     self.periods = ReportingPeriod.get_active_periods()
     self.key_indicators_key_labels = constants.INDICATOR_LABELS
Example #11
0
    def list(self):
        users = User.all()
        period = get_period_from_request(self.request)

        return {'users': users, 'period': period}