Skip to content

Commit

Permalink
Adds quick creation of new users through the admin interface.
Browse files Browse the repository at this point in the history
Makes other small tweaks.

git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@576 0cfe37f9-358a-4d5e-be75-b63607b5c754
  • Loading branch information
hernani committed Aug 31, 2010
1 parent 483162a commit f3b3b73
Show file tree
Hide file tree
Showing 6 changed files with 114 additions and 64 deletions.
102 changes: 51 additions & 51 deletions forum/admin.py
Original file line number Diff line number Diff line change
@@ -1,49 +1,49 @@
# -*- coding: utf-8 -*-

from django.contrib import admin
from models import *

class AnonymousQuestionAdmin(admin.ModelAdmin):
"""AnonymousQuestion admin class"""

class NodeAdmin(admin.ModelAdmin):
"""Question admin class"""

class TagAdmin(admin.ModelAdmin):
"""Tag admin class"""

class Answerdmin(admin.ModelAdmin):
"""Answer admin class"""

class CommentAdmin(admin.ModelAdmin):
""" admin class"""

class VoteAdmin(admin.ModelAdmin):
""" admin class"""

class FlaggedItemAdmin(admin.ModelAdmin):
""" admin class"""

class FavoriteQuestionAdmin(admin.ModelAdmin):
""" admin class"""

class QuestionRevisionAdmin(admin.ModelAdmin):
""" admin class"""

class AnswerRevisionAdmin(admin.ModelAdmin):
""" admin class"""

class AwardAdmin(admin.ModelAdmin):
""" admin class"""

class BadgeAdmin(admin.ModelAdmin):
""" admin class"""

class ReputeAdmin(admin.ModelAdmin):
""" admin class"""

class ActionAdmin(admin.ModelAdmin):
""" admin class"""
#from django.contrib import admin
#from models import *
#
#class AnonymousQuestionAdmin(admin.ModelAdmin):
# """AnonymousQuestion admin class"""
#
#class NodeAdmin(admin.ModelAdmin):
# """Question admin class"""
#
#class TagAdmin(admin.ModelAdmin):
# """Tag admin class"""
#
#class Answerdmin(admin.ModelAdmin):
# """Answer admin class"""
#
#class CommentAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class VoteAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class FlaggedItemAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class FavoriteQuestionAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class QuestionRevisionAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class AnswerRevisionAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class AwardAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class BadgeAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class ReputeAdmin(admin.ModelAdmin):
# """ admin class"""
#
#class ActionAdmin(admin.ModelAdmin):
# """ admin class"""

#class BookAdmin(admin.ModelAdmin):
# """ admin class"""
Expand All @@ -54,13 +54,13 @@ class ActionAdmin(admin.ModelAdmin):
#class BookAuthorRssAdmin(admin.ModelAdmin):
# """ admin class"""

admin.site.register(Node, NodeAdmin)
admin.site.register(Tag, TagAdmin)
admin.site.register(QuestionRevision, QuestionRevisionAdmin)
admin.site.register(AnswerRevision, AnswerRevisionAdmin)
admin.site.register(Badge, BadgeAdmin)
admin.site.register(Award, AwardAdmin)
admin.site.register(Action, ActionAdmin)
#admin.site.register(Node, NodeAdmin)
#admin.site.register(Tag, TagAdmin)
#admin.site.register(QuestionRevision, QuestionRevisionAdmin)
#admin.site.register(AnswerRevision, AnswerRevisionAdmin)
#admin.site.register(Badge, BadgeAdmin)
#admin.site.register(Award, AwardAdmin)
#admin.site.register(Action, ActionAdmin)
#admin.site.register(Book, BookAdmin)
#admin.site.register(BookAuthorInfo, BookAuthorInfoAdmin)
#admin.site.register(BookAuthorRss, BookAuthorRssAdmin)
19 changes: 11 additions & 8 deletions forum/forms/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,14 +103,17 @@ class NodeManFilterForm(forms.Form):
text_in = forms.ChoiceField(required=False, widget=forms.RadioSelect, choices=TEXT_IN_CHOICES, initial='title')


NODE_SHOW_CHOICES = (
('score', _('Score')),
('added_at', 'Added at'),
('last_activity_at', 'Last activity at'),
('last_activity_by', 'Last activity by')
)
from forum.forms.auth import SimpleRegistrationForm
from forum.forms.general import SetPasswordForm


class CreateUserForm(SimpleRegistrationForm, SetPasswordForm):
validate_email = forms.BooleanField(required=False, label=_('send validation email'))

