1
0
Fork 0
forked from github/pelican
Commit graph

85 commits

Author SHA1 Message Date
Simon Conseil
41970cb2c6 Refactor pelican_open using contextmanager 2013-08-04 14:47:03 +02:00
Andy Pearce
39518e15ef Allow text substitutions when generating slugs
The `slugify()` function used by Pelican is in general very good at
coming up with something both readable and URL-safe. However, there are
a few specific cases where it causes conflicts. One that I've run into
is using the strings `C++` and `C` as tags, both of which transform to
the slug `c`. This commit adds an optional `SLUG_SUBSTITUTIONS` setting
which is a list of 2-tuples of substitutions to be carried out
case-insensitively just prior to stripping out non-alphanumeric
characters. This allows cases like `C++` to be transformed to `CPP` or
similar. This can also improve the readability of slugs.
2013-07-04 12:17:21 +01:00
Justin Mayer
6f36b0a246 Keep certain files when cleaning output; fix #574
If DELETE_OUTPUT_DIRECTORY is set to True, all files and directories are
deleted from the output directory. There are, however, several reasons
one might want to retain certain files/directories and avoid their
deletion from the output directory. One such use case is version control
system data: a versioned output directory can facilitate deployment via
Heroku and/or allow the user to easily revert to a prior version of the
site without having to rely on regeneration via Pelican.

This change introduces the OUTPUT_RETENTION setting, a tuple of
filenames that will be preserved when the clean_output_dir function in
pelican.utils is run. Setting OUTPUT_RETENTION = (".hg", ".git") would,
for example, prevent the relevant VCS data from being deleted when the
output directory is cleaned.
2013-06-25 19:03:32 -07:00
Justin Mayer
dd9f55c8bb Clean up minor text formatting, spelling, grammar 2013-06-22 12:28:37 -07:00
W. Trevor King
1102143c33 utils: Use pytz instead of datetime.timezone for timezones
datetime.timezone is new in Python 3.2 [1], so pytz allows us to keep
support for Python 2.7.

[1]: http://docs.python.org/dev/library/datetime.html#datetime.timezone
2013-06-11 22:54:01 -04:00
W. Trevor King
228fc82fc9 utils: Add some ISO 8601 forms to get_date()
Support the forms listed by the W3C [1].  I also removed the
'%Y-%d-%m' form, which can be confused with the '%Y-%m-%d' ISO form.
The new ISO forms can use 'Z' to designate UTC or '[+-]HHMM' to
specify offsets from UTC.  Other time zone designators are not
supported.

The '%z' directive has only been supported since Python 3.2 [2], so if
you're running Pelican on Python 2.7, you're stuck with 'Z' for UTC.
Conveniently, we get ValueErrors for both invalid directives and
data/format missmatches, so we don't need special handling for the 2.7
case inside get_date().

[1]: http://www.w3.org/TR/NOTE-datetime
[2]: http://bugs.python.org/issue6641
2013-06-11 22:53:21 -04:00
Alexis Metaireau
dcc17bbfa4 Merge pull request #848 from Rogdham/no_overwrite
Check URL overwrite. Fixes #446.
2013-05-13 00:17:26 -07:00
Justin Mayer
30c2490f88 Merge pull request #862 from avaris/emacs-autoreload
ignore emacs lock files and exception handling for watchers
2013-04-22 20:04:24 -07:00
Deniz Turgut
be8837963a ignore emacs lock files and exception handling for watchers 2013-04-22 20:50:11 -04:00
Deniz Turgut
2790446906 adds a 'strftime' jinja fiter that uses LOCALE 2013-04-21 18:00:12 -04:00
Deniz Turgut
e86f4eedcf bugfix and tests for no settings path (no -s option) 2013-04-19 23:35:09 -04:00
Deniz Turgut
5ccbbcc7d1 add feedback to user and refactor 'autoreload' code 2013-04-19 13:35:20 -04:00
Rogdham
3aea29fb2b Fix bug with MacOS in utils.strftime
Force using C89 directives (i.e. mentioned in the Python documentation).
2013-04-17 21:24:45 +01:00
Deniz Turgut
48f7132ba8 refactored utils.strftime 2013-04-16 20:53:27 -04:00
Rogdham
73ca6a1316 Add non unique slug warnings for translations 2013-04-14 20:39:04 +01:00
Deniz Turgut
bc4bd773a0 remove unittest2 and fix various warnings in py3 2013-04-13 16:36:05 -04:00
unknown
8e254e8cd7 Fixed path_to_url when os.sep is not '/'. 2013-04-12 15:44:53 +08:00
Rogdham
eb640b09e6 Add translation metadata support.
Allows user to control which posts are the translations independently of the
DEFAULT_LANG setting.
2013-04-06 18:36:37 +01:00
Irfan Ahmad
385a18563c Fixes #630 2013-03-23 20:16:31 -07:00
W. Trevor King
ae4fc5a25e utils: Add path_to_url() and generalize get_relative_path()
The old get_relative_path() implementation assumed os.sep == '/',
which doesn't hold on MS Windows.  The new implementation uses
split_all() for a more general component count.

