nuancier
========

.. image:: /nuancier/raw/master/f/http://shieldkins.elrod.me/fedora/nuancier

:Author: Pierre-Yves Chibon <pingou@pingoured.fr>


Nuancier is a web-based voting application for the supplementary
wallpapers of Fedora.


Get this project:
-----------------
On github: https://github.com/fedora-infra/nuancier

Documentation: http://nuancier.rtfd.org


Dependencies:
-------------
.. _python: http://www.python.org
.. _Flask: http://flask.pocoo.org/
.. _python-flask: http://flask.pocoo.org/
.. _python-flask-wtf: http://packages.python.org/Flask-WTF/
.. _python-wtforms: http://wtforms.simplecodes.com/docs/1.0.1/
.. _SQLAlchemy: http://www.sqlalchemy.org/
.. _python-sqlalchemy: http://www.sqlalchemy.org/
.. _Pillow: https://pypi.python.org/pypi/Pillow
.. _python-pillow: https://pypi.python.org/pypi/Pillow
.. _dogpile.cache: https://pypi.python.org/pypi/dogpile.cache

This project is a `Flask`_ application. The calendars and meetings are
stored into a relational database using `SQLAlchemy`_ as Object Relational
Mapper (ORM).
The application relies on `Pillow`_ to generate thumbnails of the pictures in
order to increase the loading speed of the pages.


The dependency list is therefore:

- `python`_ (2.5 minimum)
- `python-flask`_
- `python-flask-wtf`_
- `python-wtforms`_
- `python-sqlalchemy`_
- `python-pillow`_
- `dogpile.cache`_


Running a development instance:
-------------------------------

You can either set up a development environment manually, or using Ansible
with Vagrant.

Vagrant
^^^^^^^

The best way to set up a development enviroment is to use `Vagrant <https://vagrantup.com/>`_.
Vagrant provisions a new virtual machine and then runs the Ansible playbook on it automatically.
To get started, install Vagrant::

    $ sudo dnf install vagrant libvirt vagrant-libvirt vagrant-sshfs ansible

Next, clone the repository and copy the example Vagrantfile from ``Vagrantfile.example``::

    $ git clone https://github.com/fedora-infra/nuancier.git
    $ cd nuancier
    $ cp Vagrantfile.example Vagrantfile  # Edit Vagrantfile to your heart's content
    $ vagrant up
    $ vagrant reload
    $ vagrant ssh

All done! The VM contains all the required dependencies pre-installed.


Manual
^^^^^^

Clone the source::

 git clone https://github.com/fedora-infra/nuancier.git


Create the database scheme::

 python createdb.py


Run the server::

 python runserver.py

You should be able to access the server at http://localhost:5000

.. note:: To tweak the configuration, you may either change
   ``default_config.py`` in the nuancier module, or copy the file
   ``utility/nuancier.cfg.sample`` into ``nuancier.cfg`` and run the
   application using::

     NUANCIER_CONFIG=nuancier.cfg python runserver.py

Testing:
--------

This project contains unit-tests allowing you to check if your server
has all the dependencies correctly set.

To run them::

 ./runtests.sh

.. note:: To stop the test at the first error or failure you can try:

   ::

    ./runtests.sh -x


License:
--------

This project is licensed GPLv2+.