def __init__(self, *args, **kwargs):
super(CreateUserForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = ['username', 'email', 'validate_email', 'password1', 'password2']
self.fields['email'].label = _('email address')

class NodeManShowForm(forms.Form):
show = forms.MultipleChoiceField(choices=NODE_SHOW_CHOICES, widget=forms.CheckboxSelectMultiple)


20 changes: 20 additions & 0 deletions forum/skins/default/templates/osqaadmin/createuser.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{% extends basetemplate %}

{% load i18n %}
{% load user_tags %}

{% block subtitle %}
{% trans "Create User" %}
{% endblock %}
{% block description %}
{% trans "Quick creation of a new user" %}
{% endblock %}

{% block admincontent %}
<form action="" method="POST">
<table>
{{ form.as_table }}
<tr><th></th><td><input type="submit" value="{% trans "Save" %}"></td></tr>
</table>
</form>
{% endblock %}
2 changes: 1 addition & 1 deletion forum/skins/default/templates/osqaadmin/djstyle_base.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<div id="header">
{% block header %}
<div id="branding">
<h1 id="site-name"><a href="{% url admin_index %}">{{ settings.APP_SHORT_NAME }} - {% trans "Administration Area" %}</a> </h1>
<h1 id="site-name">{{ settings.APP_SHORT_NAME }} - {% trans "Administration Area" %} </h1>
</div>
{% endblock %}
<div id="user-tools">
Expand Down
4 changes: 3 additions & 1 deletion forum/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@

urlpatterns += patterns('',
url(r'^$', app.readers.index, name='index'),
url(r'^%s(.*)' % _('nimda/'), admin.site.root),

url(r'^sitemap.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps},
name='sitemap'),

Expand Down Expand Up @@ -143,7 +145,7 @@
url(r'^%s$' % _('badges/'), app.meta.badges, name='badges'),
url(r'^%s(?P<id>\d+)/(?P<slug>.+)$' % _('badges/'), app.meta.badge, name='badge'),
# (r'^admin/doc/' % _('admin/doc'), include('django.contrib.admindocs.urls')),
url(r'^%s(.*)' % _('nimda/'), admin.site.root, name='osqa_admin'),

url(r'^%s$' % _('upload/'), app.writers.upload, name='upload'),
url(r'^%s$' % _('search/'), app.readers.search, name='search'),
url(r'^%s$' % _('contact/'), app.meta.feedback, name='feedback'),
Expand Down
31 changes: 28 additions & 3 deletions forum/views/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@
from django.utils import simplejson
from django.db import models
from forum.settings.base import Setting
from forum.forms import MaintenanceModeForm, PageForm, NodeManFilterForm, NodeManShowForm
from forum.forms import MaintenanceModeForm, PageForm, NodeManFilterForm, CreateUserForm
from forum.settings.forms import SettingsSetForm
from forum.utils import pagination
from forum.utils import pagination, html

from forum.models import Question, Answer, User, Node, Action, Page, NodeState
from forum.models.node import NodeMetaClass
from forum.actions import NewPageAction, EditPageAction, PublishAction, DeleteAction
from forum.actions import NewPageAction, EditPageAction, PublishAction, DeleteAction, UserJoinsAction
from forum import settings

TOOLS = {}
Expand Down Expand Up @@ -381,6 +381,31 @@ def edit_page(request, id=None):
'published': published
})

@admin_tools_page(_('createuser'), _("Create new user"))
def create_user(request):
if request.POST:
form = CreateUserForm(request.POST)

if form.is_valid():
user_ = User(username=form.cleaned_data['username'], email=form.cleaned_data['email'])
user_.set_password(form.cleaned_data['password1'])

if not form.cleaned_data.get('validate_email', False):
user_.email_isvalid = True

user_.save()
UserJoinsAction(user=user_).save()

request.user.message_set.create(message=_("New user created sucessfully. %s.") % html.hyperlink(
user_.get_profile_url(), _("See %s profile") % user_.username, target="_blank"))

return HttpResponseRedirect(reverse("admin_tools", kwargs={'name': 'createuser'}))
else:
form = CreateUserForm()

return ('osqaadmin/createuser.html', {
'form': form,
})

class NodeManagementPaginatorContext(pagination.PaginatorContext):
def __init__(self, id='QUESTIONS_LIST', prefix='', default_pagesize=100):
Expand Down

0 comments on commit f3b3b73

Please sign in to comment.