summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDusty Phillips <buchuki@gmail.com>2009-08-10 21:47:02 +0200
committerDusty Phillips <buchuki@gmail.com>2009-08-10 21:47:02 +0200
commit0d2560fa55689d920bc7431fae3f2995bd1b0d71 (patch)
tree98db0e069181ba75133ab7340732d3f9b0e592f3
parentc3ecb485ae3eca5ba6dca96a22615dc11c6df7ee (diff)
downloadarchweb-0d2560fa55689d920bc7431fae3f2995bd1b0d71.tar.gz
archweb-0d2560fa55689d920bc7431fae3f2995bd1b0d71.tar.xz
Add a page to aid Aaron in user creation.
-rw-r--r--devel/views.py53
-rw-r--r--settings.py2
-rw-r--r--templates/admin/index.html90
-rw-r--r--templates/general_form.html1
-rw-r--r--urls.py4
5 files changed, 147 insertions, 3 deletions
diff --git a/devel/views.py b/devel/views.py
index 5e5e9c4..1686734 100644
--- a/devel/views.py
+++ b/devel/views.py
@@ -6,6 +6,10 @@ from django.template import RequestContext
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:
diff --git a/settings.py b/settings.py
index cdd737d..478dd3b 100644
--- a/settings.py
+++ b/settings.py
@@ -38,8 +38,8 @@ LOGIN_URL = '/login/'
# 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',
)
diff --git a/templates/admin/index.html b/templates/admin/index.html
new file mode 100644
index 0000000..af4d0b7
--- /dev/null
+++ b/templates/admin/index.html
@@ -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 %}
diff --git a/templates/general_form.html b/templates/general_form.html
index 4c17481..776f367 100644
--- a/templates/general_form.html
+++ b/templates/general_form.html
@@ -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 %}
diff --git a/urls.py b/urls.py
index 325db01..18d15d8 100644
--- a/urls.py
+++ b/urls.py
@@ -46,6 +46,8 @@ urlpatterns = patterns('',
(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 @@ urlpatterns = patterns('',
'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: