def account_settings(request): """Render the current user's account settings page. Args: request (HttpRequest) Returns: HttpResponse: 200 if the page was sent successfully HttpResponse: 302 if not logged in (redirect to login page) HttpResponse: 405 if using an unsupported HTTP method Example usage: GET /account/settings """ if should_redirect_to_account_microfrontend(): url = settings.ACCOUNT_MICROFRONTEND_URL duplicate_provider = pipeline.get_duplicate_provider(messages.get_messages(request)) if duplicate_provider: url = '{url}?{params}'.format( url=url, params=urllib.parse.urlencode({ 'duplicate_provider': duplicate_provider, }), ) return redirect(url) context = account_settings_context(request) return render_to_response('student_account/account_settings.html', context)
def account_settings(request): """Render the current user's account settings page. Args: request (HttpRequest) Returns: HttpResponse: 200 if the page was sent successfully HttpResponse: 302 if not logged in (redirect to login page) HttpResponse: 405 if using an unsupported HTTP method Example usage: GET /account/settings """ if should_redirect_to_account_microfrontend(): url = settings.ACCOUNT_MICROFRONTEND_URL duplicate_provider = pipeline.get_duplicate_provider( messages.get_messages(request)) if duplicate_provider: url = '{url}?{params}'.format( url=url, params=six.moves.urllib.parse.urlencode({ 'duplicate_provider': duplicate_provider, }), ) return redirect(url) #Added by Mahendra if request.is_ajax(): user_id = request.user.id if request.method == 'GET': if 'mobile_number' in request.GET: phone = request.GET.get('mobile_number') try: uphone = extrafields.objects.get(phone=phone) if uphone.user_id != user_id: msg = {} msg['msg'] = "Mobile number is associated with different account." msg['status'] = 400 except ObjectDoesNotExist: gmember = extrafields.objects.filter( user_id=user_id).update(phone=phone) msg = {} msg['msg'] = 'Mobile number updated succesfully' msg['status'] = 200 return JsonResponse(msg, status=200, safe=False) elif 'extra_data' in request.GET: extra_data = request.GET.get('extra_data') speczid = request.GET.get('specz') if extra_data != '' and speczid != 0: gmember = extrafields.objects.filter( user_id=user_id).update(user_extra_data=extra_data, specialization_id=speczid) if gmember: msg = {} msg['msg'] = 'IDAVL updated succesfully' msg['status'] = 200 else: msg = {} msg['msg'] = 'IDAVL not updated succesfully' msg['status'] = 400 else: msg = {} msg['msg'] = 'Please enter data' msg['status'] = 400 return JsonResponse(msg, status=200, safe=False) else: vfields = request.GET for key in vfields: dict1 = {} vfield = key columname = vfield fieldvalue = vfields[key] #log.info('column->data %s,%s',columname,fieldvalue) gmember = extrafields.objects.filter( user_id=user_id).update(**{columname: fieldvalue}) # Below code to send pincode and reg_num data to docvidya if 'rpincode' or 'reg_num' in request.GET: import json import requests gmember = extrafields.objects.get(user_id=user_id) data = request.GET.dict() data_final = {} data_final["emailAddress"] = str(request.user.email) data_final["pincode"] = str(gmember.rpincode) data_final["reg_num"] = str(gmember.reg_num) #log.info(" data_final%s",data_final) data_final = json.dumps(data_final) #log.info(" data_final%s",data_final) response = requests.post( "https://drlprdoic-bmjxfxmxbrbt-bo.integration.ocp.oraclecloud.com:443/ic/api/integration/v1/flows/rest/DOCV_UPDATE_USER_DOCMODE/1.0/DocVUpdate", data_final, headers={ 'Authorization': 'Basic YmhhdW1pay5zaGFoQGlubm92YWN4LmNvbTpJbm5vdmFjeEAxMjM=', 'Content-Type': 'application/json' }) #log.info("docvidya responseee %s",response.__dict__) msg = ' Updated succesfully' return HttpResponse(msg) context = account_settings_context(request) return render_to_response('student_account/account_settings.html', context)
def account_settings_context(request): """ Context for the account settings page. Args: request: The request object. Returns: dict """ user = request.user year_of_birth_options = [(six.text_type(year), six.text_type(year)) for year in UserProfile.VALID_YEARS] try: user_orders = get_user_orders(user) except: # pylint: disable=bare-except log.exception('Error fetching order history from Otto.') # Return empty order list as account settings page expect a list and # it will be broken if exception raised user_orders = [] beta_language = {} dark_lang_config = DarkLangConfig.current() if dark_lang_config.enable_beta_languages: user_preferences = get_user_preferences(user) pref_language = user_preferences.get('pref-lang') if pref_language in dark_lang_config.beta_languages_list: beta_language['code'] = pref_language beta_language['name'] = settings.LANGUAGE_DICT.get(pref_language) context = { 'auth': {}, 'duplicate_provider': None, 'nav_hidden': True, 'fields': { 'country': { 'options': list(countries), }, 'gender': { 'options': [(choice[0], _(choice[1])) for choice in UserProfile.GENDER_CHOICES], }, 'language': { 'options': released_languages(), }, 'level_of_education': { 'options': [(choice[0], _(choice[1])) for choice in UserProfile.LEVEL_OF_EDUCATION_CHOICES], }, 'password': { 'url': reverse('password_reset'), }, 'year_of_birth': { 'options': year_of_birth_options, }, 'preferred_language': { 'options': all_languages(), }, 'time_zone': { 'options': TIME_ZONE_CHOICES, } }, 'platform_name': configuration_helpers.get_value('PLATFORM_NAME', settings.PLATFORM_NAME), 'password_reset_support_link': configuration_helpers.get_value('PASSWORD_RESET_SUPPORT_LINK', settings.PASSWORD_RESET_SUPPORT_LINK) or settings.SUPPORT_SITE_LINK, 'user_accounts_api_url': reverse("accounts_api", kwargs={'username': user.username}), 'user_preferences_api_url': reverse('preferences_api', kwargs={'username': user.username}), 'disable_courseware_js': True, 'show_program_listing': ProgramsApiConfig.is_enabled(), 'show_dashboard_tabs': True, 'order_history': user_orders, 'disable_order_history_tab': should_redirect_to_order_history_microfrontend(), 'enable_account_deletion': configuration_helpers.get_value( 'ENABLE_ACCOUNT_DELETION', settings.FEATURES.get('ENABLE_ACCOUNT_DELETION', False)), 'extended_profile_fields': _get_extended_profile_fields(), 'beta_language': beta_language, } enterprise_customer = enterprise_customer_for_request(request) update_account_settings_context_for_enterprise(context, enterprise_customer, user) if third_party_auth.is_enabled(): # If the account on the third party provider is already connected with another edX account, # we display a message to the user. context['duplicate_provider'] = pipeline.get_duplicate_provider( messages.get_messages(request)) auth_states = pipeline.get_provider_user_states(user) context['auth']['providers'] = [ { 'id': state.provider.provider_id, 'name': state.provider.name, # The name of the provider e.g. Facebook 'connected': state. has_account, # Whether the user's edX account is connected with the provider. # If the user is not connected, they should be directed to this page to authenticate # with the particular provider, as long as the provider supports initiating a login. 'connect_url': pipeline.get_login_url( state.provider.provider_id, pipeline.AUTH_ENTRY_ACCOUNT_SETTINGS, # The url the user should be directed to after the auth process has completed. redirect_url=reverse('account_settings'), ), 'accepts_logins': state.provider.accepts_logins, # If the user is connected, sending a POST request to this url removes the connection # information for this provider from their edX account. 'disconnect_url': pipeline.get_disconnect_url(state.provider.provider_id, state.association_id), # We only want to include providers if they are either currently available to be logged # in with, or if the user is already authenticated with them. } for state in auth_states if state.provider.display_for_login or state.has_account ] return context