Add a page to aid Aaron in user creation.

This commit is contained in:
Dusty Phillips 2009-08-10 15:47:02 -04:00
parent c3ecb485ae
commit 0d2560fa55
5 changed files with 147 additions and 3 deletions

View File

@ -6,6 +6,10 @@
from archweb_dev.main.models import Package, Todolist
from archweb_dev.main.models import Arch, Repo
from archweb_dev.main.models import UserProfile, News
import random
from string import letters, digits
pwletters = letters + digits
def index(request):
'''the Developer dashboard'''
@ -68,5 +72,52 @@ def siteindex(request):
RequestContext(request,
{'news_updates': news, 'pkg_updates': pkgs, 'repos': repos}))
# vim: set ts=4 sw=4 et:
class NewUserForm(forms.ModelForm):
class Meta:
model = UserProfile
exclude = ('picture', 'user')
username = forms.CharField(max_length=30)
email = forms.EmailField()
first_name = forms.CharField(required=False)
last_name = forms.CharField(required=False)
def save(self):
profile = forms.ModelForm.save(self, False)
pw = ''.join([random.choice(pwletters) for i in xrange(8)])
user = User.objects.create(username=self.cleaned_data['username'],
email=self.cleaned_data['email'], password=pw)
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.save()
profile.user = user
profile.save()
send_mail("Your new archweb account",
"""You can now log into:
http://dev.archlinux.org/
with these login details:
Username: %s
Password: %s""" % (user.username, pw),
'Arch Website Notification <nobody@archlinux.org>',
[user.email],
fail_silently=False)
def new_user_form(request):
if not request.user.is_superuser:
return HttpResponseRedirect('/login/')
if request.POST:
form = NewUserForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/admin/')
else:
form = NewUserForm()
return render_to_response('general_form.html', RequestContext(
request, {'description': '''A new user will be created with the
following properties in their profile. A random password will be
generated and the user will be e-mailed with their account details
n plaintext.''',
'form': form, 'title': 'Create User', 'submit_text': 'Create User'}))
# vim: set ts=4 sw=4 et:

View File

@ -38,8 +38,8 @@
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.eggs.load_template_source',
'django.template.loaders.filesystem.load_template_source',
'django.template.loaders.eggs.load_template_source',
'django.template.loaders.app_directories.load_template_source',
)

View File

@ -0,0 +1,90 @@
{% extends "admin/base_site.html" %}
{% load i18n %}
{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% load adminmedia %}{% admin_media_prefix %}css/dashboard.css" />{% endblock %}
{% block coltype %}colMS{% endblock %}
{% block bodyclass %}dashboard{% endblock %}
{% block breadcrumbs %}{% endblock %}
{% block content %}
pppppppp
<div id="content-main">
<div class="module">
<table>
<caption>Custom Admin Pages</caption>
<tr>
<th scope="row"><a href="/devel/newuser/">Create New User</a></th>
<td></td><td></td>
</tr>
</table>
</div>
{% if app_list %}
{% for app in app_list %}
<div class="module">
<table summary="{% blocktrans with app.name as name %}Models available in the {{ name }} application.{% endblocktrans %}">
<caption><a href="{{ app.app_url }}" class="section">{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}</a></caption>
{% for model in app.models %}
<tr>
{% if model.perms.change %}
<th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
{% else %}
<th scope="row">{{ model.name }}</th>
{% endif %}
{% if model.perms.add %}
<td><a href="{{ model.admin_url }}add/" class="addlink">{% trans 'Add' %}</a></td>
{% else %}
<td>&nbsp;</td>
{% endif %}
{% if model.perms.change %}
<td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
{% else %}
<td>&nbsp;</td>
{% endif %}
</tr>
{% endfor %}
</table>
</div>
{% endfor %}
{% else %}
<p>{% trans "You don't have permission to edit anything." %}</p>
{% endif %}
</div>
{% endblock %}
{% block sidebar %}
<div id="content-related">
<div class="module" id="recent-actions-module">
<h2>{% trans 'Recent Actions' %}</h2>
<h3>{% trans 'My Actions' %}</h3>
{% load log %}
{% get_admin_log 10 as admin_log for_user user %}
{% if not admin_log %}
<p>{% trans 'None available' %}</p>
{% else %}
<ul class="actionlist">
{% for entry in admin_log %}
<li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">
{% if entry.is_deletion %}
{{ entry.object_repr }}
{% else %}
<a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
{% endif %}
<br/>
{% if entry.content_type %}
<span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span>
{% else %}
<span class="mini quiet">{% trans 'Unknown content' %}</span>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</div>
</div>
{% endblock %}

View File

@ -3,6 +3,7 @@
{% block content %}
<div class="greybox">
<h2 class="title">{{title}}</h2>
{% if description %}{{description}}{% endif %}
<form method="post" action=".">
<table>
{% for field in form %}

View File

@ -46,6 +46,8 @@
(r'^devel/profile/$', 'archweb_dev.devel.views.change_profile'),
(r'^$', 'archweb_dev.devel.views.siteindex'),
(r'^devel/newuser/$', 'archweb_dev.devel.views.new_user_form'),
# Authentication / Admin
(r'^login/$', 'django.contrib.auth.views.login', {
'template_name': 'registration/login.html'}),
@ -55,7 +57,7 @@
'template_name': 'registration/logout.html'}),
(r'^accounts/logout/$', 'django.contrib.auth.views.logout', {
'template_name': 'registration/logout.html'}),
(r'^admin/(.*)', admin.site.urls),
(r'^admin/(.*)', admin.site.root),
)
if settings.DEBUG == True: