Re: yeararchives (2)
"Sebastian Spaeth" <[email protected]> Wed, 05 May 2010 15:34:34 +0200
| Newsgroups | gmane.comp.web.pyblosxom.devel |
|---|---|
| Message-ID | <[email protected]> |
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
signature.asc
(application/pgp-signature, 197 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEARECAAYFAkvhc+oACgkQVYX1jMgnoGKepQCgjzXn/QHRafQgwgR4wShXoouH w8gAn0CT4BJOIEbqqjycombtDyczRUu5 =y0Pb -----END PGP SIGNATURE-----