# -*- coding: UTF-8 -*-

from fabric.api import local,put,env
from fabric.contrib.project import upload_project
import os

os.environ['DEVELOPMENT']='True'

env.hosts = ['atcproyectos.ugr.es']
env.user = 'mdelarosa'
env.password = '*****'
LOCAL_PATH =    '/home/flubbers/src/django/proyectos/trabajo/innodocente/'
REMOTE_PATH =   '/home/mdelarosa/'


def diag(args):
    """Crea un diagrama de clase del argumento """
    local("./manage.py graph_models "+args+" | dot -Tpng -o diag/"+args+".png")

def rundev():
    """Inicia el servidor de desarrollo"""
    local("./manage.py runserver 8080")

def runprod():
    """Inicia el servidor de produccion"""
    local("./innovacion.sh")

def syncdb():
    """Sincroniza la base de datos con el modelo"""
    local("./manage.py syncdb")

def sync(args):
    """Sincroniza la base de datos de un determinado modelo con south"""
    local("./manage.py schemamigration "+args+" --auto")
    local("./manage.py migrate "+args)

def shell():
    """Inicia la shell ipython"""
    local("./manage.py shell")

def dbshell():
    """Inicia la shell de la BD"""
    local("./manage.py dbshell")

def dbdrop():
    """Borra la BD"""
    local("rm db/innodocente.sqlite")

def sqlall(args):
    """Verifica el sql de la app"""
    local("./manage.py sqlall "+args)

def salvardatos(args):
    """Salva los datos de la BD a json"""
    local("./manage.py dumpdata --format=json --indent=4 "+args+" > "+args+"/fixtures/initial_data.json")

def cargardatos(args):
    """Carga los datos de la BD desde json"""
    local("./manage.py loaddata "+args+"/fixtures/initial_data.json")

def celery():
    """Arranca celery daemon"""
    local("./manage.py celeryd -v 2 -B  -s /tmp/celery -E -l INFO --pidfile /tmp/celery.pid")

def celeryd():
    """Arranca celery daemon en modo debug"""
    local("./manage.py celeryd -v 2 -B  -s /tmp/celery -E -l INFO --loglevel=DEBUG  --pidfile /tmp/celery.pid")

def getDoc(arg,format='pdf'):
    """
    Descarga la documentacion del modulo determinado
    """
    if format=='htmlzip':
        local('/usr/bin/wget http://media.readthedocs.org/'+format+'/'+arg+'/latest/'+arg+'.zip')
        local('mv '+arg+'.zip docs')
    else:
        local('/usr/bin/wget http://media.readthedocs.org/'+format+'/'+arg+'/latest/'+arg+'.'+format+'')
        local('mv '+arg+'.'+format+' docs')


def doc():
    """
    Descarga toda la documentacion de los modulos usados en el proyecto
    """
    getDoc('fabric')
    getDoc('south')
    getDoc('django')
    getDoc('celery')
    getDoc('django-extensions')
    getDoc('virtuanlenv','htmlzip')


def put_file(file):
    """
    Sube un fichero al servidor
    """
    put(file, '/home/mdelarosa/innosync/')

def upload():
    """
    Sube el proyecto al servidor
    """
    upload_project(local_dir=LOCAL_PATH, remote_dir=REMOTE_PATH)
