aboutsummaryrefslogtreecommitdiffstats
path: root/nikola/plugins/task_render_posts.py
diff options
context:
space:
mode:
authorLibravatarAgustin Henze <tin@sluc.org.ar>2013-11-20 16:58:53 -0300
committerLibravatarAgustin Henze <tin@sluc.org.ar>2013-11-20 16:58:53 -0300
commited33084d9bea84671449058af94a6e80dee714ba (patch)
tree8eee6e23cf8cac17bd31117a4839d3fd01a12249 /nikola/plugins/task_render_posts.py
parent6fb711e4ada5214f5923a81106176a257d1550a3 (diff)
parentca94afc07df55cb7fc6fe3b4f3011877b7881195 (diff)
Merge tag 'upstream/6.2.1'
Upstream version 6.2.1
Diffstat (limited to 'nikola/plugins/task_render_posts.py')
-rw-r--r--nikola/plugins/task_render_posts.py140
1 files changed, 0 insertions, 140 deletions
diff --git a/nikola/plugins/task_render_posts.py b/nikola/plugins/task_render_posts.py
deleted file mode 100644
index 4be68bf..0000000
--- a/nikola/plugins/task_render_posts.py
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright (c) 2012 Roberto Alsina y otros.
-
-# Permission is hereby granted, free of charge, to any
-# person obtaining a copy of this software and associated
-# documentation files (the "Software"), to deal in the
-# Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish,
-# distribute, sublicense, and/or sell copies of the
-# Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice
-# shall be included in all copies or substantial portions of
-# the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-# KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
-# OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
-# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-from copy import copy
-import codecs
-import string
-
-from nikola.plugin_categories import Task
-from nikola import utils, rc4
-
-
-def wrap_encrypt(path, password):
- """Wrap a post with encryption."""
- with codecs.open(path, 'rb+', 'utf8') as inf:
- data = inf.read() + "<!--tail-->"
- data = CRYPT.substitute(data=rc4.rc4(password, data))
- with codecs.open(path, 'wb+', 'utf8') as outf:
- outf.write(data)
-
-
-class RenderPosts(Task):
- """Build HTML fragments from metadata and text."""
-
- name = "render_posts"
-
- def gen_tasks(self):
- """Build HTML fragments from metadata and text."""
- self.site.scan_posts()
- kw = {
- "translations": self.site.config["TRANSLATIONS"],
- "timeline": self.site.timeline,
- "default_lang": self.site.config["DEFAULT_LANG"],
- "hide_untranslated_posts": self.site.config['HIDE_UNTRANSLATED_POSTS'],
- }
-
- flag = False
- for lang in kw["translations"]:
- deps_dict = copy(kw)
- deps_dict.pop('timeline')
- for post in kw['timeline']:
- source = post.source_path
- dest = post.base_path
- if not post.is_translation_available(lang) and kw["hide_untranslated_posts"]:
- continue
- else:
- source = post.translated_source_path(lang)
- if lang != post.default_lang:
- dest = dest + '.' + lang
- flag = True
- task = {
- 'basename': self.name,
- 'name': dest,
- 'file_dep': post.fragment_deps(lang),
- 'targets': [dest],
- 'actions': [(self.site.get_compiler(post.source_path),
- [source, dest])],
- 'clean': True,
- 'uptodate': [utils.config_changed(deps_dict)],
- }
- if post.meta('password'):
- task['actions'].append((wrap_encrypt, (dest, post.meta('password'))))
- yield task
- if flag is False: # Return a dummy task
- yield {
- 'basename': self.name,
- 'name': 'None',
- 'uptodate': [True],
- 'actions': [],
- }
-
-
-CRYPT = string.Template("""\
-<script>
-function rc4(key, str) {
- var s = [], j = 0, x, res = '';
- for (var i = 0; i < 256; i++) {
- s[i] = i;
- }
- for (i = 0; i < 256; i++) {
- j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;
- x = s[i];
- s[i] = s[j];
- s[j] = x;
- }
- i = 0;
- j = 0;
- for (var y = 0; y < str.length; y++) {
- i = (i + 1) % 256;
- j = (j + s[i]) % 256;
- x = s[i];
- s[i] = s[j];
- s[j] = x;
- res += String.fromCharCode(str.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);
- }
- return res;
-}
-function decrypt() {
- key = $$("#key").val();
- crypt_div = $$("#encr")
- crypted = crypt_div.html();
- decrypted = rc4(key, window.atob(crypted));
- if (decrypted.substr(decrypted.length - 11) == "<!--tail-->"){
- crypt_div.html(decrypted);
- $$("#pwform").hide();
- crypt_div.show();
- } else { alert("Wrong password"); };
-}
-</script>
-
-<div id="encr" style="display: none;">${data}</div>
-<div id="pwform">
-<form onsubmit="javascript:decrypt(); return false;" class="form-inline">
-<fieldset>
-<legend>This post is password-protected.</legend>
-<input type="password" id="key" placeholder="Type password here">
-<button type="submit" class="btn">Show Content</button>
-</fieldset>
-</form>
-</div>""")