I added path_to_url(), because the:

  '/'.join(split_all(path))

idiom was showing up in a number of cases, and it's easier to
understand what's going on when that reads:

  path_to_url(path)

This will fix a number of places where I think paths and URLs were
conflated, and should improve MS Windows support.
2013-03-21 12:44:44 -04:00
W. Trevor King
b59da89e80 Convert '.' and '..' to the less magical os.curdir and os.pardir
While I'm cleaning up path manipulation, I might as well make things
more semantic.
2013-03-21 12:44:44 -04:00
W. Trevor King
33c60a78cd pelican/utils: Add split_all() and rework static URL generation
I think the conversion from native paths to URLs is best put off until
we are actually trying to generate the URL.  The old handling
(introduced in 2692586, Fixes #645 - Making cross-content linking
windows compatible, 2012-12-19) converted the path at StaticContent
initialization, which left you with a bogus StaticContent.src.

Once we drop the 'static' subdirectory, we will be able to drop the
`dest` and `url` parts from the StaticGenerator.generate_context()
handling, which will leave things looking a good deal cleaner than
they do now.
2013-03-10 23:21:38 -07:00
Alexis Métaireau
14cf5f014c Some doc + various enhancements 2013-03-10 22:57:08 -07:00
Joseph Reagle
92e9f3b313 bom detection and removal 2013-03-03 22:33:16 -08:00
Alexis Métaireau
519dcdbcb3 Manual pass on sources for better standards. 2013-03-03 20:12:31 -08:00
dave mankoff
21ad904abc format exceptions as strings 2013-02-10 20:21:28 -05:00
dave mankoff
5737534302 fix string formatting errors 2013-02-10 20:17:06 -05:00
dave mankoff
bc2bc7a330 git merge upstream/master 2013-01-28 21:41:42 -05:00
Rıdvan Örsvuran
0288bf1f68 added IGNORE_FILES setting for autoreload 2013-01-23 01:02:46 +01:00
Bruno Binet
6233f5a409 Merge pull request #667 from wking/page-path
Consolidate Path.filename and and StaticContent.filepath as `source_path`.
2013-01-18 07:30:03 -08:00
W. Trevor King
ec50e18a3e utils: Add deprecated_attribute decorator 2013-01-18 08:48:21 -05:00
W. Trevor King
c3c3037a1d utils: Teach mkdir_p to fail if the existing target isn't a directory
Existing symlinks to directories will still pass, because isdir()
follows symbolic links.
2013-01-18 08:32:55 -05:00
W. Trevor King
004adfa5cc content: Convert Path.filename to .source_path
Making everything consistent is a bit awkward, since this is a
commonly used attribute, but I've done my best.

Reasons for not consolidating on `filename`:

* It is often used for the "basename" (last component in the path).
  Using `source_path` makes it clear that this attribute can contain
  multiple components.

Reasons for not consolidating on `filepath`:

* It is barely used in the Pelican source, and therefore easy to
  change.
