BOLD='\033[1m'
CYAN='\033[1;36m'
GREEN='\033[1;32m'
BLACK='\033[0m'

if [[ "$1" != "" ]]; then
    PROJECT_NAME=$1
	mkdir -p $1
	cd $1
else
    PROJECT_NAME=${PWD##*/}
fi

printf "import os
import sys

if __name__ == \"__main__\":
    os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"$PROJECT_NAME.settings\")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

" > manage.py

mkdir -p $PROJECT_NAME
mkdir -p $PROJECT_NAME/templates
mkdir -p $PROJECT_NAME/static/css
mkdir -p $PROJECT_NAME/static/js
mkdir -p $PROJECT_NAME/static/images

printf "<!DOCTYPE html>
<html lang=\"en\" class=\" js csstransforms csstransforms3d csstransitions\">
    <head>
        <title>{{ settings.initials }}</title>
        <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">
        <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">
        <meta name=\"viewport\" content=\"minimal-ui, width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0\"/>
        <meta name=\"apple-mobile-web-app-capable\" content=\"yes\"/>
        <meta name=\"description\" content=\"\">
        <meta name=\"keywords\" content=\"\">

        <script src=\"/static/js/jquery-3.2.1.min.js\"></script>
        <script src=\"/static/js/jquery.toast.min.js\"></script>
        <link href=\"/static/css/jquery.toast.min.css\" rel=\"stylesheet\"/>
        <link href=\"/static/css/public.css\" rel=\"stylesheet\">

    </head>

    <body class=\"sticky-nav transparent-nav\">
        <header class=\"site-header color-alt overlay-black size-full text-center\"
                style=\"background-image: url({%% if settings.background %%}/media/{{ settings.background }}{%% else %%}/static/images/background.png{%% endif %%})\">
            <div class=\"container\">
                <h1><strong>{{ settings.initials }}</strong> Online</h1>
                <h4>{{ settings.name }}</h4>
                <br><br><br>
                <a class=\"btn btn-lg btn-white btn-outline btn-round\" href=\"/admin/\"><span style=\"padding: 0 30px;\">Acessar</span></a>
            </div>
        </header>

        {%% if messages %%}
            {%% for message in messages %%}
                {{ message|toast }}
            {%% endfor %%}
        {%% endif %%}

    </body>
</html>" > $PROJECT_NAME/templates/public.html

printf "function admin__login(){
    //\$(\"#id_username\").mask(\"000.000.000-00\", {clearIfNotMatch: true});
}" > $PROJECT_NAME/static/js/$PROJECT_NAME.js

printf "" > $PROJECT_NAME/static/css/$PROJECT_NAME.css

printf "" > $PROJECT_NAME/__init__.py

printf "# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from djangoplus.ui.components import forms
from djangoplus.decorators import action

" > $PROJECT_NAME/forms.py

printf "# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import datetime
from djangoplus.db import models
from djangoplus.utils.mail import send_mail
from django.core.exceptions import ValidationError
from djangoplus.decorators import meta, action, subset, role

" > $PROJECT_NAME/models.py

printf "# -*- coding: utf-8 -*-
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '$PROJECT_NAME.settings')

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

" > $PROJECT_NAME/wsgi.py


printf "# -*- coding: utf-8 -*-
from $PROJECT_NAME.models import *
from $PROJECT_NAME.forms import *
from djangoplus.decorators.views import view, action, dashboard



" > $PROJECT_NAME/views.py

printf "# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from djangoplus.admin.models import User
from djangoplus.test import TestCase
from django.conf import settings


class AppTestCase(TestCase):

    def test_app(self):

        User.objects.create_superuser(settings.DEFAULT_SUPERUSER, None, settings.DEFAULT_PASSWORD)
        self.login(settings.DEFAULT_SUPERUSER, settings.DEFAULT_PASSWORD)
        self.logout()

" > $PROJECT_NAME/tests.py

printf "djangoplus
" > requirements.txt

printf "# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.conf.urls import url, include
from djangoplus.admin.views import public, index

urlpatterns = [
    url(r'^$', public),
    url(r'^admin/$', index),
    url(r'', include('djangoplus.admin.urls')),
]


" > $PROJECT_NAME/urls.py

printf "# -*- coding: utf-8 -*-
from __future__ import unicode_literals

def h1(value):
    return u'<h1></h1>' %% value

" > $PROJECT_NAME/formatters.py

printf "# -*- coding: utf-8 -*-
from os import sep
from djangoplus.conf.base_settings import *
from os.path import abspath, dirname, join, exists

BASE_DIR = abspath(dirname(dirname(__file__)))
PROJECT_NAME = __file__.split(sep)[-2]

STATIC_ROOT = join(BASE_DIR, 'static')
MEDIA_ROOT = join(BASE_DIR, 'media')

DROPBOX_TOKEN = '' # available at https://www.dropbox.com/developers/apps
DROPBOX_LOCALDIR = MEDIA_ROOT
DROPBOX_REMOTEDIR = '/'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': join(BASE_DIR, 'sqlite.db'),
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}

WSGI_APPLICATION = '%%s.wsgi.application' %% PROJECT_NAME

INSTALLED_APPS += (
    PROJECT_NAME,
    'djangoplus.ui.themes.default',
)

ROOT_URLCONF = '%%s.urls' %% PROJECT_NAME

if exists(join(BASE_DIR, 'logs')):
    DEBUG = False
    ALLOWED_HOSTS = ['*']

    SERVER_EMAIL = 'root@djangoplus.net'
    ADMINS = [('Admin', 'root@djangoplus.net')]

    DROPBOX_TOKEN = ''
    BACKUP_FILES = ['media', 'sqlite.db']


EXTRA_JS = ['/static/js/$PROJECT_NAME.js']
EXTRA_CSS = ['/static/css/$PROJECT_NAME.css']

DIGITAL_OCEAN_TOKEN = ''
DIGITAL_OCEAN_SERVER = ''
DIGITAL_OCEAN_DOMAIN = ''

" > $PROJECT_NAME/settings.py

printf "from djangoplus.fabric.digitalocean.fabfile import *
from djangoplus.fabric.tests.fabfile import *
" > fabfile.py

python manage.py sync
printf "
${GREEN}Congratulations\041\041\041${BLACK} The project was successfully started and configured. =)
A superuser with username ${BOLD}admin${BLACK} and password ${BOLD}senha${BLACK} was created
Type ${CYAN}cd $PROJECT_NAME${BLACK} to access project's root directory
Type ${CYAN}runserver${BLACK} to execute the application
Type ${CYAN}runtests${BLACK} to run the automatic tests
Type ${CYAN}sync${BLACK} to syncronize the models with database
"

