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)
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
def change_language(self, language_code): client = get_client() client.change_language(self.username, language_code)
def ui_language(self): client = get_client() return client.get_user_ui_language(self.username)
def get_user(user_id): dhis_client = get_client() return dhis_client.get_user(user_id)
def get_users_without_role(role_id): dhis_client = get_client() return dhis_client.get_users_without_role(role_id)
def get_dashboard_role(): dhis_client = get_client() return dhis_client.get_dashboard_role()
def save_user(user): dhis_client = get_client() return dhis_client.save_user(user)
def get_role_by_name(params): dhis_client = get_client() return dhis_client.get_role_by_name(params)
def get_users(): dhis_client = get_client() return dhis_client.get_users()
def get_user_groups(): dhis_client = get_client() return dhis_client.get_user_groups()
def get_countries(): dhis_client = get_client() return dhis_client.get_countries()
def get_organization_units(): dhis_client = get_client() return dhis_client.get_organization_units()
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)