Re: yeararchives (2)

will kahn-greene <[email protected]> Sat, 08 May 2010 15:06:53 -0400
Newsgroups gmane.comp.web.pyblosxom.devel
Message-ID <[email protected]>
I know I just replied to this email, but I re-read this and the other
yeararchives thread and I think there are some other issues, too.

yeararchives should handle all of the following urls:

   /2003
   /2003/
   /2003/index
   /2003/index.flavour

And the variants with ?flav=flavour, too.

The below patch adds handling for /2003 and some of the ?flav=flavour
variants, too, but I think even with the below patch, we're not covering
all the bases.

Adding handling for all of the above will eliminate the need to
implement cb_staticrender_filelist since yeararchives will handle
existing archives urls that get generated as part of the static
rendering filelist creation.

The best thing to do here is to move the code that figures out whether
yeararchives should provide the filelist out of cb_filelist into its own
function and then write tests allowing us to fix it comprehensively.

If that doesn't make sense, ping me and I can look into it.

/will


On 05/05/2010 09:34 AM, Sebastian Spaeth wrote:
> On 2010-05-04, Sebastian Spaeth wrote:
>> 2a) For this to work, the yeararchive plugin would need to understand
>> URLS such as /2003.snarfed which it does not now. If the URL is not
>> ^/2003$ it won't recognize it. Here is a patch that drops of final
>> flavour bits, although I am not sure if that is the correct thing to do
>> here or if there are better ways. I have implemented that and can send
>> the patch if needed.
> 
> OK, here comes the patch that makes yeararchives understand .flav
> extensions to the URL. This patch in combination with the other patch in
> this thread make yeararchives nearly perfect for my uses.  How does this
> look?
> 
> Sebastian
> 
> commit a9113d88e49d512cba89f972bb299304d6a3c4bd
> Author: Sebastian Spaeth <[email protected]>
> Date:   Wed May 5 15:00:18 2010 +0200
> 
>     yeararchives: Make it work with .flavour appended to URL
>     
>     There were 2 problems with flavours and the yeararchives plugin:
>     
>     1)the data["flavour"] entry gets only set in the pyblosxom handler for
>       real files (actually it gets set to either the default or when
>       useing ?flav=foo but will ignore .flav extensions).
>       This should arguably be improved there but that is a
>       separate issue. If we find a flavour appendix split it off before
>       the date parsing and set the data["flavour"] accordingly.
>     
>     2)When creating the FileEntries for each article we passed
>       data["root_datadir"] as root dir and the filepath of the article as
>       filename.
>     
>       However for data URLS the pyblosxom handler sets:
>       data["root_datadir"] = os.path.join(config["datadir"], pi_bl)
>       which leads to wrong root components for our filenames.
>     
>       E.g. the yeararchives URL:
>       http://sspaeth.de/cgi-bin/pyblosxom.cgi/2010.html
>     
>       leads to the root_datadir of:
>     
>       /home/spaetz/sspaeth.de/public/data/2010.html
>     
>       which we pass a root dir to posts such as:
>     
>      /home/spaetz/sspaeth.de/public/data/Private/Oliver-in-der-Notaufnahme.rst.
>     
>      This is not the intended combination as the root is supposed to be
>      identical to the start of the full filename. What we really want to
>      pass here is our configured datadir. So this is what this patch does.
>     
>     With this patch URLS such as
>      http://sspaeth.de/cgi-bin/pyblosxom.cgi/2010.html
>      http://sspaeth.de/cgi-bin/pyblosxom.cgi/2010.snarfed
>      http://sspaeth.de/cgi-bin/pyblosxom.cgi/2010?flav=html
>     
>     work with the corresponding templates.
>     
>     Signed-off-by: Sebastian Spaeth <[email protected]>
> 
> ----------------------------------------------------------------------------------------------------
> diff --git a/plugins/archives/yeararchives.py b/plugins/archives/yeararchives.py
> index 60b9065..5390d62 100644
> --- a/plugins/archives/yeararchives.py
> +++ b/plugins/archives/yeararchives.py
> @@ -207,6 +207,21 @@ def cb_filelist(args):
>      if not year:
>          return
>  
> +    # Use current (or default) flavour for permalinks
> +    # note: for date URLs, data["flavor"] is not set in the pyblosxom handler
> +    # if it is passed as an extension.
> +    # If we find a valid date URL, we will therefore set data["flavour"] accordingly
> +    # a few lines down.
> +    try:
> +        flavour = data["flavour"]
> +    except KeyError:
> +        flavour = config.get("default_flavour", "html")
> +
> +
> +    # if a flavor is appended drop it for the date calculation
> +    # and save it, so we can set the rendering flavour.
> +    if os.path.basename(year).find('.') != -1:
> +        year, flavour = year.rsplit('.',1)
>      if year.startswith("/"):
>          year = year[1:]
>      if year.endswith("/"):
> @@ -214,6 +229,8 @@ def cb_filelist(args):
>      if not year.isdigit() or not len(year) == 4:
>          return
>  
> +    data["flavour"] = flavour
> +    
>      data[INIT_KEY] = 1
>  
>      # get all the entries
> @@ -227,12 +244,6 @@ def cb_filelist(args):
>      items.sort()
>      items.reverse()
>      
> -    # Use current (or default) flavour for permalinks
> -    try:
> -        flavour = data["flavour"]
> -    except KeyError:
> -        flavour = config.get("default_flavour", "html")
> -
>      l = ("(%(path)s) <a href=\"" + baseurl +
>           "/%(file_path)s." + flavour + "\">%(title)s</a><br>")
>      e = "<tr>\n<td valign=\"top\" align=\"left\">%s</td>\n<td>%s</td></tr>\n"
> @@ -262,7 +273,7 @@ def cb_filelist(args):
>              d = mem[1]
>              day = []
>          entry = entries.fileentry.FileEntry(
> -            request, mem[3], data['root_datadir'])
> +            request, mem[3], config['datadir'])
>          day.append(l % entry)
>  
>      if day:
> 
> 
> 
> ------------------------------------------------------------------------------
> 
> 
> 
> _______________________________________________
> Pyblosxom-devel mailing list
> Pyblosxom-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/pyblosxom-devel

------------------------------------------------------------------------------