def as_view(request, template, data, slug, just_modify_data=False): ### add settings to the request so that the template ### can adjust what it displays depending on settings. data['settings'] = django.conf.settings if request.user.is_authenticated() or 'cookies_work' in request.session: # Great! Cookies work. pass else: request.session.set_test_cookie() if request.session.test_cookie_worked(): request.session.delete_test_cookie() request.session['cookies_work'] = True # Where should the user be sent if she clicks 'logout'? # Depends on whether this is a login-requiring page. try: view_function, _, _ = resolve(request.path) is_login_required = isinstance(view_function, django.contrib.auth.decorators._CheckLogin) if is_login_required: data['go_here_after_logging_in_or_out'] = '/' else: data['go_here_after_logging_in_or_out'] = request.get_full_path() except: data['go_here_after_logging_in_or_out'] = '/' data['slug'] = slug # Account settings uses this. if just_modify_data: return data else: return render_response(request, template, data)
def as_view(request, template, data, slug): if request.user.is_authenticated() or 'cookies_work' in request.session: # Great! Cookies work. pass else: request.session.set_test_cookie() if request.session.test_cookie_worked(): request.session.delete_test_cookie() request.session['cookies_work'] = True # Where should the user be sent if she clicks 'logout'? # Depends on whether this is a login-requiring page. try: view_function, _, _ = resolve(request.path) is_login_required = isinstance( view_function, django.contrib.auth.decorators._CheckLogin) if is_login_required: data['go_here_after_logging_in_or_out'] = '/' else: data['go_here_after_logging_in_or_out'] = request.get_full_path() except: data['go_here_after_logging_in_or_out'] = '/' data['slug'] = slug # Account settings uses this. return render_response(request, template, data)
def widget_display_js(request, user_to_display__username): # FIXME: In the future, use: html_doc = widget_display_string(request, user_to_display__username) # to generate html_doc encoded_for_js = simplejson.dumps(html_doc) # Note: using application/javascript as suggested by # http://www.ietf.org/rfc/rfc4329.txt return render_response(request, 'base/append_ourselves.js', {'in_string': encoded_for_js}, mimetype='application/javascript')
def page_to_js(request): # FIXME: In the future, use: # from django.template.loader import render_to_string # to generate html_doc html_doc = "<strong>zomg</strong>" encoded_for_js = simplejson.dumps(html_doc) # Note: using application/javascript as suggested by # http://www.ietf.org/rfc/rfc4329.txt return render_response(request, 'base/append_ourselves.js', {'in_string': encoded_for_js}, mimetype='application/javascript')
def as_view(request, template, data, slug): if request.user.is_authenticated() or "cookies_work" in request.session: # Great! Cookies work. pass else: request.session.set_test_cookie() if request.session.test_cookie_worked(): request.session.delete_test_cookie() request.session["cookies_work"] = True # Where should the user be sent if she clicks 'logout'? # Depends on whether this is a login-requiring page. try: view_function, _, _ = resolve(request.path) is_login_required = isinstance(view_function, django.contrib.auth.decorators._CheckLogin) if is_login_required: data["go_here_after_logging_in_or_out"] = "/" else: data["go_here_after_logging_in_or_out"] = request.get_full_path() except: data["go_here_after_logging_in_or_out"] = "/" data["slug"] = slug # Account settings uses this. return render_response(request, template, data)
def fetch_bugs(request, invalid_subscribe_to_alert_form=None): # Make the query string keys lowercase using a redirect. if any([k.lower() != k for k in request.GET.keys()]): new_GET = {} for key in request.GET.keys(): new_GET[key.lower()] = request.GET[key] return HttpResponseRedirect(reverse(fetch_bugs) + '?' + mysite.base.unicode_sanity.urlencode(new_GET)) if request.user.is_authenticated(): person = request.user.get_profile() suggestion_keys = person.get_recommended_search_terms() else: suggestion_keys = [] suggestions = [(i, k, False) for i, k in enumerate(suggestion_keys)] format = request.GET.get('format', None) start = int(request.GET.get('start', 1)) end = int(request.GET.get('end', 10)) total_bug_count = 0 query = mysite.search.controllers.Query.create_from_GET_data(request.GET) if query: bugs = query.get_bugs_unordered() # Sort bugs = mysite.search.controllers.order_bugs(bugs) total_bug_count = bugs.count() bugs = bugs[start-1:end] else: bugs = [] data = {} data['query'] = query prev_page_query_str = QueryDict('') prev_page_query_str = prev_page_query_str.copy() next_page_query_str = QueryDict('') next_page_query_str = next_page_query_str.copy() if query: prev_page_query_str['q'] = query.terms_string next_page_query_str['q'] = query.terms_string if format: prev_page_query_str['format'] = format next_page_query_str['format'] = format for facet_name, selected_option in query.active_facet_options.items(): prev_page_query_str[facet_name] = selected_option next_page_query_str[facet_name] = selected_option diff = end - start prev_page_query_str['start'] = start - diff - 1 prev_page_query_str['end'] = start - 1 next_page_query_str['start'] = end + 1 next_page_query_str['end'] = end + diff + 1 data['start'] = start data['end'] = min(end, total_bug_count) data['prev_page_url'] = '/search/?' + prev_page_query_str.urlencode() data['next_page_url'] = '/search/?' + next_page_query_str.urlencode() data['this_page_query_str'] = mysite.base.unicode_sanity.urlencode(request.GET) is_this_page_1 = (start <= 1) is_this_the_last_page = ( end >= (total_bug_count - 1) ) data['show_prev_page_link'] = not is_this_page_1 data['show_next_page_link'] = not is_this_the_last_page if request.GET.get('confirm_email_alert_signup', ''): data['confirm_email_alert_signup'] = 1 # If this the last page of results, display a form allowing user to # subscribe to a Volunteer Opportunity search alert if query and is_this_the_last_page: if invalid_subscribe_to_alert_form: alert_form = invalid_subscribe_to_alert_form else: initial = { 'query_string': request.META['QUERY_STRING'], 'how_many_bugs_at_time_of_request': len(bugs) } if request.user.is_authenticated(): initial['email'] = request.user.email alert_form = mysite.search.forms.BugAlertSubscriptionForm(initial=initial) data['subscribe_to_alert_form'] = alert_form # FIXME # The template has no way of grabbing what URLs to put in the [x] # So we help it out here by hacking around our fruity list-of-dicts # data structure. facet2any_query_string = {} for facet in query.active_facet_options: facet2any_query_string[facet] = query.get_facet_options( facet, [''])[0]['query_string'] Bug = mysite.search.models.Bug from django.db.models import Q, Count data['popular_projects'] = list(Project.objects.filter(name__in=['Miro', 'GnuCash', 'brasero', 'Evolution Exchange', 'songbird']).order_by('name').reverse()) data['all_projects'] = Project.objects.values('pk','name').filter(bug__looks_closed=False).annotate(Count('bug')).order_by('name') Person = mysite.profile.models.Person import random random_start = int(random.random() * 700) data['contributors'] = Person.objects.all()[random_start:random_start+5] data['contributors2'] = Person.objects.all()[random_start+10:random_start+15] data['languages'] = Project.objects.all().values_list('language', flat=True).order_by('language').exclude(language='').distinct()[:4] if format == 'json': # FIXME: Why `alert`? return bugs_to_json_response(data, bugs, request.GET.get( 'jsoncallback', 'alert')) else: data['the_user'] = request.user data['suggestions'] = suggestions data['bunch_of_bugs'] = bugs data['url'] = 'http://launchpad.net/' data['total_bug_count'] = total_bug_count data['facet2any_query_string'] = facet2any_query_string data['project_count'] = mysite.search.controllers.get_project_count() return render_response(request, 'search/search.html', data)
def signup(request, signup_form=None): if signup_form is None: signup_form = mysite.account.forms.UserCreationFormWithEmail() return render_response(request, 'account/signup.html', {'form': signup_form})
def register(request, template_name='authopenid/complete.html', redirect_field_name=django.contrib.auth.REDIRECT_FIELD_NAME, register_form=django_authopenid.forms.OpenidRegisterForm, auth_form=django.contrib.auth.forms.AuthenticationForm, register_account=django_authopenid.views.register_account, send_email=False, extra_context=None): """ register an openid. If user is already a member he can associate its openid with its account. A new account could also be created and automaticaly associated to the openid. :attr request: request object :attr template_name: string, name of template to use, 'authopenid/complete.html' by default :attr redirect_field_name: string, field name used for redirect. by default 'next' :attr register_form: form use to create a new account. By default `OpenidRegisterForm` :attr auth_form: form object used for legacy authentification. by default `OpenidVerifyForm` form auser auth contrib. :attr register_account: callback used to create a new account from openid. It take the register_form as param. :attr send_email: boolean, by default True. If True, an email will be sent to the user. :attr extra_context: A dictionary of variables to add to the template context. Any callable object in this dictionary will be called to produce the end result which appears in the context. """ redirect_to = request.REQUEST.get(redirect_field_name, '') openid_ = request.session.get('openid', None) if openid_ is None or not openid_: return HttpResponseRedirect( "%s?%s" % (reverse('user_signin'), urllib.urlencode({redirect_field_name: redirect_to}))) nickname = '' email = '' if openid_.sreg is not None: nickname = openid_.sreg.get('nickname', '') email = openid_.sreg.get('email', '') if openid_.ax is not None and not nickname or not email: if openid_.ax.get('http://schema.openid.net/namePerson/friendly', False): nickname = openid_.ax.get( 'http://schema.openid.net/namePerson/friendly')[0] if openid_.ax.get('http://schema.openid.net/contact/email', False): email = openid_.ax.get('http://schema.openid.net/contact/email')[0] form1 = register_form(initial={ 'username': nickname, 'email': email, }) form2 = auth_form(initial={ 'username': nickname, }) if request.POST: user_ = None if not redirect_to or '//' in redirect_to or ' ' in redirect_to: redirect_to = settings.LOGIN_REDIRECT_URL if 'email' in request.POST.keys(): form1 = register_form(data=request.POST) if form1.is_valid(): user_ = register_account(form1, openid_) extra_profile_form = mysite.account.forms.SignUpIfYouWantToHelpForm( request.POST, prefix='extra_profile_form') if extra_profile_form.is_valid(): person = user_.get_profile() method2contact_info = { 'forwarder': 'You can reach me by email at $fwd', 'public_email': 'You can reach me by email at %s' % user_.email, } info = method2contact_info[extra_profile_form.cleaned_data[ 'how_should_people_contact_you']] person.contact_blurb = info person.save() else: form2 = auth_form(data=request.POST) if form2.is_valid(): user_ = form2.get_user() if user_ is not None: # associate the user to openid uassoc = django_authopenid.models.UserAssociation( openid_url=str(openid_), user_id=user_.id) uassoc.save(send_email=send_email) django.contrib.auth.login(request, user_) return HttpResponseRedirect(redirect_to) return render_response( request, template_name, { 'form1': form1, 'form2': form2, 'extra_profile_form': mysite.account.forms.SignUpIfYouWantToHelpForm( prefix='extra_profile_form'), redirect_field_name: redirect_to, 'nickname': nickname, 'email': email }, context_instance=django_authopenid.views._build_context( request, extra_context=extra_context))
def fetch_bugs(request, invalid_subscribe_to_alert_form=None): # Make the query string keys lowercase using a redirect. if any([k.lower() != k for k in request.GET.keys()]): new_GET = {} for key in request.GET.keys(): new_GET[key.lower()] = request.GET[key] return HttpResponseRedirect( reverse(fetch_bugs) + '?' + mysite.base.unicode_sanity.urlencode(new_GET)) if request.user.is_authenticated(): person = request.user.get_profile() suggestion_keys = person.get_recommended_search_terms() else: suggestion_keys = [] suggestions = [(i, k, False) for i, k in enumerate(suggestion_keys)] format = request.GET.get('format', None) start = int(request.GET.get('start', 1)) end = int(request.GET.get('end', 10)) total_bug_count = 0 query = mysite.search.controllers.Query.create_from_GET_data(request.GET) if query: bugs = query.get_bugs_unordered() # Sort bugs = mysite.search.controllers.order_bugs(bugs) total_bug_count = bugs.count() bugs = bugs[start - 1:end] else: bugs = [] data = {} data['query'] = query prev_page_query_str = QueryDict('') prev_page_query_str = prev_page_query_str.copy() next_page_query_str = QueryDict('') next_page_query_str = next_page_query_str.copy() if query: prev_page_query_str['q'] = query.terms_string next_page_query_str['q'] = query.terms_string if format: prev_page_query_str['format'] = format next_page_query_str['format'] = format for facet_name, selected_option in query.active_facet_options.items(): prev_page_query_str[facet_name] = selected_option next_page_query_str[facet_name] = selected_option diff = end - start prev_page_query_str['start'] = start - diff - 1 prev_page_query_str['end'] = start - 1 next_page_query_str['start'] = end + 1 next_page_query_str['end'] = end + diff + 1 data['start'] = start data['end'] = min(end, total_bug_count) data['prev_page_url'] = '/search/?' + prev_page_query_str.urlencode() data['next_page_url'] = '/search/?' + next_page_query_str.urlencode() data['this_page_query_str'] = mysite.base.unicode_sanity.urlencode( request.GET) is_this_page_1 = (start <= 1) is_this_the_last_page = (end >= (total_bug_count - 1)) data['show_prev_page_link'] = not is_this_page_1 data['show_next_page_link'] = not is_this_the_last_page if request.GET.get('confirm_email_alert_signup', ''): data['confirm_email_alert_signup'] = 1 # If this the last page of results, display a form allowing user to # subscribe to a Volunteer Opportunity search alert if query and is_this_the_last_page: if invalid_subscribe_to_alert_form: alert_form = invalid_subscribe_to_alert_form else: initial = { 'query_string': request.META['QUERY_STRING'], 'how_many_bugs_at_time_of_request': len(bugs) } if request.user.is_authenticated(): initial['email'] = request.user.email alert_form = mysite.search.forms.BugAlertSubscriptionForm( initial=initial) data['subscribe_to_alert_form'] = alert_form # FIXME # The template has no way of grabbing what URLs to put in the [x] # So we help it out here by hacking around our fruity list-of-dicts # data structure. facet2any_query_string = {} for facet in query.active_facet_options: facet2any_query_string[facet] = query.get_facet_options( facet, [''])[0]['query_string'] Bug = mysite.search.models.Bug from django.db.models import Q, Count data['popular_projects'] = list( Project.objects.filter(name__in=[ 'Miro', 'GnuCash', 'brasero', 'Evolution Exchange', 'songbird' ]).order_by('name').reverse()) data['all_projects'] = Project.objects.values('pk', 'name').filter( bug__looks_closed=False).annotate(Count('bug')).order_by('name') Person = mysite.profile.models.Person import random random_start = int(random.random() * 700) data['contributors'] = Person.objects.all()[random_start:random_start + 5] data['contributors2'] = Person.objects.all()[random_start + 10:random_start + 15] data['languages'] = Project.objects.all().values_list( 'language', flat=True).order_by('language').exclude(language='').distinct()[:4] if format == 'json': # FIXME: Why `alert`? return bugs_to_json_response(data, bugs, request.GET.get('jsoncallback', 'alert')) else: data['user'] = request.user data['suggestions'] = suggestions data['bunch_of_bugs'] = bugs data['url'] = 'http://launchpad.net/' data['total_bug_count'] = total_bug_count data['facet2any_query_string'] = facet2any_query_string data['project_count'] = mysite.search.controllers.get_project_count() return render_response(request, 'search/search.html', data)
def register(request, template_name='authopenid/complete.html', redirect_field_name=django.contrib.auth.REDIRECT_FIELD_NAME, register_form=django_authopenid.forms.OpenidRegisterForm, auth_form=django.contrib.auth.forms.AuthenticationForm, register_account=django_authopenid.views.register_account, send_email=False, extra_context=None): """ register an openid. If user is already a member he can associate its openid with its account. A new account could also be created and automaticaly associated to the openid. :attr request: request object :attr template_name: string, name of template to use, 'authopenid/complete.html' by default :attr redirect_field_name: string, field name used for redirect. by default 'next' :attr register_form: form use to create a new account. By default `OpenidRegisterForm` :attr auth_form: form object used for legacy authentification. by default `OpenidVerifyForm` form auser auth contrib. :attr register_account: callback used to create a new account from openid. It take the register_form as param. :attr send_email: boolean, by default True. If True, an email will be sent to the user. :attr extra_context: A dictionary of variables to add to the template context. Any callable object in this dictionary will be called to produce the end result which appears in the context. """ redirect_to = request.REQUEST.get(redirect_field_name, '') openid_ = request.session.get('openid', None) if openid_ is None or not openid_: return HttpResponseRedirect("%s?%s" % (reverse('user_signin'), urllib.urlencode({ redirect_field_name: redirect_to }))) nickname = '' email = '' if openid_.sreg is not None: nickname = openid_.sreg.get('nickname', '') email = openid_.sreg.get('email', '') if openid_.ax is not None and not nickname or not email: if openid_.ax.get('http://schema.openid.net/namePerson/friendly', False): nickname = openid_.ax.get('http://schema.openid.net/namePerson/friendly')[0] if openid_.ax.get('http://schema.openid.net/contact/email', False): email = openid_.ax.get('http://schema.openid.net/contact/email')[0] form1 = register_form(initial={ 'username': nickname, 'email': email, }) form2 = auth_form(initial={ 'username': nickname, }) if request.POST: user_ = None if not redirect_to or '//' in redirect_to or ' ' in redirect_to: redirect_to = settings.LOGIN_REDIRECT_URL if 'email' in request.POST.keys(): form1 = register_form(data=request.POST) if form1.is_valid(): user_ = register_account(form1, openid_) extra_profile_form = mysite.account.forms.SignUpIfYouWantToHelpForm( request.POST, prefix='extra_profile_form') if extra_profile_form.is_valid(): person = user_.get_profile() method2contact_info = { 'forwarder': 'You can reach me by email at $fwd', 'public_email': 'You can reach me by email at %s' % user_.email, } info = method2contact_info[extra_profile_form.cleaned_data[ 'how_should_people_contact_you']] person.contact_blurb = info person.save() else: form2 = auth_form(data=request.POST) if form2.is_valid(): user_ = form2.get_user() if user_ is not None: # associate the user to openid uassoc = django_authopenid.models.UserAssociation( openid_url=str(openid_), user_id=user_.id ) uassoc.save(send_email=send_email) django.contrib.auth.login(request, user_) return HttpResponseRedirect(redirect_to) return render_response(request, template_name, { 'form1': form1, 'form2': form2, 'extra_profile_form': mysite.account.forms.SignUpIfYouWantToHelpForm( prefix='extra_profile_form'), redirect_field_name: redirect_to, 'nickname': nickname, 'email': email }, context_instance=django_authopenid.views._build_context(request, extra_context=extra_context))