============
Sistema ANSP
============

Sistema de gerenciamento de projetos Fapesp desenvolvido pelo NARA/ANSP.
É um conjunto de aplicações Django para gerenciar concessões e gastos de
um projeto Fapesp.

Instalação
..........

1. Instale os pacotes de desenvolvimento do ``python``, ``xml``, ``ffi``, ``xslt``, ``zlib`` e ``yaml``, o pacote de
fontes ``liberation`` e o ``pip`` para instalar pacotes python. No caso do Ubuntu, seria::

    apt-get install libffi-dev libpython-dev libxml2-dev libxslt1-dev zlib1g-dev libyaml-dev fonts-liberation python-pip

2. Instale o ``virtualenv``::

    pip install virtualenv

3. Crie o ambiente virtual::

    virtualenv <nome do ambiente>

4. Entre no diretório do ambiente virtual e ative-o::

    cd <nome do ambiente>
    source bin/activate

5. Instale o ``django-arquea``::

    pip install django-arquea

Configuração
............

1. Crie um novo projeto Django::

    django-admin startproject <nome do projeto>


2. Adicione a seguinte linha no final seu ``settings.py``::

    cd <nome do projeto>
    vi <nome do projeto>/settings.py
    INSTALLED_APPS += ('configuracao',)

3. Crie as configurações padrão::

    python manage.py criarsistema <nome do projeto>

4. Execute
   ::

    python manage.py migrate

   para criar a base de dados inicial e
   ::

    python manage.py loaddata initial_data.yaml

   para carregar os dados iniciais.

5. Execute
   ::

    python manage.py createsuperuser

   para criar o super usuário inicial.

6. Execute
   ::

    python manage.py runserver

   e acesse http://localhost:8000 para verificar se a aplicação está rodando.


Colocando em produção
.....................

1. Estando tudo ok nas etapas anteriores, é hora de colocar em produção. Por padrão, é criada
uma base de dados SQLite, que é ótima para testes, mas não é muito indicada para um ambiente de 
produção. Recomendamos utilizar o PostgreSQL ou o MySQL. Mostraremos como instalar e configurar 
o PostgreSQL no Ubuntu.

    a. Instale a biblioteca de desenvolvimento do PostgreSQL::

        apt-get install libpq-dev

    b. Instale o servidor do PostgreSQL::

        apt-get install postgresql

    c. Crie a base de dados::

        sudo su - postgres
        createdb <base>
        createuser <user>
        psql <base>
        grant all on database <base> to <user>;
        alter user <user> password '<pass>';
        quit
        CTRL+D

    d. Repita o passo 4 de "Instalação" e instale o ``psycopg``::

        pip install psycopg2

    e. Edite o arquivo ``settings.py`` e altere as informações do banco de dados::

        cd <nome do projeto>
        vi <nome do projeto>/settings.py
        
        DATABASES = {
	    'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'HOST': 'localhost', # se instalar o servidor em outra máquina, ip ou hostname dele
            'NAME': '<base>',
            'USER': '<user>',
            'PASSWORD': '<pass>'
            } 
        }

    f. Execute os passos 4 e 5 de "Configuração".

    g. Execute o passo 6 de "Configuração" para verificar se com o PostgreSQL tudo continua funcionando.

2. Para colocarmos em produção, precisamos de um webserver. Abaixo, é utilizado o Apache + WSGI, mas
pode ser feito de outras maneiras, como descrito em https://docs.djangoproject.com/en/1.7/howto/deployment/ .

    a. Instale o ``apache2``, o ``mod_wsgi``;
    b. Habilite esses módulos;
    c. Configure o apache. Considerando que o sistema rodará sozinho na máquina, a configuração seria apenas
       modificar o arquivo ``/etc/apache2/sites-available/000-default``::

        WSGIScriptAlias / /path/to/your/project/project/wsgi.py
        WSGIPythonPath /path/to/your/project/project:/virtualenv/dir/lib/python2.7/site-packages
        <VirtualHost *:80>

                WSGIProcessGroup %{GLOBAL}
                WSGIApplicationGroup %{GLOBAL}

                Alias /files/   /var/www/files/
                Alias /static/  /var/www/static/

                <Directory /var/www/static>
                   Require all granted
                </Directory>

                <Directory /var/www/files>
                   Require all granted
                </Directory>

                <Directory /path/to/your/project/project>
                   <Files wsgi.py>
                      Require all granted
                   </Files>
                </Directory>

                <Location "/files">
                   AuthType Basic
                   AuthName "Sistema"
                   Require valid-user
                   AuthBasicProvider wsgi
                   WSGIAuthUserScript /path/to/your/project/project/wsgi.py
                </Location>

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined
        </VirtualHost>

       trocando os diretórios e arquivos informados pelos da sua instalação

    d. Execute, no diretório do projeto::

        python manage.py collectstatic

