]> git.openstreetmap.org Git - osqa.git/commitdiff
Adds quick creation of new users through the admin interface.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Tue, 31 Aug 2010 11:41:55 +0000 (11:41 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Tue, 31 Aug 2010 11:41:55 +0000 (11:41 +0000)
Makes other small tweaks.

git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@576 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum/admin.py
forum/forms/admin.py
forum/skins/default/templates/osqaadmin/createuser.html [new file with mode: 0644]
forum/skins/default/templates/osqaadmin/djstyle_base.html
forum/urls.py
forum/views/admin.py

index e77080600564ead399d8232d841ac1013aef570d..c327ff84d2abb475822f19076bb23d076dde26b0 100644 (file)
@@ -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"""
@@ -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)
index 7bf789e75b5cce1d23bdbaa09e9283e1e2be620b..389e70e450b3ae531427166d70d22dd604220c78 100644 (file)
@@ -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)
 
     
\ No newline at end of file
diff --git a/forum/skins/default/templates/osqaadmin/createuser.html b/forum/skins/default/templates/osqaadmin/createuser.html
new file mode 100644 (file)
index 0000000..4b0ed8c
--- /dev/null
@@ -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 %}
\ No newline at end of file
index 255bc36ab97c4d1ec2351b4d5325fdaf99f1a3d3..3527dc1d5cecd2797d2aedcd4aaf251922321c69 100644 (file)
@@ -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">
index f39533a10680a78409ec87bce65bd47896919e93..70fd64c14cab975377cb7dd81c7d885cc051501f 100644 (file)
@@ -31,6 +31,8 @@ for pattern_file in module_patterns:
 
 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'),
 
@@ -143,7 +145,7 @@ urlpatterns += patterns('',
                         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'),
index c0834a1675bddab81a5a439e444851d7276ba46e..7f83f9aa21f4ad45820a6dab84188969f8eeb4b4 100644 (file)
@@ -10,13 +10,13 @@ from django.utils.translation import ugettext as _
 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 = {}
@@ -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):