コード例 #1
0
ファイル: views.py プロジェクト: lwyszomi/cuma
 def post(self, request, *args, **kwargs):
     body = json.loads(request.body)
     language_code = body['language_code']
     client = get_client()
     user = queries.get_user(kwargs['user_id'])
     client.change_language(user['userCredentials']['username'],
                            language_code)
     return HttpResponse(status=200)
コード例 #2
0
    def authenticate_user(username, password):
        if not username or not password:
            return None

        dhis_client = get_client()
        try:
            response = dhis_client.get_user_profile(username, password)
        except HTTPError:
            return None
        if not response:
            raise DHIS2AuthenticationException(
                _('Bad response from DHIS2 service.'))
        return response
コード例 #3
0
ファイル: models.py プロジェクト: lwyszomi/cuma
 def change_language(self, language_code):
     client = get_client()
     client.change_language(self.username, language_code)
コード例 #4
0
ファイル: models.py プロジェクト: lwyszomi/cuma
 def ui_language(self):
     client = get_client()
     return client.get_user_ui_language(self.username)
コード例 #5
0
def get_user(user_id):
    dhis_client = get_client()
    return dhis_client.get_user(user_id)
コード例 #6
0
def get_users_without_role(role_id):
    dhis_client = get_client()
    return dhis_client.get_users_without_role(role_id)
コード例 #7
0
def get_dashboard_role():
    dhis_client = get_client()
    return dhis_client.get_dashboard_role()
コード例 #8
0
def save_user(user):
    dhis_client = get_client()
    return dhis_client.save_user(user)
コード例 #9
0
def get_role_by_name(params):
    dhis_client = get_client()
    return dhis_client.get_role_by_name(params)
コード例 #10
0
def get_users():
    dhis_client = get_client()
    return dhis_client.get_users()
コード例 #11
0
def get_user_groups():
    dhis_client = get_client()
    return dhis_client.get_user_groups()
コード例 #12
0
def get_countries():
    dhis_client = get_client()
    return dhis_client.get_countries()
コード例 #13
0
def get_organization_units():
    dhis_client = get_client()
    return dhis_client.get_organization_units()
コード例 #14
0
ファイル: views.py プロジェクト: lwyszomi/cuma
    def get_context_data(self, **kwargs):
        user_id = self.request.GET.get('user_id')
        if not user_id:
            raise Http404()
        user = queries.get_user(user_id)
        current_user = queries.get_user(self.request.user.external_id)
        organizations = user['organisationUnits']
        org_dict = defaultdict(list)
        user_roles = user['userCredentials']['userRoles']
        user_groups = user['userGroups']
        country_list = []
        for org in organizations:
            country = None
            if len(org['ancestors']) >= settings.COUNTRY_LEVEL:
                country = org['ancestors'][settings.COUNTRY_LEVEL - 1]

            if country:
                if not user_has_permissions_to_org_unit(current_user, country):
                    continue
                country_list.append(country)
                org_dict[country['displayName']].append(org['displayName'])
            else:
                if not user_has_permissions_to_org_unit(current_user, org):
                    continue
                country_list.append(org)
                org_dict[org['displayName']] = []

        roles = {}
        groups = {}
        other_roles = []
        regex = re.compile('.*:.*-.*')
        for country in country_list:
            r = []
            g = []
            if 'code' not in country:
                continue
            for role in user_roles:
                if country['code'] in role['displayName']:
                    r.append(role['displayName'])
                elif not regex.match(role['displayName']):
                    other_roles.append(role['displayName'])
            for group in user_groups:
                if country['code'] in group['displayName']:
                    g.append(group['displayName'])
            roles[country['displayName']] = r
            groups[country['displayName']] = g

        if other_roles:
            roles['Other Roles'] = sorted(list(set(other_roles)))

        kwargs['dhis_user'] = user

        client = get_client()

        user_language_code = client.get_user_ui_language(
            user['userCredentials']['username'])
        languages_dict = dict(settings.LANGUAGES)

        user_language = {'code': 'en', 'name': 'English'}

        if user_language_code in languages_dict:
            user_language = {
                'code': user_language_code,
                'name': languages_dict[user_language_code]
            }

        kwargs['user_language'] = user_language
        kwargs['languages'] = [{
            'code': code,
            'name': name
        } for code, name in settings.LANGUAGES]
        kwargs['change_language_url'] = reverse('save_language',
                                                kwargs={'user_id': user['id']})
        kwargs['organisations'] = dict(org_dict)
        kwargs['roles'] = dict(roles)
        kwargs['groups'] = dict(groups)
        return super(UserProfileJsonView, self).get_context_data(**kwargs)