summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--databaseReset.py4
-rw-r--r--parsers/imports.py29
-rw-r--r--profiles/urls.py96
-rw-r--r--profiles/utils.py88
-rw-r--r--profiles/views.py664
5 files changed, 447 insertions, 434 deletions
diff --git a/databaseReset.py b/databaseReset.py
index 81aa529..26cf058 100644
--- a/databaseReset.py
+++ b/databaseReset.py
@@ -23,6 +23,7 @@ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
print(" - settings on loading databaseReset.py")
import django
+
print(" - Memory footprint before loading Django: {:.3f} MB".format(resource.getrusage(resource.RUSAGE_SELF)[2]/1024.0))
try:
django.setup()
@@ -44,8 +45,7 @@ from django.contrib.auth.models import User
from troggle.core.models import get_process_memory
from troggle.core.models_caves import Cave, Entrance
from troggle.parsers.imports import import_caves, import_people, import_surveyscans, \
- import_logbooks, import_QMs, import_survex, import_loadpos, import_drawingsfiles, \
- import_subcaves
+ import_logbooks, import_QMs, import_survex, import_loadpos, import_drawingsfiles
import troggle.logbooksdump
if os.geteuid() == 0:
diff --git a/parsers/imports.py b/parsers/imports.py
index 7c83d90..5757a7b 100644
--- a/parsers/imports.py
+++ b/parsers/imports.py
@@ -7,6 +7,7 @@ from django.db import connection, close_old_connections, connections
from django.contrib.auth.models import User
from django.http import HttpResponse
#from django.urls import reverse, resolve
+from django.db import transaction
import troggle.settings
import troggle.parsers.caves
@@ -19,37 +20,47 @@ import troggle.parsers.subcaves
def import_caves():
print("-- Importing Caves to ",end="")
print(django.db.connections.databases['default']['NAME'])
- troggle.parsers.caves.readcaves()
+ # wrap the entire import in a transaction
+ with transaction.atomic():
+ troggle.parsers.caves.readcaves()
def import_people():
print("-- Importing People (folk.csv) to ",end="")
print(django.db.connections.databases['default']['NAME'])
- troggle.parsers.people.LoadPersonsExpos()
+ with transaction.atomic():
+ troggle.parsers.people.LoadPersonsExpos()
def import_surveyscans():
print("-- Importing Survey Scans")
- troggle.parsers.surveys.LoadListScans()
+ with transaction.atomic():
+ troggle.parsers.surveys.LoadListScans()
def import_logbooks():
print("-- Importing Logbooks")
- troggle.parsers.logbooks.LoadLogbooks()
+ with transaction.atomic():
+ troggle.parsers.logbooks.LoadLogbooks()
def import_QMs():
print("-- Importing old QMs for 161, 204, 234 from CSV files")
- troggle.parsers.QMs.Load_QMs()
+ with transaction.atomic():
+ troggle.parsers.QMs.Load_QMs()
def import_survex():
# when this import is moved to the top with the rest it all crashes horribly
- import troggle.parsers.survex
+ with transaction.atomic():
+ import troggle.parsers.survex
print("-- Importing Survex and Entrance Positions")
print(" - Survex Blocks")
- troggle.parsers.survex.LoadSurvexBlocks()
+ with transaction.atomic():
+ troggle.parsers.survex.LoadSurvexBlocks()
print(" - Survex entrances x/y/z Positions")
- troggle.parsers.survex.LoadPositions()
+ with transaction.atomic():
+ troggle.parsers.survex.LoadPositions()
def import_loadpos():
# when this import is moved to the top with the rest it all crashes horribly
- import troggle.parsers.survex
+ with transaction.atomic():
+ import troggle.parsers.survex
print(" - Survex entrances x/y/z Positions")
troggle.parsers.survex.LoadPositions()
diff --git a/profiles/urls.py b/profiles/urls.py
index b7967fe..1ef63d3 100644
--- a/profiles/urls.py
+++ b/profiles/urls.py
@@ -1,47 +1,49 @@
-"""
-URLConf for Django user profile management.
-
-Recommended usage is to use a call to ``include()`` in your project's
-root URLConf to include this URLConf for any URL beginning with
-'/profiles/'.
-
-If the default behavior of the profile views is acceptable to you,
-simply use a line like this in your root URLConf to set up the default
-URLs for profiles::
-
- (r'^profiles/', include('profiles.urls')),
-
-But if you'd like to customize the behavior (e.g., by passing extra
-arguments to the various views) or split up the URLs, feel free to set
-up your own URL patterns for these views instead. If you do, it's a
-good idea to keep the name ``profiles_profile_detail`` for the pattern
-which points to the ``profile_detail`` view, since several views use
-``reverse()`` with that name to generate a default post-submission
-redirect. If you don't use that name, remember to explicitly pass
-``success_url`` to those views.
-
-"""
-
-from django.conf.urls import *
-from django.urls import *
-
-from profiles import views
-
-
-urlpatterns = [
- url(r'^select/$',
- views.select_profile,
- name='profiles_select_profile'),
- url(r'^create/$',
- views.create_profile,
- name='profiles_create_profile'),
- url(r'^edit/$',
- views.edit_profile,
- name='profiles_edit_profile'),
- url(r'^(?P<username>\w+)/$',
- views.profile_detail,
- name='profiles_profile_detail'),
- url(r'^$',
- views.profile_list,
- name='profiles_profile_list'),
- ]
+# # url(r'^profiles/', include('profiles.urls')), # not used ? Delete this entire app then.
+
+# """
+# URLConf for Django user profile management.
+
+# Recommended usage is to use a call to ``include()`` in your project's
+# root URLConf to include this URLConf for any URL beginning with
+# '/profiles/'.
+
+# If the default behavior of the profile views is acceptable to you,
+# simply use a line like this in your root URLConf to set up the default
+# URLs for profiles::
+
+ # (r'^profiles/', include('profiles.urls')),
+
+# But if you'd like to customize the behavior (e.g., by passing extra
+# arguments to the various views) or split up the URLs, feel free to set
+# up your own URL patterns for these views instead. If you do, it's a
+# good idea to keep the name ``profiles_profile_detail`` for the pattern
+# which points to the ``profile_detail`` view, since several views use
+# ``reverse()`` with that name to generate a default post-submission
+# redirect. If you don't use that name, remember to explicitly pass
+# ``success_url`` to those views.
+
+# """
+
+# from django.conf.urls import *
+# from django.urls import *
+
+# from profiles import views
+
+
+# urlpatterns = [
+ # url(r'^select/$',
+ # views.select_profile,
+ # name='profiles_select_profile'),
+ # url(r'^create/$',
+ # views.create_profile,
+ # name='profiles_create_profile'),
+ # url(r'^edit/$',
+ # views.edit_profile,
+ # name='profiles_edit_profile'),
+ # url(r'^(?P<username>\w+)/$',
+ # views.profile_detail,
+ # name='profiles_profile_detail'),
+ # url(r'^$',
+ # views.profile_list,
+ # name='profiles_profile_list'),
+ # ]
diff --git a/profiles/utils.py b/profiles/utils.py
index 6e602e7..b4a7db1 100644
--- a/profiles/utils.py
+++ b/profiles/utils.py
@@ -1,52 +1,52 @@
-"""
-Utility functions for retrieving and generating forms for the
-site-specific user profile model specified in the
-``AUTH_PROFILE_MODULE`` setting.
+# """
+# Utility functions for retrieving and generating forms for the
+# site-specific user profile model specified in the
+# ``AUTH_PROFILE_MODULE`` setting.
-"""
+# """
-from django import forms
-from django.conf import settings
-#from django.contrib.auth.models import SiteProfileNotAvailable
+# from django import forms
+# from django.conf import settings
+# #from django.contrib.auth.models import SiteProfileNotAvailable
-try:
- from django.contrib.auth.models import SiteProfileNotAvailable
-except ImportError: # django >= 1.7
- SiteProfileNotAvailable = type('SiteProfileNotAvailable', (Exception,), {})
+# try:
+ # from django.contrib.auth.models import SiteProfileNotAvailable
+# except ImportError: # django >= 1.7
+ # SiteProfileNotAvailable = type('SiteProfileNotAvailable', (Exception,), {})
-from django.db import models
-#from django.db.models import get_model
+# from django.db import models
+# #from django.db.models import get_model
-def get_profile_model():
- """
- Return the model class for the currently-active user profile
- model, as defined by the ``AUTH_PROFILE_MODULE`` setting. If that
- setting is missing, raise
- ``django.contrib.auth.models.SiteProfileNotAvailable``.
+# def get_profile_model():
+ # """
+ # Return the model class for the currently-active user profile
+ # model, as defined by the ``AUTH_PROFILE_MODULE`` setting. If that
+ # setting is missing, raise
+ # ``django.contrib.auth.models.SiteProfileNotAvailable``.
- """
- if (not hasattr(settings, 'AUTH_PROFILE_MODULE')) or \
- (not settings.AUTH_PROFILE_MODULE):
- raise SiteProfileNotAvailable
- profile_mod = models.get_model(*settings.AUTH_PROFILE_MODULE.split('.'))
- if profile_mod is None:
- raise SiteProfileNotAvailable
- return profile_mod
-
-
-def get_profile_form():
- """
- Return a form class (a subclass of the default ``ModelForm``)
- suitable for creating/editing instances of the site-specific user
- profile model, as defined by the ``AUTH_PROFILE_MODULE``
- setting. If that setting is missing, raise
- ``django.contrib.auth.models.SiteProfileNotAvailable``.
+ # """
+ # if (not hasattr(settings, 'AUTH_PROFILE_MODULE')) or \
+ # (not settings.AUTH_PROFILE_MODULE):
+ # raise SiteProfileNotAvailable
+ # profile_mod = models.get_model(*settings.AUTH_PROFILE_MODULE.split('.'))
+ # if profile_mod is None:
+ # raise SiteProfileNotAvailable
+ # return profile_mod
+
+
+# def get_profile_form():
+ # """
+ # Return a form class (a subclass of the default ``ModelForm``)
+ # suitable for creating/editing instances of the site-specific user
+ # profile model, as defined by the ``AUTH_PROFILE_MODULE``
+ # setting. If that setting is missing, raise
+ # ``django.contrib.auth.models.SiteProfileNotAvailable``.
- """
- profile_mod = get_profile_model()
- class _ProfileForm(forms.ModelForm):
- class Meta:
- model = profile_mod
- exclude = ('user',) # User will be filled in by the view.
- return _ProfileForm
+ # """
+ # profile_mod = get_profile_model()
+ # class _ProfileForm(forms.ModelForm):
+ # class Meta:
+ # model = profile_mod
+ # exclude = ('user',) # User will be filled in by the view.
+ # return _ProfileForm
diff --git a/profiles/views.py b/profiles/views.py
index 6b79c95..e764ad3 100644
--- a/profiles/views.py
+++ b/profiles/views.py
@@ -1,361 +1,361 @@
-"""
-Views for creating, editing and viewing site-specific user profiles.
+# """
+# 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 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 troggle.core.models import Person
-from profiles import utils
+# from profiles import utils
-from django.conf import settings
+# from django.conf import settings
-class SelectPersonForm(forms.Form): #This and the select_profile view
- person = forms.ModelChoiceField(queryset=Person.objects.all())
+# class SelectPersonForm(forms.Form): #This and the select_profile view
+ # person = forms.ModelChoiceField(queryset=Person.objects.all())
-def select_profile(request):
+# 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
- )
+ # 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.
+# 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.
+ # ``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)
+ # 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.
+# 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.
+ # ``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)
+ # ``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.
+# 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 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.
+ # If the user has not yet created a profile, ``Http404`` will be
+ # raised.
- **Required arguments:**
+ # **Required arguments:**
- ``username``
- The username of the user whose profile is being displayed.
+ # ``username``
+ # The username of the user whose profile is being displayed.
- **Optional arguments:**
+ # **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.
+ # ``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.
+ # ``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)
+ # 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.
+# 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:**
+ # **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.
+ # ``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.
+ # 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`.
+ # ``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)
+ # 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)