diff data/plugin/parser/text_x_arnica.py @ 149:62a6c964e63b

fixed and added docstrings
author Reimar Bauer <rb.proj AT googlemail DOT com>
date Fri, 11 Jul 2008 12:56:16 +0200
parents 002df10706b5
children 7438cd3fdfba
line wrap: on
line diff
--- a/data/plugin/parser/text_x_arnica.py	Mon Jun 30 15:27:04 2008 +0200
+++ b/data/plugin/parser/text_x_arnica.py	Fri Jul 11 12:56:16 2008 +0200
@@ -3,22 +3,22 @@
     MoinMoin - arnica parser
 
     This parser is used to visualize a couple of images as a thumbnail gallery.
-    Optional a description of an image could be added including WikiName.
-    On default the image name and it's creation date is shown.
-    If you click on a thumbnail you get the webnails shown.
-    By a menue you are able to toggle between the slides.
+    Optionally, a description of an image can be added.
+    
+    By default the image name and its creation date is shown.
+    If you click on a thumbnail you get navigation tools shown to slide through your images.
 
-
-    MODIFICATION HISTORY:
-    based on Gallery2 by ReimarBauer 2005-2008, ThomasWaldmann 2005, FlorianFesti 2006
+    Based on Gallery2 by ReimarBauer 2005-2008, ThomasWaldmann 2005, FlorianFesti 2006
 
     @copyright: 2008 by MoinMoin:ReimarBauer
     @license: GNU GPL, see COPYING for details.
 """
+
 import os, re
 from random import randint
+
 from MoinMoin import caching, config, wikiutil
-from MoinMoin.action import AttachFile
+from MoinMoin.action import AttachFile, sendcached
 from MoinMoin.filter import EXIF
 from MoinMoin.packages import packLine
 from MoinMoin.Page import Page
@@ -136,23 +136,23 @@
                     renew=False,
                     thumbnail_width=wikiutil.UnitArgument('128', float, ['px', ], defaultunit='px'),
                     webnail_width=wikiutil.UnitArgument('640', float, ['px', ], defaultunit='px')):
-    """ dummy macro to initialize all default parameters for arnica. The definition is checked for wrong input.
-    @param target_page: page to read attachments from. empty pagename is current page
+    """ dummy macro to initialize all default parameters for arnica. The parameters are checked for wrong input.
+    @param target_page: page to read attachments from. empty pagename is current page.
     @param columns: number of columns for thumbnails
-    @param file_regex: regex to select images
+    @param file_regex: regex for selecting images
     @param image_for_webnail if set then the image is shown instead of the webnail
     @param show_text: default shows description
     @param show_date: default shows date from exif header if available
-    @param show_tools: default shows not icon toolbar
+    @param show_tools: default does not show the icon toolbar
     @param sort_by_name: default sorts images by name,
-    @param sort_by_date: if set sorts images by the modification time
-    @param sort_by_alias: if set sorts images by the alias name, this needs also only_items enabled
-    @param reverse_sort: if set the file list is reverse sorted
+    @param sort_by_date: if set, sorts images by the modification time
+    @param sort_by_alias: if set, sorts images by the alias name, this needs also only_items enabled
+    @param reverse_sort: if set, the file list is reverse sorted
     @param only_items: if set only images which are described in listitem are shown, e.g.
                        * [[image1.jpg|alias]]
                        * [[image2.jpg|alias]]
-    @param template_itemlist: if set an item list is shown which could be copied into the wiki page
-    @param album: if set selects album mode, only thumbnail from first image is shown, related is album title and album_image
+    @param template_itemlist: if set, an item list is shown which could be copied into the wiki page
+    @param album: if set, selects album mode, only thumbnail from first image is shown, related is album title and album_image
     @param album_title: default is pagename of the images for the album.
     @param album_image: image to show on album default is the first image 
     @param renew: if set then all selected thumbnails_* and webnails_* are removed
@@ -181,15 +181,18 @@
     """
     date = "--"
     if wikiutil.isPicture(file_name):
