Attachment 'RecommendPage-1.3.4-2.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 
  32 """
  33 
  34 import string
  35 from MoinMoin import config, wikiutil, user, wikiacl, search
  36 from MoinMoin.Page import Page
  37 from MoinMoin.PageEditor import PageEditor
  38 
  39 def ACLparse(request, body):
  40     """
  41       taken from wikiacl and simply changed to return acl text and body without acl definition
  42       renamed from parseACL to ACLparse
  43     """
  44 
  45     if not request.cfg.acl_enabled:
  46         return AccessControlList(request)
  47 
  48 
  49     acl_lines = []
  50     while body and body[0] == '#':
  51         # extract first line
  52         try:
  53             line, body = body.split('\n', 1)
  54         except ValueError:
  55             line = body
  56             body = ''
  57 
  58         # end parsing on empty (invalid) PI
  59         if line == "#":
  60             break
  61 
  62         # skip comments (lines with two hash marks)
  63         if line[1] == '#':
  64             continue
  65 
  66         tokens = line.split(None, 1)
  67         if tokens[0].lower() == "#acl":
  68             if len(tokens) == 2:
  69                 args = tokens[1].rstrip()
  70             else:
  71                 args = ""
  72             acl_lines.append(args)
  73     return acl_lines,body
  74 
  75 def RecommendPage(request,pagename,username):
  76     if config.allow_subpages:
  77         delimiter = "/"
  78     else:
  79         delimiter = ""
  80 
  81     name=username + delimiter + "RecommendedPage"
  82     page = PageEditor(request,name)
  83     if request.user.may.write(name):
  84 
  85 
  86         thispage=Page(request,pagename)
  87         thisraw=thispage.get_raw_body()
  88         given_acl,thisraw = ACLparse(request, thisraw)
  89 
  90 
  91 
  92         if (len(thisraw) > 180):
  93            result=thisraw[0:180]+' ...'
  94         else:
  95            result=thisraw
  96 
  97         lines = result.split('\n')
  98         result='{{{'+string.join(lines,'}}} {{{')+'}}}'
  99 
 100         newtext=u" * %(pagename)s  '''%(about)s'''\n %(username)s\n" % {
 101              "pagename": '["'+pagename+'"]',
 102              "about":result,
 103              "username":"@SIG@"}
 104 
 105         rev = page.current_rev()
 106         if not page.exists() :
 107            if (user.getUserId(request, username) != None):
 108                acl="#acl %(username)s:admin,read,write,delete All:read,write\n" % {
 109                    "username":username}
 110            else:
 111                acl="#acl All:read,write\n"
 112 
 113            PageEditor.saveText(page,acl+newtext,rev)
 114         else:
 115             body = page.get_raw_body()
 116             given_acl,body = ACLparse(request, body)
 117 
 118             if len(string.join(given_acl,"")) > 0:
 119                 acl="#acl %(given_acl)s \n" % {
 120                     "given_acl":string.join(given_acl,"\n")}
 121             else:
 122                 acl=""
 123 
 124             PageEditor.saveText(page,acl+newtext+body,rev)
 125 
 126         msg="recommended to read %(pagename)s to %(username)s" % {
 127             "pagename": pagename,
 128             "username":username}
 129 
 130         Page(request, pagename).send_page(request, msg=msg)
 131     else:
 132         Page(request, pagename).send_page(request, msg="You are not allowed to recommend pages")
 133 
 134 
 135 def execute(pagename, request):
 136 
 137 
 138     _ = request.getText
 139     actname = __name__.split('.')[-1]
 140 
 141 
 142     if request.user.may.read(pagename):
 143 
 144         thispage=Page(request,pagename)
 145 
 146         if request.form.has_key('button') and request.form.has_key('ticket'):
 147         # check whether this is a valid recommention request (make outside
 148         # attacks harder by requiring two full HTTP transactions)
 149             if not wikiutil.checkTicket(request.form['ticket'][0]):
 150                   return thispage.send_page(request,
 151                       msg = _('Please use the interactive user interface to recommend pages!'))
 152 
 153             username=request.form.get('username', [u''])[0]
 154             if (len(username.strip()) == 0):
 155                 username=request.user.name
 156             return RecommendPage(request,pagename,username)
 157 
 158         formhtml = '''
 159 <form method="post" action="">
 160 <strong>%(querytext)s</strong>
 161 <input type="hidden" name="action" value="%(actname)s">
 162 <input type="submit" name="button" value="%(button)s">
 163 <input type="hidden" name="ticket" value="%(ticket)s">
 164 <p>
 165 Username (WikiName)<br>
 166 <input type="text" name="username" size="30" maxlength="40">
 167 </form>''' % {
 168     'querytext': 'Recommend page to',
 169     'actname': 'RecommendPage',
 170     'ticket' :wikiutil.createTicket(),
 171     'button': 'Recommend'}
 172 
 173         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.