Mercurial > sat_docs
annotate 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 |
rev | line source |
---|---|
45
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
1 #!/usr/bin/python |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
2 # -*- coding: utf-8 -*- |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
3 """ |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
4 SàT website: Salut à Toi's presentation website |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
5 Copyright (C) 2015 Jérôme Poisson (goffi@goffi.org) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
6 Copyright (C) 2015 Adrien Cossa (souliane@mailoo.org) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
7 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
8 This file is part of SàT website. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
9 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
10 SàT website is free software: you can redistribute it and/or modify |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
11 it under the terms of the GNU Affero General Public License as published by |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
12 the Free Software Foundation, either version 3 of the License, or |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
13 (at your option) any later version. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
14 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
15 Foobar is distributed in the hope that it will be useful, |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
16 but WITHOUT ANY WARRANTY; without even the implied warranty of |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
18 GNU Affero General Public License for more details. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
19 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
20 You should have received a copy of the GNU Affero General Public License |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
21 along with Foobar. If not, see <http://www.gnu.org/licenses/>. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
22 """ |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
23 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
24 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
25 from sat import plugins |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
26 import pkgutil |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
27 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
28 WEBSITE = "/home/souliane/workspace/sat_website" |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
29 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
30 HEADER = u""" |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
31 {% comment %} |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
32 SàT website: Salut à Toi's presentation website |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
33 Copyright (C) 2012 Jérôme Poisson (goffi@goffi.org) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
34 Copyright (C) 2015 Adrien Cossa (souliane@mailoo.org) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
35 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
36 This file is part of SàT website. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
37 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
38 SàT website is free software: you can redistribute it and/or modify |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
39 it under the terms of the GNU Affero General Public License as published by |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
40 the Free Software Foundation, either version 3 of the License, or |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
41 (at your option) any later version. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
42 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
43 Foobar is distributed in the hope that it will be useful, |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
44 but WITHOUT ANY WARRANTY; without even the implied warranty of |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
45 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
46 GNU Affero General Public License for more details. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
47 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
48 You should have received a copy of the GNU Affero General Public License |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
49 along with Foobar. If not, see <http://www.gnu.org/licenses/>. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
50 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
51 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
52 NOTE: this file has been automatically generated by the following script: |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
53 http://repos.goffi.org/sat_docs/file/tip/scripts/list_plugins/list_plugins.py |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
54 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
55 Please avoid manual modification, try to update the script instead! Before / |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
56 after a regeneration, don't forget to save / merge the manual modifications. |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
57 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
58 {% endcomment %} |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
59 {% load i18n %} |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
60 """ |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
61 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
62 import urllib2 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
63 import lxml.html |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
64 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
65 # use it to retrieve the XEP name from the official list |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
66 XEPS_URL = "http://xmpp.org/xmpp-protocols/xmpp-extensions/" |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
67 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
68 def get_infos(): |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
69 result = {} |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
70 doc = lxml.html.parse(XEPS_URL) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
71 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
72 for loader, module_name, is_pkg in pkgutil.walk_packages(plugins.__path__): |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
73 module = loader.find_module(module_name).load_module(module_name) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
74 infos = getattr(module, 'PLUGIN_INFO') |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
75 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
76 if infos['type'] == 'XEP': |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
77 name = infos['import_name'] |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
78 url = "http://xmpp.org/extensions/%s.html" % name.lower() |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
79 key = "xep" |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
80 # use the XEP name as description |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
81 desc = doc.xpath("//tr[@id='%s']/td" % name.lower().replace("-", ""))[1].text |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
82 else: |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
83 name = '{% trans "' + infos['name'] + '" %}' |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
84 url = None |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
85 key = "exp" |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
86 desc = infos['description'] |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
87 if desc.startswith('Implementation of '): |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
88 desc = desc[18:] |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
89 desc = '{% trans "' + desc.replace('"', '\\"') + '" %}' |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
90 result.setdefault(key, []).append((name, url, desc)) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
91 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
92 return result |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
93 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
94 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
95 def print_infos(infos, file): |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
96 with open(file, 'w',) as f: |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
97 f.write(HEADER.encode("utf-8")) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
98 for name, url, desc in infos: |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
99 name = ('<a href="%s" target="#">%s</a>' % (url, name)) if url else name |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
100 entry = u""" |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
101 <div class="row"> |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
102 <div class="col-md-2">%s</div> |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
103 <div class="col-md-7 feature">%s</div> |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
104 </div>""" % (name, desc) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
105 f.write(entry.encode("utf-8")) |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
106 |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
107 infos = get_infos() |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
108 for type_ in ("xep", "exp"): |
2ff373d2571a
add decentralisation schemas + script for listing the plugins
souliane <souliane@mailoo.org>
parents:
diff
changeset
|
109 print_infos(infos[type_], "%s/templates/sat_website/specifications_%s.html" % (WEBSITE, type_)) |