* `path` is more Pythonic.  The only place `filepath` ever show up in
  the documentation for `os`, `os.path`, and `shutil` is in the
  `os.path.relpath` documentation [1].

Reasons for not consolidating on `path`:

* The Page elements have both a source (this attribute) and a
  destination (.save_as).  To avoid confusion for developers not aware
  of this, make it painfully obvious that this attribute is for the
  source.  Explicit is better than implicit ;).

Where I was touching the line, I also updated the string formatting in
StaticGenerator.generate_output to use the forward compatible
'{}'.format() syntax.

[1]: http://docs.python.org/2/library/os.path.html#os.path.relpath
2013-01-18 07:57:35 -05:00
Dirk Makowski
71995d5e1b Port pelican to python 3.
Stays compatible with 2.x series, thanks to an unified codebase.
2013-01-11 03:20:09 +01:00
Bruno Binet
c74abe579b Don't rewrite URLs
Remove the code that was appending ../static in front of some URLs, and add a
way to do cross-content linking.
2012-12-01 21:30:50 +01:00
Simon
088c810b00 Change the way to compute relative paths to avoid the leading .././ when using
relative urls.
2012-11-29 21:50:46 +01:00
Bruno Binet
324c7c3674 Merge branch 'bstpierre-files-to-copy-missing-dir' 2012-10-25 14:25:03 +02:00
Bruno Binet
b6cc6bd2d4 remove useless try/except clause
exception will be caught and logged later in Pelican stack
2012-10-25 14:24:17 +02:00
Brendan Wholihan
bc0f7ae4f6 Amended utils copy so that a warning is produced if a source file is not found in FILES_TO_COPY whilst copying. eg if there is a typo in the file name, or the file is moved. 2012-10-20 16:35:24 +01:00
Brian St. Pierre
01293dedaa Fix #530: FILES_TO_COPY error when dest dir missing
If the destination directory specified by FILES_TO_COPY does not
exist, site generation crashes with a CRITICAL error. This creates the
destination if it does not exist.
2012-10-02 19:17:43 -04:00
Brian St. Pierre
15875b8bd1 Fix DELETE_OUTPUT_DIRECTORY crash when no output dir 2012-10-02 08:51:31 -04:00
Wladislaw Merezhko
0c2625e59d Change name of utils.open function to pelican_open and refactor this change across project. 2012-09-08 13:07:51 +03:00
tBunnyMan
a37ba369ef Implemented better "valid files not found" behavior.
Used an exception so show error state.
Used a bool flag to make sure the error is only shown once PER error.
Updated tests to check for the correct Exception raised
2012-08-23 12:44:22 -07:00
tBunnyMan
86da6d1f2e Check for value error caused by no valid files found with files_changed
This causes an infinite loop when in auto-reload
Fix #467
Fix #451
Fix #443
2012-08-23 11:05:07 -07:00
Leonard Huang
6f40e452e1 Add unidecode for translating slugs in asian languages 2012-07-16 11:36:20 +08:00
dave mankoff
3c30425276 Merge branch 'master' of git://github.com/ametaireau/pelican 2012-07-09 22:15:04 -04:00
tBunnyMan
4427424db3 Changed debugging reporting to post file deletion instead of pre file deletion per request. 2012-07-04 15:20:15 -07:00
tBunnyMan
d589450200 Change behavior of DELETE_OUTPUT_DIRECTORY to purge contents of the directory, not the directory itself.
Added Debug level logging for each deletion
Added error level logging when a delete has an exception
Built a test case for clean_output_directory in tests.utils.py
Updated `settings` in documentation to reflect new behavior
Removed the tip from the bottom of getting started since this setting should no longer break web servers pointing to the output directory.
2012-07-04 12:32:20 -07:00
dave mankoff
caa4442abb re-import cgi. properly turn utils.open into a context manager 2012-06-20 19:59:32 -04:00
Alexis Metaireau
ed8b8bc27e Also reload when the settings file changes.
Fix for #360
2012-06-10 00:24:26 +02:00