Re: yeararchives (2)

[email protected] Wed, 12 May 2010 18:48:59 -0700
Newsgroups gmane.comp.web.pyblosxom.devel
Message-ID <[email protected]>
> I think this looks good.  Feel free to push it.

Cool. Pushed

Sebastian

> 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
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Pyblosxom-devel mailing list
> Pyblosxom-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
> https://lists.sourceforge.net/lists/listinfo/pyblosxom-devel
>



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