Attachment 'moin_patch_20061103.txt'

Download

   1 # HG changeset patch
   2 # User ReimarBauer <R.Bauer@fz-juelich.de>
   3 # Node ID 7937d0ddbc414c30a245d0ad209812b2fe768c40
   4 # Parent  96706051ff4eac5872a1986cbd83e92cccb214c8
   5 sendmail feature added to send an invitation. sendmail does have an optional --comment key to add some text for an invitation. 
   6 create was changed to create always a password if non was submitted.
   7 
   8 diff -r 96706051ff4e -r 7937d0ddbc41 MoinMoin/script/_util.py
   9 --- a/MoinMoin/script/_util.py	Sat Oct 28 19:29:25 2006 +0200
  10 +++ b/MoinMoin/script/_util.py	Fri Nov 03 17:35:08 2006 +0100
  11 @@ -130,6 +130,7 @@ class MoinScript(Script):
  12              
  13  moin ... account check ...
  14  moin ... account create ...
  15 +moin ... account sendmail ...
  16  moin ... account disable ...
  17  
  18  moin ... cli show ...
  19 diff -r 96706051ff4e -r 7937d0ddbc41 MoinMoin/script/account/create.py
  20 --- a/MoinMoin/script/account/create.py	Sat Oct 28 19:29:25 2006 +0200
  21 +++ b/MoinMoin/script/account/create.py	Fri Nov 03 17:35:08 2006 +0100
  22 @@ -43,6 +43,18 @@ class PluginScript(MoinScript):
  23          request = self.request
  24  
  25          from MoinMoin import user, wikiutil
  26 +        if not self.options.password:
  27 +            import time, sha
  28 +            from random import randint
  29 +            import base64
  30 +
  31 +            charset = 'utf-8'
  32 +            pwd = "%s%d" % (str(time.time()), randint(0, 65535))
  33 +            pwd = pwd.encode(charset)
  34 +            pwd = sha.new(pwd).digest()
  35 +            pwd = '{SHA}%s' % base64.encodestring(pwd).rstrip()
  36 +            self.options.password = pwd
  37 +
  38          u = user.User(request, None, self.options.uname, password=self.options.password)
  39          u.email = self.options.email
  40          u.aliasname = self.options.ualiasname or ''
  41 diff -r 96706051ff4e -r 7937d0ddbc41 MoinMoin/script/account/sendmail.py
  42 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  43 +++ b/MoinMoin/script/account/sendmail.py	Fri Nov 03 17:35:08 2006 +0100
  44 @@ -0,0 +1,88 @@
  45 +# -*- coding: iso-8859-1 -*-
  46 +"""
  47 +    MoinMoin - invite a user by sending the account data 
  48 +
  49 +    @copyright: 2006 by MoinMoin:ReimarBauer
  50 +    @license: GNU GPL, see COPYING for details.
  51 +"""
  52 +from MoinMoin import user, wikiutil
  53 +from MoinMoin.script._util import MoinScript
  54 +from MoinMoin.util import mail
  55 +
  56 +class PluginScript(MoinScript):
  57 +    def __init__(self, argv, def_values):
  58 +        MoinScript.__init__(self, argv, def_values)
  59 +        self.parser.add_option(
  60 +            "--email", metavar="EMAIL", dest="email",
  61 +            help="Set the user's email address to EMAIL."
  62 +        )
  63 +        self.parser.add_option(
  64 +            "--comment", metavar="comment", dest="comment",
  65 +            help="adds a comment to the mailbody."
  66 +        )
  67 +
  68 +    def get_user(self):
  69 +        users = user.getUserList(self.request)
  70 +        for uid in users:
  71 +            theuser = user.User(self.request, uid)
  72 +            if theuser.valid and theuser.email.lower() == self.options.email.lower():
  73 +                return theuser
  74 +
  75 +    def check_user(self):
  76 +        users = user.getUserList(self.request)
  77 +        for uid in users:
  78 +            theuser = user.User(self.request, uid)
  79 +            if theuser.valid and theuser.email.lower() == self.options.email.lower():
  80 +                return True
  81 +        return False
  82 +
  83 +    def mainloop(self):
  84 +        # we don't expect non-option arguments
  85 +        if len(self.args) != 0:
  86 +            self.parser.error("incorrect number of arguments")
  87 +
  88 +        flags_given = self.options.email
  89 +        if not flags_given:
  90 +            self.parser.print_help()
  91 +            import sys
  92 +            sys.exit(1)
  93 +
  94 +        self.init_request()
  95 +        request = self.request
  96 +        cfg = request.cfg
  97 +
  98 +        if self.check_user():
  99 +            theuser = self.get_user()
 100 +            if len(theuser.enc_password) == 0:
 101 +                print "- Can't invite check the passowrd of this user %s" % (theuser.name)
 102 +                return
 103 +
 104 +            subject = ('[%(sitename)s] Your wiki account data') % {'sitename': self.options.wiki_url or "Wiki"}
 105 +            text = 'Welcome to the Wiki'
 106 +
 107 +            text = '\n' + """\
 108 +Login Name: %s
 109 +
 110 +Login Password: %s
 111 +
 112 +Login URL: %s/?action=login
 113 + """ % (theuser.name, theuser.enc_password, self.options.wiki_url)
 114 +
 115 +            text = """\
 116 +Please use the data below and just enter the
 117 +password AS SHOWN into the wiki's password form field (use copy and paste
 118 +for that).
 119 +
 120 +After successfully logging in, it is of course a good idea to set a new and known password.
 121 +""" + text
 122 +
 123 +            if self.options.comment:
 124 +               text = self.options.comment + '\n\n' + text
 125 +
 126 +            mailok, msg = mail.sendmail(request, [self.options.email], subject,
 127 +                                        text, mail_from=cfg.mail_from or "Wiki")
 128 +            print "- invitation sended"
 129 +        else:
 130 +            print "- Can't invite, because user does not exist"
 131 +
 132 +

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2006-11-03 16:53:11, 4.8 KB) [[attachment:moin_patch_20061103.txt]]
  • [get | view] (2006-11-04 22:27:46, 4.8 KB) [[attachment:moin_patch_20061104.txt]]
 All files | Selected Files: delete move to page copy to page

You are not allowed to attach a file to this page.