+        # XXX what happens if it is not a jpeg file 
         id_file = open(file_name, 'rb')
         tags = EXIF.process_file(id_file, 'DateTimeOriginal')
         id_file.close()
+        # ToDo change to "in dict"
         if tags.has_key('EXIF DateTimeOriginal'):
             date = str(tags['EXIF DateTimeOriginal'])
             date = wikiutil.escape(date.replace(':', '-', 2))
     return date
 
 def _get_files(request, pagename):
+    # ToDo AttachFile._get_files and filter result
     attach_dir = AttachFile.getAttachDir(request, pagename)
     files = []
     if os.path.isdir(attach_dir):
@@ -213,7 +216,7 @@
         self.request = request
         self.form = None
         self._ = request.getText
-
+        # ToDo add formatter 
         args = kw.get('format_args', '')
         self.init_settings = False
         # we use a macro definition to initialize the default init parameters
@@ -226,6 +229,7 @@
             self.init_settings = True
         except ValueError, err:
             msg = u"arnica: %s" % err.args[0]
+            # ToDo use formatter
             request.write(wikiutil.escape(msg))
 
         self.inner_table_style = ' style="border-style:none; margin:10px;"'
@@ -433,6 +437,7 @@
 
     def get_quotes(self):
         """  get's the qoutes from the itemlist  """
+        # ToDo make this more generic and use common libs of similiar modules
         quotes = self.raw.split('\n')
         quotes = [quote.strip() for quote in quotes]
         quotes = [quote[2:] for quote in quotes if quote.startswith('* ')]
@@ -479,11 +484,13 @@
             all_files = _get_files(self.request, self.pagename)
         if self.file_regex != u'.':
             all_files = [attfile for attfile in all_files if re.match(self.file_regex, attfile)]
+            # ToDo and not self.only_items
         if self.sort_by_name and self.only_items is False:
             all_files.sort()
         if self.sort_by_date:
             for attfile in all_files:
                 infile = os.path.join(path, attfile)
+                # ToDo take hex values 
                 ft_file = "%s%s" % (os.path.getmtime(infile), randint(0, 65535))
                 image_dict[ft_file] = attfile
             keys = image_dict.keys()
@@ -506,6 +513,7 @@
         @param thumbnail: name of thumbnail file
         @param image_type: filetype of image
         """
+        # XXX request.write always with formatter
         _ = self.request.getText
         if not Image:
             msg = _('The parser %(parser)s needs python imaging library (PIL) installed' % {'parser': parser_name})
@@ -534,6 +542,7 @@
             try:
                 im_obj = Image.open(imagef)
             except IOError:
+                # ToDo tell why
                 return
 
            # XXX later on a unit conversion method for using other units than 'px' is needed
@@ -556,7 +565,8 @@
             return
 
         if self.target_page and (not Page(self.request, self.target_page).exists() or not self.request.user.may.read(self.target_page)):
-            self.request.write(_("Page %(pagename)s does not exists or you don't have enough rights." % {"pagename": self.target_page}))
+            # ToDo look at other messages
+            self.request.write(_("Page %(pagename)s does not exist or you don't have enough rights." % {"pagename": self.target_page}))
             return
 
         if not self.select_files(formatter):
@@ -564,6 +574,7 @@
             return
 
         if self.template_itemlist:
+            # ToDo use formatter.raw_html
             self.request.write(_("""<div class="text">
             Copy the following listitems into the script.
             Replace alias with the label you want.
@@ -618,6 +629,7 @@
                     self.webimg = self.full
                 text = self.html_arrange_thumbnails(i)
             except ValueError:
+                # ToDo use """ """
                 text = _('You can''t use as album image: "%(album_image)s" because it does not exists or it is not listed in your item list!') % {"album_image": album_image, }
             result.append(''.join(text))
 
@@ -632,6 +644,7 @@
     def format(self, formatter):
         """ parser output """
         # checks if initializing of all attributes in __init__ was done
+        # ToDo use formatter
         if self.init_settings:
             self.request.write('<div class="arnica">')
             self.request.write(self.render(formatter))