]> 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 -*-
 
 # -*- 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"""
     
 #class BookAdmin(admin.ModelAdmin):
 #    """  admin class"""
@@ -54,13 +54,13 @@ class ActionAdmin(admin.ModelAdmin):
 #class BookAuthorRssAdmin(admin.ModelAdmin):
 #    """  admin class"""
     
 #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)
 #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')
 
 
     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
 
     
\ 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">
         <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">
             </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'),
 
 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'),
 
                         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$' % _('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'),
                         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 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.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.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 = {}
 from forum import settings
 
 TOOLS = {}
@@ -381,6 +381,31 @@ def edit_page(request, id=None):
     'published': published
     })
 
     '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):
 
 class NodeManagementPaginatorContext(pagination.PaginatorContext):
     def __init__(self, id='QUESTIONS_LIST', prefix='', default_pagesize=100):