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 > ------------------------------------------------------------------------------