troggle-unchained/profiles_deleted/views.py
2021-03-25 16:13:58 +00:00

362 lines
13 KiB
Python

# """
# Views for creating, editing and viewing site-specific user profiles.
# """
# from django.contrib.auth.decorators import login_required
# from django.contrib.auth.models import User
# from django.core.exceptions import ObjectDoesNotExist
# from django.urls import reverse, resolve
# from django.http import Http404
# from django.http import HttpResponseRedirect
# from django.shortcuts import get_object_or_404
# from django.shortcuts import render_to_response
# from django.template import RequestContext
# from django.views.generic.list import ListView
# from django import forms
# from troggle.core.models import Person
# from profiles import utils
# from django.conf import settings
# class SelectPersonForm(forms.Form): #This and the select_profile view
# person = forms.ModelChoiceField(queryset=Person.objects.all())
# def select_profile(request):
# if request.method == 'POST':
# form = SelectPersonForm(request.POST)
# if form.is_valid():
# profile_obj=form.cleaned_data['person']
# profile_obj.user=request.user
# profile_obj.save()
# return HttpResponseRedirect(profile_obj.get_absolute_url())
# else:
# form = SelectPersonForm()
# context = RequestContext(request)
# return render_to_response('profiles/select_profile.html', {
# 'form':form,},
# context_instance=context
# )
# def create_profile(request, form_class=None, success_url=None,
# template_name='profiles/create_profile.html',
# extra_context=None):
# """
# Create a profile for the current user, if one doesn't already
# exist.
# If the user already has a profile, as determined by
# ``request.user.get_profile()``, a redirect will be issued to the
# :view:`profiles.views.edit_profile` view. If no profile model has
# been specified in the ``AUTH_PROFILE_MODULE`` setting,
# ``django.contrib.auth.models.SiteProfileNotAvailable`` will be
# raised.
# **Optional arguments:**
# ``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.
# ``form_class``
# The form class to use for validating and creating the user
# profile. This form class must define a method named
# ``save()``, implementing the same argument signature as the
# ``save()`` method of a standard Django ``ModelForm`` (this
# view will call ``save(commit=False)`` to obtain the profile
# object, and fill in the user before the final save). If the
# profile object includes many-to-many relations, the convention
# established by ``ModelForm`` of using a method named
# ``save_m2m()`` will be used, and so your form class should
# also define this method.
# If this argument is not supplied, this view will use a
# ``ModelForm`` automatically generated from the model specified
# by ``AUTH_PROFILE_MODULE``.
# ``success_url``
# The URL to redirect to after successful profile creation. If
# this argument is not supplied, this will default to the URL of
# :view:`profiles.views.profile_detail` for the newly-created
# profile object.
# ``template_name``
# The template to use when displaying the profile-creation
# form. If not supplied, this will default to
# :template:`profiles/create_profile.html`.
# **Context:**
# ``form``
# The profile-creation form.
# **Template:**
# ``template_name`` keyword argument, or
# :template:`profiles/create_profile.html`.
# """
# try:
# profile_obj = request.user.get_profile()
# return HttpResponseRedirect(profile_obj.get_absolute_url())
# except ObjectDoesNotExist:
# pass
# #
# # We set up success_url here, rather than as the default value for
# # the argument. Trying to do it as the argument's default would
# # mean evaluating the call to reverse() at the time this module is
# # first imported, which introduces a circular dependency: to
# # perform the reverse lookup we need access to profiles/urls.py,
# # but profiles/urls.py in turn imports this module.
# #
# if success_url is None:
# success_url = reverse('profiles_profile_detail',
# kwargs={ 'username': request.user.username })
# if form_class is None:
# form_class = utils.get_profile_form()
# if request.method == 'POST':
# form = form_class(data=request.POST, files=request.FILES)
# if form.is_valid():
# profile_obj = form.save(commit=False)
# profile_obj.user = request.user
# profile_obj.save()
# if hasattr(form, 'save_m2m'):
# form.save_m2m()
# return HttpResponseRedirect(success_url)
# else:
# form = form_class()
# if extra_context is None:
# extra_context = {}
# context = RequestContext(request)
# for key, value in list(extra_context.items()):
# context[key] = callable(value) and value() or value
# return render_to_response(template_name,
# { 'form': form, 'settings':settings },
# context_instance=context)
# create_profile = login_required(create_profile)
# def edit_profile(request, form_class=None, success_url=None,
# template_name='profiles/edit_profile.html',
# extra_context=None):
# """
# Edit the current user's profile.
# If the user does not already have a profile (as determined by
# ``User.get_profile()``), a redirect will be issued to the
# :view:`profiles.views.create_profile` view; if no profile model
# has been specified in the ``AUTH_PROFILE_MODULE`` setting,
# ``django.contrib.auth.models.SiteProfileNotAvailable`` will be
# raised.
# **Optional arguments:**
# ``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.
# ``form_class``
# The form class to use for validating and editing the user
# profile. This form class must operate similarly to a standard
# Django ``ModelForm`` in that it must accept an instance of the
# object to be edited as the keyword argument ``instance`` to
# its constructor, and it must implement a method named
# ``save()`` which will save the updates to the object. If this
# argument is not specified, this view will use a ``ModelForm``
# generated from the model specified in the
# ``AUTH_PROFILE_MODULE`` setting.
# ``success_url``
# The URL to redirect to following a successful edit. If not
# specified, this will default to the URL of
# :view:`profiles.views.profile_detail` for the profile object
# being edited.
# ``template_name``
# The template to use when displaying the profile-editing
# form. If not specified, this will default to
# :template:`profiles/edit_profile.html`.
# **Context:**
# ``form``
# The form for editing the profile.
# ``profile``
# The user's current profile.
# **Template:**
# ``template_name`` keyword argument or
# :template:`profiles/edit_profile.html`.
# """
# try:
# profile_obj = request.user.get_profile()
# except ObjectDoesNotExist:
# return HttpResponseRedirect(reverse('profiles_create_profile'))
# #
# # See the comment in create_profile() for discussion of why
# # success_url is set up here, rather than as a default value for
# # the argument.
# #
# if success_url is None:
# success_url = reverse('profiles_profile_detail',
# kwargs={ 'username': request.user.username })
# if form_class is None:
# form_class = utils.get_profile_form()
# if request.method == 'POST':
# form = form_class(data=request.POST, files=request.FILES, instance=profile_obj)
# if form.is_valid():
# form.save()
# return HttpResponseRedirect(success_url)
# else:
# form = form_class(instance=profile_obj)
# if extra_context is None:
# extra_context = {}
# context = RequestContext(request)
# for key, value in list(extra_context.items()):
# context[key] = callable(value) and value() or value
# return render_to_response(template_name,
# { 'form': form,
# 'profile': profile_obj, },
# context_instance=context)
# edit_profile = login_required(edit_profile)
# def profile_detail(request, username, public_profile_field=None,
# template_name='profiles/profile_detail.html',
# extra_context=None):
# """
# Detail view of a user's profile.
# If no profile model has been specified in the
# ``AUTH_PROFILE_MODULE`` setting,
# ``django.contrib.auth.models.SiteProfileNotAvailable`` will be
# raised.
# If the user has not yet created a profile, ``Http404`` will be
# raised.
# **Required arguments:**
# ``username``
# The username of the user whose profile is being displayed.
# **Optional arguments:**
# ``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.
# ``public_profile_field``
# The name of a ``BooleanField`` on the profile model; if the
# value of that field on the user's profile is ``False``, the
# ``profile`` variable in the template will be ``None``. Use
# this feature to allow users to mark their profiles as not
# being publicly viewable.
# If this argument is not specified, it will be assumed that all
# users' profiles are publicly viewable.
# ``template_name``
# The name of the template to use for displaying the profile. If
# not specified, this will default to
# :template:`profiles/profile_detail.html`.
# **Context:**
# ``profile``
# The user's profile, or ``None`` if the user's profile is not
# publicly viewable (see the description of
# ``public_profile_field`` above).
# **Template:**
# ``template_name`` keyword argument or
# :template:`profiles/profile_detail.html`.
# """
# user = get_object_or_404(User, username=username)
# try:
# profile_obj = user.get_profile()
# except ObjectDoesNotExist:
# raise Http404
# if public_profile_field is not None and \
# not getattr(profile_obj, public_profile_field):
# profile_obj = None
# if extra_context is None:
# extra_context = {}
# context = RequestContext(request)
# for key, value in list(extra_context.items()):
# context[key] = callable(value) and value() or value
# return render_to_response(template_name,
# { 'profile': profile_obj },
# context_instance=context)
# def profile_list(request, public_profile_field=None,
# template_name='profiles/profile_list.html', **kwargs):
# """
# A list of user profiles.
# If no profile model has been specified in the
# ``AUTH_PROFILE_MODULE`` setting,
# ``django.contrib.auth.models.SiteProfileNotAvailable`` will be
# raised.
# **Optional arguments:**
# ``public_profile_field``
# The name of a ``BooleanField`` on the profile model; if the
# value of that field on a user's profile is ``False``, that
# profile will be excluded from the list. Use this feature to
# allow users to mark their profiles as not being publicly
# viewable.
# If this argument is not specified, it will be assumed that all
# users' profiles are publicly viewable.
# ``template_name``
# The name of the template to use for displaying the profiles. If
# not specified, this will default to
# :template:`profiles/profile_list.html`.
# Additionally, all arguments accepted by the
# :view:`django.views.generic.list_detail.object_list` generic view
# will be accepted here, and applied in the same fashion, with one
# exception: ``queryset`` will always be the ``QuerySet`` of the
# model specified by the ``AUTH_PROFILE_MODULE`` setting, optionally
# filtered to remove non-publicly-viewable proiles.
# **Context:**
# Same as the :view:`django.views.generic.list_detail.object_list`
# generic view.
# **Template:**
# ``template_name`` keyword argument or
# :template:`profiles/profile_list.html`.
# """
# profile_model = utils.get_profile_model()
# queryset = profile_model._default_manager.all()
# if public_profile_field is not None:
# queryset = queryset.filter(**{ public_profile_field: True })
# kwargs['queryset'] = queryset
# return object_list(request, template_name=template_name, **kwargs)