Overview

HTTPS SSH
Creme is a free/open-source Customer Relationship Management software developed by Hybird (www.hybird.org).

It is designed with an entities/relationships architecture, and is highly configurable, which allows
to adapt Creme to many different work-flows. It provides apps (ie: modules) to manage:
    - Contacts & organisations.
    - Documents & folders.
    - Activities (meetings, phone calls, tasks...) with a calendar.
    - Products & services.
    - Invoices, quotes, sales orders & credit notes.
    - Opportunities.
    - Commercial actions.
    - Email campaigns.
    - Reports.
    - Tickets.
    - Alerts, todos & memos.
    - Geolocation.
    - ...

Creme has powerful tools to filter, search or import data ; it can also be used a CRM framework
you can use to code your own CRM.

Creme is coded in Python, and uses the Django web framework (http://www.djangoproject.com/) and
the JQuery javascript library (http://jquery.com/).

You can find more information on Creme on its official web site: http://cremecrm.com/


RECOMMENDATIONS:
It's recommended to use a database engine which supports transactions.
You probably should use 'virtualenv'.


DEPENDENCIES:
(exact versions are indicated in the file 'creme/requirements.txt')
    - Core
        - Python 3.5+
        - Django 1.11
        - redis 2.10 (ie: the python library, & so you'll need the related server too, of course)
        - python-dateutil 2.7
        - bleach 2.1
        - Pillow 5
        - django-formtools 2.1
        - Java >= 1.4 (only needed to build the compressed version of CSS and JavaScript files at installation time)

    - Optional
        - creme.creme_core:
            - xlrd (to import contacts and organisations from xls files)
            - xlwt (to export contacts and organisations as xls files)

        - creme.billing:
            - pdflatex (if you want PDF export)

        - creme.graphs:
            - pygraphviz (seems unavailable on windows)

        - creme.crudity:
            - lcab (if you want Infopath forms exports and your server doesn't run on Windows)

        - creme.activesync (deprecated):
            - restkit 4.2
            - pycrypto 2.6

Installation with 'pip':
    - If you use MySQL, you can use the file 'creme/requirements.txt' to install all the libraries
      needed by a classical installation with the command (better in a virtualenv):
        >> pip install -r creme/requirements.txt
    - If you want a customised installation, you'll have to install the package yourself,
      depending on which apps or SQL server you want. For PostGreSQL, install the package 'psycopg2':
        >> pip install psycopg2
    - Notice some of these python packages need system libraries to be installed.
      For example, here a list of Debian/Ubuntu packages you'll have to install before:
        - python-dev
        - mysql_config & libmysqlclient-dev (or libpq5 if you want to use PostGreSQL)
        - redis-server
        - libxslt1-dev
        - default-jre
        - libjpeg-dev
        - graphviz & graphviz-dev (if you want the optional app 'graphs')


INSTALL:

Global remarks:
    - You should know how to install/deploy a Django application.
    - Upgrade note: if you already have a Creme installation, upgrade the version one by one
      (eg: do not try to upgrade from 1.1 to 1.3, upgrade to 1.2 and then 1.3).

Database configuration:
For a new install, you have to create a new database & a new DB user (who is allowed to create/drop tables, indices...).

Settings:
See the file creme/settings.py and set your parameters in a new file called 'creme/local_settings.py'.
Here the minimal information you must fill :

    # -*- coding: utf-8 -*-

    DATABASES = {
        'default': {
            'ENGINE':   'django.db.backends.mysql',  # NB: 'django.db.backends.postgresql' for PGSQL
            'NAME':     'name_of_your_db',           # <== TO BE REPLACED
            'USER':     'name_of_your_user',         # <== TO BE REPLACED
            'PASSWORD': 'password_of_the_user',      # <== TO BE REPLACED
            'HOST':     '',                          # Leave empty for localhost.
            'PORT':     '',                          # Leave empty for default port.
        },

    SECRET_KEY = ''  # <== TO BE REPLACED (see below).
    LANGUAGE_CODE = 'en'  # Also available : 'fr'
    TIME_ZONE = 'Europe/Paris'  # See http://en.wikipedia.org/wiki/List_of_tz_zones_by_name

To generate the value of SECRET_KEY, run the following command in the root directory & copy its result:
    >> python manage.py build_secret_key

You can chose precisely the creme apps you want, by copying INSTALLED_CREME_APPS & commenting the unwanted apps ;
beware to only comment app in the 'optional' section, & respect the dependencies which are indicated.

The information from the section "EMAILS [internal]" of 'settings.py' should be overridden in
your 'local_settings.py' if you want that your users receive e-mails from Creme (ToDos, Alerts...).
But these information can be filled/changed later.

Filling the DB tables:
Run the following commands in the root directory:
    >> python manage.py migrate
    >> python manage.py generatemedia
    >> python manage.py creme_populate

If you are upgrading from Creme 1.8, clean all existing sessions, for example like this:
    >> python manage.py shell
    > from django.contrib.sessions.models import Session
    > Session.objects.all().delete()

Note for MySQL users: you should load the time zone tables.
 - On Unix servers, it can be done with:
       >> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
 - For Windows environment, see https://stackoverflow.com/questions/14454304/convert-tz-returns-null


LAUNCH:

To run the development server, you just have to run this command:
    >> python manage.py runserver
You can then go to http://localhost:8000 & log in with root/root.

For a production deployment (Apache, Nginx...), you should read https://docs.djangoproject.com/en/1.8/howto/deployment/

In order to use the job system (eg: sending emails campaign, CSV import...), run the job manager too:
    >> python manage.py creme_job_manager