Linkode is the useful pastebin!
It's a kind of "short living collaboration space", a "dynamic pastebin".
It's live right now in http://linkode.org/, give it a try!
Some awesome details:
Try it here.
Note this bot has a project on its own, check it!
Code and issues is in GitHub:
https://github.com/facundobatista/kilink
We also have a mailing list:
http://listas.python.org.ar/mailman/listinfo/kilink
And you can also get help by IRC, in Freenode: #linkode
Get the API details from the HTML file::
kilink/templates/_tools.html
In a future this will be in a Doc file (source of that HTML).
Just using fades:
./run
Or creating the virtualenv by hand:
virtualenv kilink
cd kilink
git clone https://github.com/facundobatista/kilink.git
source bin/activate
pip install -r requirements.txt
PYTHONPATH=. python kilink/main.py
Or if you prefer to use Docker
docker build -t kilink .
docker run -it -p 5000:5000 kilink
To run the tests: in the virtualenv, do:
python -m pytest
When including translatable text in the code, make sure to always wrap it in the
gettext
function. Within templates it's already available and bound to _
,
e.g.:
<span>{{ _("Text to translate") }}</span>
In Python files you need to import it from Flask, e.g.:
from flask.ext.base import gettext as _
def views():
flash( _("Text to translate") )
Later, to produce language catalogs:
Extract the translation texts:
cd kilink
pybabel extract -F babel.cfg -o messages.pot translations
Generate an individual language message catalog. E.g. for Italian (it) you would do:
pybabel init -i messages.pot -d translations -l it
That should leave a messages.po
file nested under the directory specified
by the given -d
argument (e.g.: translations/it/LC_MESSAGES/messages.po
);
Open it in your favorite text editor and translate the collected messages;
Repeat steps 1-3 for each target language;
When finished, compile with:
pybabel compile -d translations
Finally, add the newly available languages to the config.py
file, as
follows:
LANGUAGES = {
...
'it': 'Italian',
...
}
You'll need to follow again these steps each time you add or change some text in the code. See the Flask-Babel Tutorial for more on this subject.
Documentation based in http://flask.pocoo.org/docs/deploying/mod_wsgi/
We use a virtualenv to deploy the project and apache virtual host on Ubuntu 13.04, This configuration es very general, I guess that works in almost all linux OS
Definitions:
Create virtualenv:
cd /var/linkode_home
virtualenv linkode_virtualenv
cd linkode_virtualenv
source bin/activate
Clone repository:
cd /var/linkode_home/
git clone https://github.com/facundobatista/kilink.git linkode_app
Install the requirements:
cd linkode_app
pip install -r requirements.txt
The WSGI configuration file is already in the project, ready to use; for develop or debugging you can add to it:
application.debug = True
# Needs install paste via pip "pip install paste"
# For More information:
# http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Browser_Based_Debugger
from paste.evalexception.middleware import EvalException
application = EvalException(application)
Create a virtual host configuration file in /etc/apache2/sites-enabled/ with the name that you want, in this case "linkode"
sudo vi /etc/apache2/sites-enabled/linkode
And paste this:
<VirtualHost *>
ServerName linkode.mydomain
WSGIDaemonProcess linkode user=www-data group=www-data threads=5
WSGIScriptAlias / /var/linkode_home/linkode.wsgi
WSGIScriptReloading On
<Directory /var/linkode_home/linkode_app/kilink/>
WSGIProcessGroup linkode
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
AddDefaultCharset utf-8
ServerSignature On
LogLevel info
ErrorLog /var/log/apache2/linkode-error.log
CustomLog /var/log/apache2/linkode-access.log combined
</VirtualHost>
Restart Apache and enjoy!