From 070157eacbdcfa34938002ebe7b572319e0f7d24 Mon Sep 17 00:00:00 2001 From: Philip Sargent Date: Wed, 22 Jul 2020 23:06:15 +0100 Subject: [PATCH] TRansX speedup for import + remove fossil profiles --- databaseReset.py | 4 +- parsers/imports.py | 29 ++- profiles/urls.py | 78 +++--- profiles/utils.py | 84 +++---- profiles/views.py | 580 ++++++++++++++++++++++----------------------- 5 files changed, 394 insertions(+), 381 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. +# # url(r'^profiles/', include('profiles.urls')), # not used ? Delete this entire app then. -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/'. +# """ +# URLConf for Django user profile management. -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:: +# 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/'. - (r'^profiles/', include('profiles.urls')), +# 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:: -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. + # (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 +# 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\w+)/$', - views.profile_detail, - name='profiles_profile_detail'), - url(r'^$', - views.profile_list, - name='profiles_profile_list'), - ] +# 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\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 + # """ + # 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``. +# 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. +# 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. + # 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:** + # **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. - ``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``. + # 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. + # ``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`. + # ``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:** + # **Context:** - ``form`` - The profile-creation form. + # ``form`` + # The profile-creation form. - **Template:** + # **Template:** - ``template_name`` keyword argument, or - :template:`profiles/create_profile.html`. + # ``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 + # """ + # 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. - # + # # + # # 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 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 + # 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) + # 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. +# 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. + # 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:** + # **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. - ``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. + # ``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. + # ``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`. + # ``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:** + # **Context:** - ``form`` - The form for editing the profile. + # ``form`` + # The form for editing the profile. - ``profile`` - The user's current profile. + # ``profile`` + # The user's current profile. - **Template:** + # **Template:** - ``template_name`` keyword argument or - :template:`profiles/edit_profile.html`. + # ``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')) + # """ + # 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. - # + # # + # # 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 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 + # 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) + # 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. + # 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`. + # ``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:** + # **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). + # ``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:** - ``template_name`` keyword argument or - :template:`profiles/profile_detail.html`. + # ``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 + # """ + # 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 + # 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) + # 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. +# 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. + # 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. + # 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:** + # **Context:** - Same as the :view:`django.views.generic.list_detail.object_list` - generic view. + # Same as the :view:`django.views.generic.list_detail.object_list` + # generic view. - **Template:** + # **Template:** - ``template_name`` keyword argument or - :template:`profiles/profile_list.html`. + # ``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) + # """ + # 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)