Attachment 'RecommendPage-1.3.4-3.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     CALLING SEQUENCE:
   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 
  15        If you don't enter a name the recommendation is done to your name
  16 
  17        Please remove the version number from the filename.
  18 
  19     MODIFICATION HISTORY:
  20         @copyright: 2005 by Reimar Bauer (R.Bauer@fz-juelich.de)
  21         @license: GNU GPL, see COPYING for details.
  22         Version: 1.3.4-1
  23 
  24         2005-04-19 : Version 1.3.4-2
  25                      acl line on top of recommendation is set for a valid user/RecommendedPage to
  26                      WikiName:admin,read,write,delete All:read,write
  27                      otherwise for All:read,write
  28                      If the page user/RecommendedPage already exist acl right given on that page are used.
  29                      output changed similiar to the search output.
  30 
  31        2005-04-21 : Version 1.3.4-3
  32                     output changed into calling ShortText()
  33                     e.g.  * ["RulesForUnzip"]  [[ShortText(RulesForUnzip)]] ... @SIG@
  34                     it is also checked by now if acls are enabled in the config
  35 
  36 """
  37 
  38 import string
  39 from MoinMoin import config, wikiutil, user, wikiacl, search
  40 from MoinMoin.Page import Page
  41 from MoinMoin.PageEditor import PageEditor
  42 
  43 def ACLparse(request, body):
  44     """
  45       taken from wikiacl and simply changed to return acl text and body without acl definition
  46       renamed from parseACL to ACLparse
  47     """
  48 
  49     if not request.cfg.acl_enabled:
  50         return AccessControlList(request),body
  51 
  52 
  53     acl_lines = []
  54     while body and body[0] == '#':
  55         # extract first line
  56         try:
  57             line, body = body.split('\n', 1)
  58         except ValueError:
  59             line = body
  60             body = ''
  61 
  62         # end parsing on empty (invalid) PI
  63         if line == "#":
  64             break
  65 
  66         # skip comments (lines with two hash marks)
  67         if line[1] == '#':
  68             continue
  69 
  70         tokens = line.split(None, 1)
  71         if tokens[0].lower() == "#acl":
  72             if len(tokens) == 2:
  73                 args = tokens[1].rstrip()
  74             else:
  75                 args = ""
  76             acl_lines.append(args)
  77     return acl_lines,body
  78 
  79 def RecommendPage(request,pagename,username):
  80     if config.allow_subpages:
  81         delimiter = "/"
  82     else:
  83         delimiter = ""
  84 
  85     name=username + delimiter + "RecommendedPage"
  86     page = PageEditor(request,name)
  87     if request.user.may.write(name):
  88 
  89         newtext=u" * %(pagename)s  %(about)s ...\n %(username)s\n" % {
  90              "pagename": '["'+pagename+'"]',
  91              "about":"[[ShortText(%(pagename)s)]]" % {
  92                      "pagename": pagename},
  93              "username":"@SIG@"}
  94 
  95         rev = page.current_rev()
  96         if not page.exists() :
  97            if request.cfg.acl_enabled:
  98                if (user.getUserId(request, username) != None):
  99                    acl="#acl %(username)s:admin,read,write,delete All:read,write\n" % {
 100                        "username":username}
 101                else:
 102                    acl="#acl All:read,write\n"
 103            else:
 104                acl=""
 105            PageEditor.saveText(page,acl+newtext,rev)
 106 
 107         else:
 108             body = page.get_raw_body()
 109             given_acl,body = ACLparse(request, body)
 110 
 111             if len(string.join(given_acl,"")) > 0:
 112                 acl="#acl %(given_acl)s \n" % {
 113                     "given_acl":string.join(given_acl,"\n")}
 114             else:
 115                 acl=""
 116 
 117             PageEditor.saveText(page,acl+newtext+body,rev)
 118 
 119         msg="recommended to read %(pagename)s to %(username)s" % {
 120             "pagename": pagename,
 121             "username":username}
 122 
 123         Page(request, pagename).send_page(request, msg=msg)
 124     else:
 125         Page(request, pagename).send_page(request, msg="You are not allowed to recommend pages")
 126 
 127 
 128 def execute(pagename, request):
 129 
 130 
 131     _ = request.getText
 132     actname = __name__.split('.')[-1]
 133 
 134 
 135     if request.user.may.read(pagename):
 136 
 137         thispage=Page(request,pagename)
 138 
 139         if request.form.has_key('button') and request.form.has_key('ticket'):
 140         # check whether this is a valid recommention request (make outside
 141         # attacks harder by requiring two full HTTP transactions)
 142             if not wikiutil.checkTicket(request.form['ticket'][0]):
 143                   return thispage.send_page(request,
 144                       msg = _('Please use the interactive user interface to recommend pages!'))
 145 
 146             username=request.form.get('username', [u''])[0]
 147             if (len(username.strip()) == 0):
 148                 username=request.user.name
 149             return RecommendPage(request,pagename,username)
 150 
 151         formhtml = '''
 152 <form method="post" action="">
 153 <strong>%(querytext)s</strong>
 154 <input type="hidden" name="action" value="%(actname)s">
 155 <input type="submit" name="button" value="%(button)s">
 156 <input type="hidden" name="ticket" value="%(ticket)s">
 157 <p>
 158 Username (WikiName)<br>
 159 <input type="text" name="username" size="30" maxlength="40">
 160 </form>''' % {
 161     'querytext': 'Recommend page to',
 162     'actname': 'RecommendPage',
 163     'ticket' :wikiutil.createTicket(),
 164     'button': 'Recommend'}
 165 
 166         return thispage.send_page(request, 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.