diff options
-rw-r--r-- | devel/views.py | 53 | ||||
-rw-r--r-- | settings.py | 2 | ||||
-rw-r--r-- | templates/admin/index.html | 90 | ||||
-rw-r--r-- | templates/general_form.html | 1 | ||||
-rw-r--r-- | urls.py | 4 |
5 files changed, 147 insertions, 3 deletions
diff --git a/devel/views.py b/devel/views.py index 5e5e9c40..16867346 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 cdd737d2..478dd3b9 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 00000000..af4d0b78 --- /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> </td> + {% endif %} + + {% if model.perms.change %} + <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td> + {% else %} + <td> </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 4c174817..776f3672 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 %} @@ -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: |