#!/usr/bin/env bash

BOLD='\033[1m'
CYAN='\033[1;36m'
GREEN='\033[1;32m'
BLACK='\033[0m'
SECRET_KEY=$(mktemp XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)

LANGUAGE_CODE="pt-br"

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

if [ ! -z "$2" ]; then
    LANGUAGE_CODE=$2
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 "*˜
*.pyc
.svn
.DS_Store
.DS_Store?
._*
.idea/
djangoplus/.idea/*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
.project
.pydevproject
.settings/*
sqlite.db
mail/*
media/*
dist/
djangoplus.egg-info/
*/dist/
*/*egg-info/
geckodriver.log
videos/*
build
" > $PROJECT_NAME/.gitignore

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 djangoplus.ui.components import forms
from djangoplus.decorators import action

" > $PROJECT_NAME/forms.py

printf "# -*- coding: utf-8 -*-
import datetime
from djangoplus.db import models
from djangoplus.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 django.conf import settings
from djangoplus.test import TestCase
from djangoplus.admin.models import User
from djangoplus.test.decorators import testcase


class AppTestCase(TestCase):

    def test(self):
        User.objects.create_superuser(settings.DEFAULT_SUPERUSER, None, settings.DEFAULT_PASSWORD)
        self.execute_flow()

    @testcase('Testcase')
    def first_testcase(self):
        pass
" > $PROJECT_NAME/tests.py

printf "djangoplus
" > requirements.txt

printf "# -*- coding: utf-8 -*-
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 djangoplus.decorators.formatters import formatter


@formatter()
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

SECRET_KEY = '$SECRET_KEY'

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 = ''

LANGUAGE_CODE = '$LANGUAGE_CODE'

" > $PROJECT_NAME/settings.py

python3 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}python manage.py runserver${BLACK}\" to execute the application
Type \"${CYAN}python manage.py test${BLACK}\" to run the automatic tests
Type \"${CYAN}python manage.py sync${BLACK}\" to syncronize the models with database
"

