diff scripts/list_plugins/list_plugins.py @ 45:2ff373d2571a

add decentralisation schemas + script for listing the plugins
author souliane <souliane@mailoo.org>
date Thu, 28 May 2015 00:33:02 +0200
parents
children cea50c3e94f0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/list_plugins/list_plugins.py	Thu May 28 00:33:02 2015 +0200
@@ -0,0 +1,109 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+"""
+SàT website: Salut à Toi's presentation website
+Copyright (C) 2015  Jérôme Poisson (goffi@goffi.org)
+Copyright (C) 2015  Adrien Cossa (souliane@mailoo.org)
+
+This file is part of SàT website.
+
+SàT website is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Foobar is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
+"""
+
+
+from sat import plugins
+import pkgutil
+
+WEBSITE = "/home/souliane/workspace/sat_website"
+
+HEADER = u"""
+{% comment %}
+SàT website: Salut à Toi's presentation website
+Copyright (C) 2012  Jérôme Poisson (goffi@goffi.org)
+Copyright (C) 2015  Adrien Cossa (souliane@mailoo.org)
+
+This file is part of SàT website.
+
+SàT website is free software: you can redistribute it and/or modify
+it under the terms of the GNU Affero General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Foobar is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU Affero General Public License for more details.
+
+You should have received a copy of the GNU Affero General Public License
+along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
+
+
+NOTE: this file has been automatically generated by the following script:
+http://repos.goffi.org/sat_docs/file/tip/scripts/list_plugins/list_plugins.py
+
+Please avoid manual modification, try to update the script instead! Before /
+after a regeneration, don't forget to save / merge the manual modifications.
+
+{% endcomment %}
+{% load i18n %}
+"""
+
+import urllib2
+import lxml.html
+
+# use it to retrieve the XEP name from the official list
+XEPS_URL = "http://xmpp.org/xmpp-protocols/xmpp-extensions/"
+
+def get_infos():
+    result = {}
+    doc = lxml.html.parse(XEPS_URL)
+
+    for loader, module_name, is_pkg in  pkgutil.walk_packages(plugins.__path__):
+        module = loader.find_module(module_name).load_module(module_name)
+        infos = getattr(module, 'PLUGIN_INFO')
+
+        if infos['type'] == 'XEP':
+            name = infos['import_name']
+            url = "http://xmpp.org/extensions/%s.html" % name.lower()
+            key = "xep"
+            # use the XEP name as description
+            desc = doc.xpath("//tr[@id='%s']/td" % name.lower().replace("-", ""))[1].text
+        else:
+            name = '{% trans "' + infos['name'] + '" %}'
+            url = None
+            key = "exp"
+            desc = infos['description']
+            if desc.startswith('Implementation of '):
+                desc = desc[18:]
+        desc = '{% trans "' + desc.replace('"', '\\"') + '" %}'
+        result.setdefault(key, []).append((name, url, desc))
+
+    return result
+
+
+def print_infos(infos, file):
+    with open(file, 'w',) as f:
+        f.write(HEADER.encode("utf-8"))
+        for name, url, desc in infos:
+            name = ('<a href="%s" target="#">%s</a>' % (url, name)) if url else name
+            entry = u"""
+<div class="row">
+  <div class="col-md-2">%s</div>
+  <div class="col-md-7 feature">%s</div>
+</div>""" % (name, desc)
+            f.write(entry.encode("utf-8"))
+
+infos = get_infos()
+for type_ in ("xep", "exp"):
+    print_infos(infos[type_], "%s/templates/sat_website/specifications_%s.html" % (WEBSITE, type_))