From 0d2560fa55689d920bc7431fae3f2995bd1b0d71 Mon Sep 17 00:00:00 2001 From: Dusty Phillips Date: Mon, 10 Aug 2009 15:47:02 -0400 Subject: Add a page to aid Aaron in user creation. --- devel/views.py | 53 +++++++++++++++++++++++++- settings.py | 2 +- templates/admin/index.html | 90 +++++++++++++++++++++++++++++++++++++++++++++ templates/general_form.html | 1 + urls.py | 4 +- 5 files changed, 147 insertions(+), 3 deletions(-) create mode 100644 templates/admin/index.html 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 ', + [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 }}{% endblock %} + +{% block coltype %}colMS{% endblock %} + +{% block bodyclass %}dashboard{% endblock %} + +{% block breadcrumbs %}{% endblock %} + +{% block content %} +pppppppp +
+
+ + + + + + +
Custom Admin Pages
Create New User
+
+ +{% if app_list %} + {% for app in app_list %} +
+ + + {% for model in app.models %} + + {% if model.perms.change %} + + {% else %} + + {% endif %} + + {% if model.perms.add %} + + {% else %} + + {% endif %} + + {% if model.perms.change %} + + {% else %} + + {% endif %} + + {% endfor %} +
{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
{{ model.name }}{{ model.name }}{% trans 'Add' %} {% trans 'Change' %} 
+
+ {% endfor %} +{% else %} +

{% trans "You don't have permission to edit anything." %}

+{% endif %} +
+{% endblock %} + +{% block sidebar %} + +{% 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 %}

{{title}}

+ {% if description %}{{description}}{% endif %}
{% 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: -- cgit v1.2.3-24-g4f1b