Attachment 'RecommendPage-1.6.0-10.py'

Download

   1 # -*- coding: iso-8859-1 -*-
   2 """
   3     MoinMoin - RecommendPage Action Macro
   4 
   5     PURPOSE:
   6         This macro is used to recommend a page to an other wiki user.
   7 
   8     Syntax:
   9         http://localhost:8080/WikiName?action=RecommendPage
  10 
  11     PROCEDURE:
  12        You get an input mask to enter the username of the one where you like to send the recommendation. This is then stored on a page named WikiName/RecommendedPage as an wiki itemlist with the link and the first five lines in plain text. At the end your user SIG is written.
  13        A new entry is always written on top of the page. 
  14        The person is informed by an email notification about the changes
  15 
  16        If you don't enter a name the recommendation is done to your name
  17 
  18        Please remove the version number from the filename.
  19 
  20     MODIFICATION HISTORY:
  21         @copyright: 2005 by MoinMoin:ReimarBauer
  22         @license: GNU GPL, see COPYING for details.
  23         Version: 1.3.4-1
  24 
  25         2005-04-19 : Version 1.3.4-2
  26                      acl line on top of recommendation is set for a valid user/RecommendedPage to
  27                      WikiName:admin,read,write,delete All:read,write
  28                      otherwise for All:read,write
  29                      If the page user/RecommendedPage already exist acl right given on that page are used.
  30                      output changed similiar to the search output.
  31 
  32        2005-04-21 : Version 1.3.4-3
  33                     output changed into calling ShortText()
  34                     e.g.  * ["RulesForUnzip"]  [[ShortText(RulesForUnzip)]] ... @SIG@
  35                     it is also checked by now if acls are enabled in the config
  36        2005-09-02 : Version 1.3.5-4 
  37                     from SubscribeTo by Raphael Bossek learned to add an subscription for the email notification for a user before the new recommendation is written to the file. This means the user gots informed by an email.                
  38        2005-09-05 : Version 1.3.5-5
  39                     isSubscribedTo from user replaced because it could not destinguish between subpage and page
  40                     my implementation does not understand regular expressions at the moment so this gives by using regular expressions
  41                     one extraline in the config. 
  42        2005-09-07 : Version 1.3.5-6
  43                     text box changed to a selection menu for the user names (sorted by name)     
  44        2005-09-08 : Version 1.3.5-7
  45                     bug fix: spaces in html are different in browsers
  46                              in some browser no selction did not give the user name    
  47        2005-10-31 : Version 1.3.5-8
  48                     multiple selection added                                                   
  49                     no acl rights are set on a new recomendation page acls on an existing recommendation page not overwritten
  50                     non admin users could use this function too.
  51                     code changed by a version request to be useable with 1.5.0 too
  52        2006-02-03 : Version  1.5.1-9 1.3 compatible code removed
  53                     bug with wrong counted bad user fixed
  54        2008-01-11 : Version 1.6.0-10 refactored for 1.6 
  55 
  56 """
  57 from MoinMoin import wikiutil, user
  58 from MoinMoin.Page import Page
  59 from MoinMoin.PageEditor import PageEditor
  60 
  61 def RecommendPage(request, pagename, username):
  62     err = None
  63     name = "%(username)s/RecommendedPage" % {"username": username}
  64     page = PageEditor(request, name)
  65     if request.user.may.write(name):
  66         if user.getUserId(request, username) is not None:
  67             uid = user.getUserId(request, username)
  68             recom_user = user.User (request, id=uid)
  69 
  70             subscription_list = recom_user.getSubscriptionList()
  71             isSubscribedTo = 0
  72             for test in subscription_list:
  73                 if test == name:
  74                    isSubsribedTo = 1
  75 
  76             if isSubscribedTo == 0:
  77                 recom_user.subscribe(name)
  78                 recom_user.save()
  79 
  80         newtext = u" * [[%(pagename)s]]  <<ShortText(%(pagename)s)>> ...\n %(username)s\n" % {
  81                  "pagename": pagename,
  82                  "username":"@SIG@"}
  83 
  84         if not page.exists():
  85            PageEditor.saveText(page, newtext, 0)
  86         else:
  87             body = page.get_data()
  88             meta = page.get_meta()
  89             text_meta = ''
  90             for command, attrib in meta:
  91                 text_meta = '#%s %s\n%s' % (command, attrib, text_meta)
  92 
  93             text = "%s\n%s\n%s\n" % (text_meta, newtext, body)
  94             PageEditor.saveText(page, text, 0)
  95     else:
  96         err = "Can not write"
  97         return err
  98 
  99 def execute(pagename, request):
 100     _ = request.getText
 101     actname = __name__.split('.')[-1]
 102 
 103     if request.user.may.read(pagename):
 104         thispage = Page(request, pagename)
 105         if request.form.has_key('button') and request.form.has_key('ticket'):
 106             if not wikiutil.checkTicket(request, request.form['ticket'][0]):
 107                   return thispage.send_page(msg=_('Please use the interactive user interface to recommend pages!'))
 108 
 109             selected_users = request.form.get('username', [u''])
 110             good = []
 111             bad = []
 112             for username in selected_users:
 113                 i = 0
 114                 if len(username.strip()) == 0:
 115                     username = request.user.name
 116                     selected_users[i] = username
 117                     i += 1
 118 
 119                 err = RecommendPage(request, pagename, username)
 120                 if err is None:
 121                    good.append(username)
 122                 else:
 123                    bad.append(username)
 124 
 125             msg = "recommended to read %(pagename)s to %(username)s" % {
 126                   "pagename": pagename,
 127                   "username": ' '.join(good)}
 128 
 129             msg_bad = ''
 130             if len(bad) > 1:
 131                 msg_bad = "\ncan not recommend page to read to %(username)s" % {
 132                           "username":' '.join(bad)}
 133 
 134             msg = "%s%s" % (msg, msg_bad)
 135             Page(request, pagename).send_page(msg=msg)
 136             return
 137         users = user.getUserList(request)
 138         html = []
 139         for uid in users:
 140             name = user.User(request, id=uid).name
 141             html.append("<OPTION>%(name)s</OPTION>" % {"name":name})
 142 
 143         html.sort()
 144         n = min([3, len(html)])
 145 
 146         formhtml = '''
 147 <form method="post" >
 148 <strong>%(querytext)s</strong><BR>
 149 <select name="username" size="%(len)s" multiple>
 150 %(option)s
 151 </select>
 152 <input type="hidden" name="action" value="%(actname)s">
 153 <input type="submit" name="button" value="%(button)s">
 154 
 155 <BR>
 156 (no selection recommends to: %(user)s)
 157 
 158 <input type="hidden" name="ticket" value="%(ticket)s">
 159 <p>
 160 </form>''' % {
 161     'querytext': 'Recommend page to',
 162     'actname': 'RecommendPage',
 163     'ticket': wikiutil.createTicket(request),
 164     'option': ' '.join(html),
 165     'user': request.user.name,
 166     'len': n,
 167     'button': 'Recommend'}
 168 
 169         return thispage.send_page(msg=formhtml)

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] (2011-04-14 07:28:03, 4.7 KB) [[attachment:CreateNewPage.py]]
  • [get | view] (2011-04-14 07:26:24, 4.2 KB) [[attachment:CreateNewPage1.6.py]]
  • [get | view] (2006-09-10 21:29:29, 40.4 KB) [[attachment:CreatePdfDocument2_0_3.py]]
  • [get | view] (2006-09-12 06:05:06, 40.5 KB) [[attachment:CreatePdfDocument2_0_4.py]]
  • [get | view] (2006-09-12 12:00:09, 40.6 KB) [[attachment:CreatePdfDocument2_0_5.py]]
  • [get | view] (2006-11-14 21:56:11, 43.5 KB) [[attachment:CreatePdfDocument2_0_6.py]]
  • [get | view] (2006-11-15 17:00:47, 43.8 KB) [[attachment:CreatePdfDocument2_0_7.py]]
  • [get | view] (2006-11-16 22:06:18, 43.8 KB) [[attachment:CreatePdfDocument2_0_8.py]]
  • [get | view] (2006-12-17 15:54:21, 43.6 KB) [[attachment:CreatePdfDocument2_0_9.py]]
  • [get | view] (2007-08-20 09:10:23, 67.2 KB) [[attachment:CreatePdfDocument2_1_0.py]]
  • [get | view] (2007-08-21 07:39:49, 67.1 KB) [[attachment:CreatePdfDocument2_1_1.py]]
  • [get | view] (2007-09-11 19:16:37, 67.3 KB) [[attachment:CreatePdfDocument2_1_2.py]]
  • [get | view] (2007-09-18 20:17:58, 68.1 KB) [[attachment:CreatePdfDocument2_1_3.py]]
  • [get | view] (2007-09-21 13:32:54, 71.1 KB) [[attachment:CreatePdfDocument2_1_4.py]]
  • [get | view] (2007-09-23 20:56:30, 73.4 KB) [[attachment:CreatePdfDocument2_1_5.py]]
  • [get | view] (2007-09-25 20:54:48, 74.5 KB) [[attachment:CreatePdfDocument2_2_0.py]]
  • [get | view] (2008-06-23 21:08:49, 77.0 KB) [[attachment:CreatePdfDocument2_3_0.py]]
  • [get | view] (2008-06-26 19:25:07, 81.0 KB) [[attachment:CreatePdfDocument2_3_1.py]]
  • [get | view] (2008-07-06 05:50:38, 83.1 KB) [[attachment:CreatePdfDocument2_3_2.py]]
  • [get | view] (2008-07-09 17:42:02, 83.3 KB) [[attachment:CreatePdfDocument2_3_3.py]]
  • [get | view] (2008-09-07 11:11:01, 83.5 KB) [[attachment:CreatePdfDocument2_3_4.py]]
  • [get | view] (2009-01-11 15:53:09, 84.3 KB) [[attachment:CreatePdfDocument2_3_5.py]]
  • [get | view] (2009-02-16 06:52:06, 84.2 KB) [[attachment:CreatePdfDocument2_3_6.py]]
  • [get | view] (2010-01-29 11:53:21, 82.8 KB) [[attachment:CreatePdfDocument2_4_0.py]]
  • [get | view] (2010-01-31 14:10:03, 84.6 KB) [[attachment:CreatePdfDocument2_4_1.py]]
  • [get | view] (2010-09-18 16:23:23, 85.6 KB) [[attachment:CreatePdfDocument2_4_2.py]]
  • [get | view] (2006-06-16 20:56:53, 4.9 KB) [[attachment:FlashManager.py-1.5.3-1]]
  • [get | view] (2003-12-07 18:15:53, 3.9 KB) [[attachment:HTML2MoinMoin.py]]
  • [get | view] (2005-10-16 08:24:35, 4.9 KB) [[attachment:HelpOn-1.3.5-4.py]]
  • [get | view] (2006-02-03 19:21:04, 4.9 KB) [[attachment:HelpOn-1.5.1-5.py]]
  • [get | view] (2006-07-04 10:45:22, 4.8 KB) [[attachment:HelpOn-1.5.4-6.py]]
  • [get | view] (2006-07-04 22:39:14, 4.8 KB) [[attachment:HelpOn-1.6.0-7.py]]
  • [get | view] (2006-07-06 13:50:17, 4.0 KB) [[attachment:HelpOn-1.6.0-8.py]]
  • [get | view] (2008-01-10 17:43:24, 4.8 KB) [[attachment:HelpOn-1.6.0-9.py]]
  • [get | view] (2008-08-19 14:44:54, 5.0 KB) [[attachment:HelpOn-1.7.1-10.py]]
  • [get | view] (2005-02-20 18:28:34, 10.8 KB) [[attachment:IRSS.py]]
  • [get | view] (2005-03-09 22:46:23, 2.9 KB) [[attachment:ImportHtml-1.2.py]]
  • [get | view] (2003-12-07 18:15:53, 2.8 KB) [[attachment:ImportHtml.py]]
  • [get | view] (2003-12-07 18:15:53, 1.8 KB) [[attachment:IrcChat.py]]
  • [get | view] (2008-06-09 11:27:20, 4.4 KB) [[attachment:MoinCrypt.py]]
  • [get | view] (2010-11-29 12:08:27, 7.5 KB) [[attachment:PageActions.py]]
  • [get | view] (2006-08-07 15:12:19, 0.5 KB) [[attachment:PermanentLink.py]]
  • [get | view] (2003-12-07 18:15:53, 6.3 KB) [[attachment:PhoneDial.py]]
  • [get | view] (2005-04-17 14:21:47, 3.6 KB) [[attachment:RecommendPage-1.3.4-1.py]]
  • [get | view] (2005-04-19 18:21:52, 5.5 KB) [[attachment:RecommendPage-1.3.4-2.py]]
  • [get | view] (2005-05-02 19:53:09, 5.6 KB) [[attachment:RecommendPage-1.3.4-3.py]]
  • [get | view] (2005-09-03 07:33:35, 6.3 KB) [[attachment:RecommendPage-1.3.4-4.py]]
  • [get | view] (2005-09-05 17:44:03, 6.9 KB) [[attachment:RecommendPage-1.3.5-5.py]]
  • [get | view] (2005-09-07 16:42:26, 7.5 KB) [[attachment:RecommendPage-1.3.5-6.py]]
  • [get | view] (2005-09-08 16:06:28, 7.7 KB) [[attachment:RecommendPage-1.3.5-7.py]]
  • [get | view] (2005-11-01 11:31:51, 9.0 KB) [[attachment:RecommendPage-1.3.5-8.py]]
  • [get | view] (2006-02-03 19:40:51, 8.3 KB) [[attachment:RecommendPage-1.5.1-9.py]]
  • [get | view] (2008-01-11 09:14:35, 6.8 KB) [[attachment:RecommendPage-1.6.0-10.py]]
  • [get | view] (2008-08-19 14:44:59, 6.9 KB) [[attachment:RecommendPage-1.7.1-11.py]]
  • [get | view] (2008-06-09 11:27:40, 1.7 KB) [[attachment:ShowActions.py]]
  • [get | view] (2008-06-09 10:34:02, 5.3 KB) [[attachment:ShowDecrypted.py]]
  • [get | view] (2005-03-30 21:17:28, 7.7 KB) [[attachment:Slideshow.py]]
  • [get | view] (2004-02-02 20:48:31, 2.0 KB) [[attachment:SubscribeUser.py]]
  • [get | view] (2007-01-26 17:08:30, 2.2 KB) [[attachment:Subscribers-1.6.0.py]]
  • [get | view] (2003-12-07 18:15:53, 1.8 KB) [[attachment:Subscribers.py]]
  • [get | view] (2006-03-18 23:16:51, 0.8 KB) [[attachment:UserPreferences.py]]
  • [get | view] (2004-01-05 09:56:25, 8.1 KB) [[attachment:VisualSiteMap.py]]
  • [get | view] (2015-08-30 21:04:23, 11.1 KB) [[attachment:VisualSiteMap_1.10.py]]
  • [get | view] (2004-10-08 10:59:16, 9.3 KB) [[attachment:VisualSiteMap_1.2.py]]
  • [get | view] (2005-03-16 01:30:09, 9.8 KB) [[attachment:VisualSiteMap_1.3.py]]
  • [get | view] (2014-08-19 01:34:10, 10.8 KB) [[attachment:VisualSiteMap_1.9.py]]
  • [get | view] (2007-08-18 18:52:55, 1.0 KB) [[attachment:backlink.py]]
  • [get | view] (2007-03-15 05:53:49, 23.5 KB) [[attachment:findandreplace0.1Beta.py]]
  • [get | view] (2005-03-27 20:32:10, 3.6 KB) [[attachment:gallery2image-1.3.3-1.py]]
  • [get | view] (2005-08-03 20:14:56, 4.0 KB) [[attachment:gallery2image-1.3.3-2.py]]
  • [get | view] (2005-11-13 18:10:26, 20.7 KB) [[attachment:gallery2image-1.3.5-10.py]]
  • [get | view] (2005-11-25 22:03:50, 20.8 KB) [[attachment:gallery2image-1.3.5-11.py]]
  • [get | view] (2005-08-08 17:23:43, 8.4 KB) [[attachment:gallery2image-1.3.5-4.py]]
  • [get | view] (2005-08-13 15:15:45, 13.7 KB) [[attachment:gallery2image-1.3.5-5.py]]
  • [get | view] (2005-08-31 22:05:22, 15.5 KB) [[attachment:gallery2image-1.3.5-6.py]]
  • [get | view] (2005-10-29 20:23:50, 15.9 KB) [[attachment:gallery2image-1.3.5-8.py]]
  • [get | view] (2005-11-01 11:31:24, 17.6 KB) [[attachment:gallery2image-1.3.5-9.py]]
  • [get | view] (2006-01-27 20:52:32, 20.9 KB) [[attachment:gallery2image-1.5.1-12.py]]
  • [get | view] (2006-08-06 09:01:01, 22.1 KB) [[attachment:gallery2image-1.5.4-13.py]]
  • [get | view] (2006-08-11 18:21:40, 22.2 KB) [[attachment:gallery2image-1.5.4-14.py]]
  • [get | view] (2006-11-16 20:23:27, 22.6 KB) [[attachment:gallery2image-1.5.6-16.py]]
  • [get | view] (2006-08-11 18:30:22, 22.2 KB) [[attachment:gallery2image-1.6.0-15.py]]
  • [get | view] (2008-02-06 10:13:45, 22.3 KB) [[attachment:gallery2image-1.6.0-16.py]]
  • [get | view] (2008-05-20 15:51:09, 22.4 KB) [[attachment:gallery2image-1.6.3-17.py]]
  • [get | view] (2006-09-06 06:19:48, 1.3 KB) [[attachment:getmmap.py]]
  • [get | view] (2004-07-18 09:48:00, 1.5 KB) [[attachment:localnames.py]]
  • [get | view] (2005-03-25 15:02:31, 2.6 KB) [[attachment:newpageonly.py]]
  • [get | view] (2005-03-30 09:02:00, 3.5 KB) [[attachment:newpageonly_20050330.py]]
  • [get | view] (2006-06-06 19:12:27, 9.7 KB) [[attachment:pdf.py]]
  • [get | view] (2006-08-30 10:51:51, 36.0 KB) [[attachment:pdf2_0_0.py]]
  • [get | view] (2006-08-30 13:57:36, 36.5 KB) [[attachment:pdf2_0_1.py]]
  • [get | view] (2006-02-04 04:25:29, 1.0 KB) [[attachment:sisterindex.py]]
  • [get | view] (2004-10-28 07:33:10, 0.7 KB) [[attachment:xml.py]]
 All files | Selected Files: delete move to page copy to page

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