From 61b5a80f9ce3d9a6d94b171f8a415dbf6e348068 Mon Sep 17 00:00:00 2001 From: Cesar Costa Date: Mon, 14 Sep 2020 20:44:36 -0300 Subject: [PATCH] =?UTF-8?q?Atualizado=20cadastro=20de=20usu=C3=A1rios=20e?= =?UTF-8?q?=20fun=C3=A7=C3=B5es=20para=20vizualiza=C3=A7=C3=A3o=20das=20ta?= =?UTF-8?q?feras=20dos=20cronograma=20por=20cliente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Procfile | 2 +- .../templates/account/cadastrar_cliente.html | 87 -------- .../account/cadastrar_funcionario.html | 65 ------ account/urls.py | 16 -- account/views.py | 121 ------------ {account => apps}/__init__.py | 0 .../migrations => apps/account}/__init__.py | 0 {account => apps/account}/admin.py | 0 {account => apps/account}/apps.py | 0 apps/account/forms.py | 19 ++ .../account/migrations}/__init__.py | 0 {account => apps/account}/models.py | 0 apps/account/templates/alterar_senha.html | 36 ++++ .../account/templates/cadastro_cliente.html | 21 +- .../templates/cadastro_funcionario.html | 21 +- .../templates/continue_cad_cliente.html | 15 ++ .../templates/continue_cad_funcionario.html | 16 ++ apps/account/templates/login.html | 28 +++ {account => apps/account}/tests.py | 0 apps/account/urls.py | 17 ++ apps/account/views.py | 186 ++++++++++++++++++ .../confidencechronograms}/__init__.py | 0 .../confidencechronograms}/admin.py | 2 +- apps/confidencechronograms/apps.py | 5 + .../migrations/0001_initial.py | 46 ++--- .../migrations/__init__.py | 0 .../confidencechronograms}/models.py | 3 +- .../static/css/bootstrap.css | 0 .../static/css/business-frontpage.css | 0 .../static/css/frappe-gantt.css | 0 .../static/css/login.css | 0 .../static/css/styles.css | 0 .../static/images/android-icon-36x36.png | Bin .../static/js/bootstrap.bundle.js | 0 .../static/js/frappe-gantt.min.js | 0 .../static/js/jquery.min.js | 0 .../confidencechronograms}/static/js/main.js | 0 .../templates/base-cliente.html | 0 .../templates/base-funcionario.html | 7 +- .../templates/base.html | 0 .../templates/chronogram.html | 0 .../templates/cliente.html | 4 +- .../templates/confidence-cliente.html | 5 +- .../templates/confidence-funcionario.html | 2 +- .../templates/contact.html | 0 .../templates/funcionario.html | 95 +++++++++ .../templates/home.html | 0 .../templates/login.html | 0 .../templates/model-footer.html | 0 .../templates/model-header.html | 0 .../templates/model-page.html | 0 .../templates/task.html | 0 .../confidencechronograms}/tests.py | 0 .../confidencechronograms}/urls.py | 10 +- .../confidencechronograms}/views.py | 10 +- confidence_chronogram/urls.py | 10 - confidence_chronogram/wsgi.py | 18 -- .../__pycache__/__init__.cpython-37.pyc | Bin 155 -> 0 bytes .../__pycache__/admin.cpython-37.pyc | Bin 1431 -> 0 bytes .../__pycache__/models.cpython-37.pyc | Bin 6979 -> 0 bytes .../__pycache__/views.cpython-37.pyc | Bin 2443 -> 0 bytes confidence_chronograms/apps.py | 5 - confidence_chronograms/forms.py | 28 --- .../templates/funcionario.html | 97 --------- confidencechronogram/__init__.py | 0 .../asgi.py | 4 +- .../settings.py | 76 ++++--- confidencechronogram/urls.py | 12 ++ confidencechronogram/wsgi.py | 9 + db.sqlite3 | Bin 217088 -> 176128 bytes manage.py | 2 +- node_modules/frappe-gantt/README.md | 2 +- node_modules/frappe-gantt/package.json | 14 +- node_modules/frappe-gantt/src/bar.js | 23 ++- node_modules/frappe-gantt/src/date_utils.js | 70 +++++++ node_modules/frappe-gantt/src/index.js | 56 +++--- package-lock.json | 6 +- runtime.txt | 2 +- 78 files changed, 670 insertions(+), 603 deletions(-) delete mode 100644 account/templates/account/cadastrar_cliente.html delete mode 100644 account/templates/account/cadastrar_funcionario.html delete mode 100644 account/urls.py delete mode 100644 account/views.py rename {account => apps}/__init__.py (100%) rename {account/migrations => apps/account}/__init__.py (100%) rename {account => apps/account}/admin.py (100%) rename {account => apps/account}/apps.py (100%) create mode 100644 apps/account/forms.py rename {confidence_chronograms => apps/account/migrations}/__init__.py (100%) rename {account => apps/account}/models.py (100%) create mode 100644 apps/account/templates/alterar_senha.html rename account/templates/account/register_clie.html => apps/account/templates/cadastro_cliente.html (72%) rename account/templates/account/register_func.html => apps/account/templates/cadastro_funcionario.html (72%) create mode 100644 apps/account/templates/continue_cad_cliente.html create mode 100644 apps/account/templates/continue_cad_funcionario.html create mode 100644 apps/account/templates/login.html rename {account => apps/account}/tests.py (100%) create mode 100644 apps/account/urls.py create mode 100644 apps/account/views.py rename {confidence_chronograms/migrations => apps/confidencechronograms}/__init__.py (100%) rename {confidence_chronograms => apps/confidencechronograms}/admin.py (92%) create mode 100644 apps/confidencechronograms/apps.py rename {confidence_chronograms => apps/confidencechronograms}/migrations/0001_initial.py (83%) create mode 100644 apps/confidencechronograms/migrations/__init__.py rename {confidence_chronograms => apps/confidencechronograms}/models.py (98%) rename {confidence_chronograms => apps/confidencechronograms}/static/css/bootstrap.css (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/css/business-frontpage.css (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/css/frappe-gantt.css (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/css/login.css (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/css/styles.css (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/images/android-icon-36x36.png (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/js/bootstrap.bundle.js (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/js/frappe-gantt.min.js (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/js/jquery.min.js (100%) rename {confidence_chronograms => apps/confidencechronograms}/static/js/main.js (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/base-cliente.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/base-funcionario.html (97%) rename {confidence_chronograms => apps/confidencechronograms}/templates/base.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/chronogram.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/cliente.html (98%) rename {confidence_chronograms => apps/confidencechronograms}/templates/confidence-cliente.html (97%) rename {confidence_chronograms => apps/confidencechronograms}/templates/confidence-funcionario.html (97%) rename {confidence_chronograms => apps/confidencechronograms}/templates/contact.html (100%) create mode 100644 apps/confidencechronograms/templates/funcionario.html rename {confidence_chronograms => apps/confidencechronograms}/templates/home.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/login.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/model-footer.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/model-header.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/model-page.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/templates/task.html (100%) rename {confidence_chronograms => apps/confidencechronograms}/tests.py (100%) rename {confidence_chronograms => apps/confidencechronograms}/urls.py (81%) rename {confidence_chronograms => apps/confidencechronograms}/views.py (97%) delete mode 100644 confidence_chronogram/urls.py delete mode 100644 confidence_chronogram/wsgi.py delete mode 100644 confidence_chronograms/__pycache__/__init__.cpython-37.pyc delete mode 100644 confidence_chronograms/__pycache__/admin.cpython-37.pyc delete mode 100644 confidence_chronograms/__pycache__/models.cpython-37.pyc delete mode 100644 confidence_chronograms/__pycache__/views.cpython-37.pyc delete mode 100644 confidence_chronograms/apps.py delete mode 100644 confidence_chronograms/forms.py delete mode 100644 confidence_chronograms/templates/funcionario.html create mode 100644 confidencechronogram/__init__.py rename {confidence_chronogram => confidencechronogram}/asgi.py (69%) rename {confidence_chronogram => confidencechronogram}/settings.py (59%) create mode 100644 confidencechronogram/urls.py create mode 100644 confidencechronogram/wsgi.py diff --git a/Procfile b/Procfile index cf855438..27ff1843 100644 --- a/Procfile +++ b/Procfile @@ -1 +1 @@ -web: gunicorn confidence_chronogram.wsgi --log-file - +web: gunicorn confidencechronogram.wsgi --log-file - diff --git a/account/templates/account/cadastrar_cliente.html b/account/templates/account/cadastrar_cliente.html deleted file mode 100644 index e979e268..00000000 --- a/account/templates/account/cadastrar_cliente.html +++ /dev/null @@ -1,87 +0,0 @@ -{% extends 'base-funcionario.html' %} - -{% block content %} - -
-
{% csrf_token %} -

Cadastro Cliente

-
- Dados de cadastro (Cliente) -

- -

-

- -

-

- -

-

- -

-

- -

- -

-
- -

-

- -

-

- -

-

- -

-

- -

-

- -

- -

- -

-
- -
-
- -{% endblock %} \ No newline at end of file diff --git a/account/templates/account/cadastrar_funcionario.html b/account/templates/account/cadastrar_funcionario.html deleted file mode 100644 index a78da1fe..00000000 --- a/account/templates/account/cadastrar_funcionario.html +++ /dev/null @@ -1,65 +0,0 @@ -{% extends 'base-funcionario.html' %} - -{% block content %} -
-
{% csrf_token %} -

Cadastro Funcionário

-
- Dados de cadastro (Funcionário) -

- -

- -

-
- -

-

- -

-

- -

-

- -

-

- -

-

- -

- -

- -

-
- -
-
- -{% endblock %} \ No newline at end of file diff --git a/account/urls.py b/account/urls.py deleted file mode 100644 index d74fd143..00000000 --- a/account/urls.py +++ /dev/null @@ -1,16 +0,0 @@ -from django.urls import path -from . import views - -app_name = 'account' - -urlpatterns = [ - #path('registrar/', views.register.as_view(), name='registrar'), - # Registra USUARIO cliente/funcionario - path('registrar/clie', views.register_clie, name='registrar_cliente'), - path('cadastro/cliente', views.register_cliente, name='register_cliente'), - path('cadastro/submit', views.submit_register_cliente), - - path('registrar/func', views.register_func, name='registrar_funcionario'), - path('funcionario', views.register_funcionario, name='register_funcionario'), - path('submit', views.submit_register_funcionario), -] \ No newline at end of file diff --git a/account/views.py b/account/views.py deleted file mode 100644 index a1dbf8d1..00000000 --- a/account/views.py +++ /dev/null @@ -1,121 +0,0 @@ -from django.contrib.auth.decorators import login_required -from django.shortcuts import render, redirect, HttpResponse -from django.contrib.auth.forms import UserCreationForm, AuthenticationForm -from django.contrib.auth import authenticate, login, logout -from django.urls import reverse_lazy -from django.contrib.auth.models import User - -from django.views.generic import CreateView, ListView, TemplateView - -from confidence_chronograms.models import Cliente, Funcionario - - -""" class register(CreateView): - form_class = UserCreationForm - success_url = reverse_lazy('account:registrar') - template_name = 'register.html' """ - -# --------Registro Cliente------------- -@login_required(login_url="/login/") -def register_clie(request): - if request.method == "POST": - form_usuario = UserCreationForm(request.POST) - if form_usuario.is_valid(): - form_usuario.save() - # depois que cadastrar redireciona para cadastro de cliente - return redirect('account:register_cliente') - else: - form_usuario = UserCreationForm() - return render(request, 'register_clie.html', {'form_usuario': form_usuario}) - -# mostra registro cliente para criar -@login_required(login_url="/login/") -def register_cliente(request): - id_cliente = request.GET.get("id") - usuario = User.objects.all().order_by('-username') - dados = {} - if id_cliente: - dados["cliente"] = Cliente.objects.get(id=id_cliente) - #dados["usuario"] = usuario - return render(request, 'cadastrar_cliente.html', {'usuario': usuario}, dados) - -# submit registro cliente -# colocar foreinkey usando id -@login_required(login_url="/login/") -def submit_register_cliente(request): - # verificar com ID de usuario para restringir... - # usuario = - if request.method == "POST": - nome = request.POST.get("nome") - razao_social = request.POST.get("razao_social") - tipo_pessoa = request.POST.get("tipo_pessoa") - cpf_cnpj= request.POST.get("cpf_cnpj") - rg_ie = request.POST.get("rg_ie") - endereco = request.POST.get("endereco") - cidade = request.POST.get("cidade") - cep = request.POST.get("cep") - uf = request.POST.get("uf") - email = request.POST.get("email") - fone1 = request.POST.get("fone1") - usuario_cli_id = request.POST.get("usuario_cli_id") - Cliente.objects.create( - nome=nome, - razao_social=razao_social, - tipo_pessoa=tipo_pessoa, - cpf_cnpj=cpf_cnpj, - rg_ie=rg_ie, - endereco=endereco, - cidade=cidade, - cep=cep, - uf=uf, - email=email, - fone1=fone1, - usuario_cli_id=usuario_cli_id, - ) - return redirect("/confidencechronogram/funcionario") - - -# --------Registro Funcionário ------------- -@login_required(login_url="/login/") -def register_func(request): - if request.method == "POST": - form_usuario = UserCreationForm(request.POST) - if form_usuario.is_valid(): - form_usuario.save() - return redirect('account:register_funcionario') - else: - form_usuario = UserCreationForm() - return render(request, 'register_func.html', {'form_usuario': form_usuario}) - -# mostra registro funcionario -@login_required(login_url="/login/") -def register_funcionario(request): - id_funcionario = request.GET.get("id") - # ordena pelo ultimo, no caso o ID do ultimo cadastrado - usuario = User.objects.all().order_by('-username') - dados = {} - if id_funcionario: - dados["funcionario"] = Funcionario.objects.get(id=id_funcionario) - return render(request, 'cadastrar_funcionario.html', {'usuario': usuario}, dados) - - -@login_required(login_url="/login/") -def submit_register_funcionario(request): - if request.POST: - nome = request.POST.get("nome") - fone1 = request.POST.get("fone1") - endereco = request.POST.get("endereco") - cidade = request.POST.get("cidade") - cep = request.POST.get("cep") - uf = request.POST.get("uf") - usuario_fun_id = request.POST.get("usuario_fun_id") - Funcionario.objects.create( - nome=nome, - fone1=fone1, - endereco=endereco, - cidade=cidade, - cep=cep, - uf=uf, - usuario_fun_id=usuario_fun_id - ) - return redirect("/confidencechonogra/funcionario") \ No newline at end of file diff --git a/account/__init__.py b/apps/__init__.py similarity index 100% rename from account/__init__.py rename to apps/__init__.py diff --git a/account/migrations/__init__.py b/apps/account/__init__.py similarity index 100% rename from account/migrations/__init__.py rename to apps/account/__init__.py diff --git a/account/admin.py b/apps/account/admin.py similarity index 100% rename from account/admin.py rename to apps/account/admin.py diff --git a/account/apps.py b/apps/account/apps.py similarity index 100% rename from account/apps.py rename to apps/account/apps.py diff --git a/apps/account/forms.py b/apps/account/forms.py new file mode 100644 index 00000000..00b3efd3 --- /dev/null +++ b/apps/account/forms.py @@ -0,0 +1,19 @@ +from django import forms + +from apps.confidencechronograms.models import Cliente, Funcionario + + +class ClienteForm(forms.ModelForm): + class Meta: + model = Cliente + fields = ( + 'nome', 'endereco', 'razao_social', 'tipo_pessoa', 'cpf_cnpj', 'rg_ie', + 'cep', 'uf', 'email', 'fone1', 'usuario_cli' + ) + +class FuncionarioForm(forms.ModelForm): + class Meta: + model = Funcionario + fields = ( + 'nome', 'endereco', 'cpf', 'rg', 'fone1', 'bloqueado', 'usuario_fun' + ) \ No newline at end of file diff --git a/confidence_chronograms/__init__.py b/apps/account/migrations/__init__.py similarity index 100% rename from confidence_chronograms/__init__.py rename to apps/account/migrations/__init__.py diff --git a/account/models.py b/apps/account/models.py similarity index 100% rename from account/models.py rename to apps/account/models.py diff --git a/apps/account/templates/alterar_senha.html b/apps/account/templates/alterar_senha.html new file mode 100644 index 00000000..b89638bb --- /dev/null +++ b/apps/account/templates/alterar_senha.html @@ -0,0 +1,36 @@ + + + + + Alterar senha + + +
+
+ {% csrf_token %} + +
+ {{form_senha.old_password.errors}} + + {{form_senha.old_password}} +
+ +
+ {{form_senha.new_password1.errors}} + + {{form_senha.new_password1}} +
+ +
+ {{form_senha.new_password2.errors}} + + {{form_senha.new_password2}} +
+ +
+ +
+
+
+ + \ No newline at end of file diff --git a/account/templates/account/register_clie.html b/apps/account/templates/cadastro_cliente.html similarity index 72% rename from account/templates/account/register_clie.html rename to apps/account/templates/cadastro_cliente.html index a3e45214..ead0ecc0 100644 --- a/account/templates/account/register_clie.html +++ b/apps/account/templates/cadastro_cliente.html @@ -1,31 +1,28 @@ {% extends 'base-funcionario.html' %} - {% block content %} -
- -

|Cadastrar Usuário Cliente|

+
{% csrf_token %} - -
+

|Cadastro de Usuário Cliente|

+
{{form_usuario.username.errors}} {{form_usuario.username}}
- -
+ +
{{form_usuario.password1.errors}} {{form_usuario.password1}}
- -
+ +
{{form_usuario.password2.errors}} {{form_usuario.password2}}
- -
+ +
diff --git a/account/templates/account/register_func.html b/apps/account/templates/cadastro_funcionario.html similarity index 72% rename from account/templates/account/register_func.html rename to apps/account/templates/cadastro_funcionario.html index 43ab08eb..38405f5f 100644 --- a/account/templates/account/register_func.html +++ b/apps/account/templates/cadastro_funcionario.html @@ -1,31 +1,28 @@ {% extends 'base-funcionario.html' %} - {% block content %} -
- -

|Cadastrar Usuário Funcionário|

+
{% csrf_token %} - -
+

|Cadastro de Usuário Funcionário|

+
{{form_usuario.username.errors}} {{form_usuario.username}}
- -
+ +
{{form_usuario.password1.errors}} {{form_usuario.password1}}
- -
+ +
{{form_usuario.password2.errors}} {{form_usuario.password2}}
- -
+ +
diff --git a/apps/account/templates/continue_cad_cliente.html b/apps/account/templates/continue_cad_cliente.html new file mode 100644 index 00000000..cb292060 --- /dev/null +++ b/apps/account/templates/continue_cad_cliente.html @@ -0,0 +1,15 @@ +{% extends 'base-funcionario.html' %} + +{% load crispy_forms_tags %} + +{% block content %} +
+

Cadastro Funcionário

+
+ {% csrf_token %} + {{ form|crispy }} + + +
+
+{% endblock %} diff --git a/apps/account/templates/continue_cad_funcionario.html b/apps/account/templates/continue_cad_funcionario.html new file mode 100644 index 00000000..6bd1cec0 --- /dev/null +++ b/apps/account/templates/continue_cad_funcionario.html @@ -0,0 +1,16 @@ +{% extends 'base-funcionario.html' %} + +{% load crispy_forms_tags %} + +{% block content %} +
+

Cadastro Funcionário

+
+ {% csrf_token %} + {{ form|crispy }} + + +
+
+ +{% endblock %} \ No newline at end of file diff --git a/apps/account/templates/login.html b/apps/account/templates/login.html new file mode 100644 index 00000000..2799ac79 --- /dev/null +++ b/apps/account/templates/login.html @@ -0,0 +1,28 @@ + + + + + Title + + +
+ {% csrf_token %} + +
+ {{form_login.username.errors}} + + {{form_login.username}} +
+ +
+ {{form_login.password.errors}} + + {{form_login.password}} +
+ +
+ +
+
+ + \ No newline at end of file diff --git a/account/tests.py b/apps/account/tests.py similarity index 100% rename from account/tests.py rename to apps/account/tests.py diff --git a/apps/account/urls.py b/apps/account/urls.py new file mode 100644 index 00000000..13178177 --- /dev/null +++ b/apps/account/urls.py @@ -0,0 +1,17 @@ +from django.contrib import admin +from django.urls import path, include +from .views import * + +app_name = 'account' + +urlpatterns = [ + path('logar_usuario', logar_usuario, name="logar_usuario"), + path('deslogar_usuario', deslogar_usuario, name="deslogar_usuario"), + path('alterar_senha/', alterar_senha, name='alterar_senha'), + path('cadastrar_cliente', cadastrar_cliente, name="cadastrar_cliente"), + path('cadastrar_funcionario', cadastrar_funcionario, name="cadastrar_funcionario"), + path('cadastro/continue_cad_cliente', continue_cad_cliente, name="continue_cad_cliente"), + path('continue_cad_funcionario', continue_cad_funcionario, name="continue_cad_funcionario"), + path('cadastro/submit', submit_continue_cad_cliente), + path('submit', submit_continue_cad_funcionario), +] \ No newline at end of file diff --git a/apps/account/views.py b/apps/account/views.py new file mode 100644 index 00000000..34257da2 --- /dev/null +++ b/apps/account/views.py @@ -0,0 +1,186 @@ +from django.contrib.auth.decorators import login_required +from django.shortcuts import render, redirect +from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, PasswordChangeForm +from django.contrib.auth import authenticate, login, logout, update_session_auth_hash +from django.contrib.auth.models import User + +from apps.confidencechronograms.models import Cliente, Funcionario +#com o forms vou conseguir resolver para incluir o usuario_cli e usuario_fun +from .forms import ClienteForm, FuncionarioForm + +# Cadastro de cliente +def cadastrar_cliente(request): + if request.method == "POST": + form_usuario = UserCreationForm(request.POST) + if form_usuario.is_valid(): + form_usuario.save() + return redirect('account:continue_cad_cliente') + else: + form_usuario = UserCreationForm() + return render(request, 'cadastro_cliente.html', {'form_usuario': form_usuario}) + +# mostra continue cadastro cliente +@login_required(login_url="/login/") +def continue_cad_cliente(request): + if request.method == "POST": + form = ClienteForm(request.POST) + if form.is_valid(): + #'nome', 'endereco', 'razao_social', 'tipo_pessoa', 'cpf_cnpj', 'rg_ie', + # 'cep', 'uf', 'email', 'fone1', 'usuario_cli' + nome = form.cleaned_data['nome'] + endereco = form.cleaned_data['endereco'] + razao_social = form.cleaned_data['razao_social'] + tipo_pessoa = form.cleaned_data['tipo_pessoa'] + cpf_cnpj = form.cleaned_data['cpf_cnpj'] + rg_ie = form.cleaned_data['rg_ie'] + cep = form.cleaned_data['cep'] + uf = form.cleaned_data['uf'] + email = form.cleaned_data['email'] + fone1 = form.cleaned_data['fone1'] + usuario_cli = form.cleaned_data['usuario_cli'] + novo = Cliente( + nome=nome, endereco=endereco, razao_social=razao_social, + tipo_pessoa=tipo_pessoa, cpf_cnpj=cpf_cnpj, rg_ie=rg_ie, + cep=cep, uf=uf, email=email, fone1=fone1, + usuario_cli=usuario_cli + ) + novo.save() + #form.save() + return redirect("funcionario") + else: + form = ClienteForm() + return render(request, "continue_cad_cliente.html", {"form": form}) + + +@login_required(login_url="/login/") +def submit_continue_cad_cliente(request): + if request.POST: + nome = request.POST.get("nome") + fone1 = request.POST.get("fone1") + endereco = request.POST.get("endereco") + cidade = request.POST.get("cidade") + cep = request.POST.get("cep") + uf = request.POST.get("uf") + usuario_cli_id = request.POST.get("usuario_cli_id") + Funcionario.objects.create( + nome=nome, + fone1=fone1, + endereco=endereco, + cidade=cidade, + cep=cep, + uf=uf, + usuario_cli_id=usuario_cli_id + ) + return redirect("/confidencechronogram/funcionario") + +#cadastro de funcinário +def cadastrar_funcionario(request): + if request.method == "POST": + form_usuario = UserCreationForm(request.POST) + if form_usuario.is_valid(): + form_usuario.save() + return redirect('account:continue_cad_funcionario') + else: + form_usuario = UserCreationForm() + return render(request, 'cadastro_funcionario.html', {'form_usuario': form_usuario}) + +# mostra continue cadastro funcionário +@login_required(login_url="/login/") +def continue_cad_funcionario(request): + """ Continuação do Cadastro do Funcionário. + """ + if request.method == "POST": + form = FuncionarioForm(request.POST) + if form.is_valid(): + form.save() + return redirect("funcionario") + else: + form = FuncionarioForm() + return render(request, "continue_cad_funcionario.html", {"form": form}) + # if request.method == "POST": + # form = FuncionarioForm(request.POST) + # if form.is_valid(): + # #'nome', 'endereco', 'cpf', 'rg', 'fone1', 'bloqueado', 'usuario_fun' + # nome = form.cleaned_data['nome'] + # endereco = form.cleaned_data['endereco'] + # cpf = form.cleaned_data['cpf'] + # rg = form.cleaned_data['rg'] + # fone1 = form.cleaned_data['fone1'] + # bloqueado = form.cleaned_data['bloqueado'] + # usuario_fun = form.cleaned_data['usuario_fun'] + # novo = Funcionario( + # nome=nome, endereco=endereco, cpf=cpf, + # rg=rg, fone1=fone1, bloqueado=bloqueado, usuario_fun=usuario_fun + # ) + # novo.save() + # return redirect("funcionario") + # else: + # form = FuncionarioForm() + # return render(request, "continue_cad_funcionario.html", {"form": form}) + + +@login_required(login_url="/login/") +def submit_continue_cad_funcionario(request): + if request.POST: + nome = request.POST.get("nome") + fone1 = request.POST.get("fone1") + endereco = request.POST.get("endereco") + cidade = request.POST.get("cidade") + cep = request.POST.get("cep") + uf = request.POST.get("uf") + usuario_fun_id = request.POST.get("usuario_fun_id") + Funcionario.objects.create( + nome=nome, + fone1=fone1, + endereco=endereco, + cidade=cidade, + cep=cep, + uf=uf, + usuario_fun_id=usuario_fun_id + ) + return redirect("/confidencechronogram/funcionario") + + +def logar_usuario(request): + if request.method == "POST": + username = request.POST["username"] + password = request.POST["password"] + usuario = authenticate(request, username=username, password=password) + if usuario is not None: + login(request, usuario) + return redirect('index') + else: + form_login = AuthenticationForm() + else: + form_login = AuthenticationForm() + return render(request, 'login.html', {'form_login': form_login}) + + +@login_required(login_url='/logar_usuario') +def deslogar_usuario(request): + logout(request) + return redirect('index') + +@login_required(login_url='/login/') +def alterar_senha(request): + if request.method == "POST": + form_senha = PasswordChangeForm(request.user, request.POST) + if form_senha.is_valid(): + user = form_senha.save() + update_session_auth_hash(request, user) + return redirect('index') + else: + form_senha = PasswordChangeForm(request.user) + return render(request, 'alterar_senha.html', {'form_senha': form_senha}) + +@login_required(login_url="/login/") +def upload_chamado(request): + """ Cria formulário do chamado e envia objeto cliente para pegar id. """ + if request.method == "POST": + form = ChamadoForm(request.POST, request.FILES) + if form.is_valid(): + form.save() + return redirect("chamado_list") + else: + form = ChamadoForm() + return render(request, "upload_chamado.html", {"form": form}) \ No newline at end of file diff --git a/confidence_chronograms/migrations/__init__.py b/apps/confidencechronograms/__init__.py similarity index 100% rename from confidence_chronograms/migrations/__init__.py rename to apps/confidencechronograms/__init__.py diff --git a/confidence_chronograms/admin.py b/apps/confidencechronograms/admin.py similarity index 92% rename from confidence_chronograms/admin.py rename to apps/confidencechronograms/admin.py index 1e243379..13b06343 100644 --- a/confidence_chronograms/admin.py +++ b/apps/confidencechronograms/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from confidence_chronograms.models import Chronogram, Task, Funcionario, Cliente +from apps.confidencechronograms.models import Chronogram, Task, Cliente, Funcionario class FuncAdmin(admin.ModelAdmin): list_display = ('nome', 'cargo', 'endereco', 'fone1', 'bloqueado') diff --git a/apps/confidencechronograms/apps.py b/apps/confidencechronograms/apps.py new file mode 100644 index 00000000..4fcb8385 --- /dev/null +++ b/apps/confidencechronograms/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class ConfidencechronogramsConfig(AppConfig): + name = 'confidencechronograms' diff --git a/confidence_chronograms/migrations/0001_initial.py b/apps/confidencechronograms/migrations/0001_initial.py similarity index 83% rename from confidence_chronograms/migrations/0001_initial.py rename to apps/confidencechronograms/migrations/0001_initial.py index 7a0f4d51..a53b5836 100644 --- a/confidence_chronograms/migrations/0001_initial.py +++ b/apps/confidencechronograms/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 3.0.2 on 2020-09-07 21:30 +# Generated by Django 3.0.2 on 2020-09-12 22:05 from django.conf import settings from django.db import migrations, models @@ -31,40 +31,20 @@ class Migration(migrations.Migration): 'ordering': ['date_added'], }, ), - migrations.CreateModel( - name='Id_dependency', - fields=[ - ('id_dep', models.CharField(max_length=10, primary_key=True, serialize=False)), - ], - options={ - 'verbose_name': 'Id da Dependência', - 'verbose_name_plural': 'Ids das Dependências', - }, - ), - migrations.CreateModel( - name='Id_task', - fields=[ - ('id_tk', models.CharField(max_length=10, primary_key=True, serialize=False)), - ], - options={ - 'verbose_name': 'Id da Tarefa', - 'verbose_name_plural': 'Ids das Tarefas', - }, - ), migrations.CreateModel( name='Task', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('ident', models.CharField(max_length=4, verbose_name='Identificador')), ('name', models.CharField(max_length=40, verbose_name='Nome')), + ('task_text', models.TextField(verbose_name='Descrição da Tarefa')), ('start_date', models.DateField(verbose_name='Inicio')), ('end_date', models.DateField(verbose_name='Termino')), ('progress', models.CharField(max_length=3, verbose_name='Progresso %')), - ('task_text', models.TextField(verbose_name='Descrição da Tarefa')), + ('dependencies', models.CharField(max_length=10, verbose_name='Dependências')), ('price', models.DecimalField(decimal_places=4, max_digits=10, verbose_name='Valor')), ('date_added', models.DateTimeField(auto_now_add=True, verbose_name='Data de criação')), - ('id_dep', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='confidence_chronograms.Id_dependency', verbose_name='Id Dependência')), - ('id_tk', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='confidence_chronograms.Id_task', verbose_name='Id Tarefa')), - ('task_chronogram', models.ManyToManyField(related_name='ChronogramTarefas', to='confidence_chronograms.Chronogram', verbose_name='ChronogramaTarefa')), + ('chronogram', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='confidencechronograms.Chronogram')), ], options={ 'verbose_name': 'Tarefa', @@ -91,8 +71,7 @@ class Migration(migrations.Migration): ('cidade', models.CharField(blank=True, max_length=30, null=True)), ('cep', models.CharField(blank=True, max_length=9, null=True)), ('uf', models.CharField(blank=True, max_length=2, null=True)), - ('email', models.EmailField(max_length=60)), - ('email2', models.EmailField(blank=True, max_length=60, null=True)), + ('email', models.EmailField(blank=True, max_length=60, null=True)), ('senha', models.CharField(blank=True, max_length=16, null=True)), ('fone1', models.CharField(max_length=16, verbose_name='Telefone 1')), ('fone2', models.CharField(blank=True, max_length=20, null=True, verbose_name='Telefone 2')), @@ -146,8 +125,8 @@ class Migration(migrations.Migration): ('dia_venc', models.DateTimeField(blank=True, null=True, verbose_name='Dia do Vencimento')), ('senha', models.CharField(blank=True, max_length=6, null=True)), ('date_added', models.DateTimeField(auto_now_add=True)), - ('funcionario', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='confidence_chronograms.Funcionario')), - ('usuario_cli', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuário Cliente')), + ('funcionario', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='confidencechronograms.Funcionario')), + ('usuario_cli', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'verbose_name': 'Cliente', @@ -157,7 +136,12 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name='chronogram', - name='cliente', - field=models.OneToOneField(on_delete=django.db.models.deletion.PROTECT, to='confidence_chronograms.Cliente'), + name='client', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='confidencechronograms.Cliente'), + ), + migrations.AddField( + model_name='chronogram', + name='usuario', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL), ), ] diff --git a/apps/confidencechronograms/migrations/__init__.py b/apps/confidencechronograms/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/confidence_chronograms/models.py b/apps/confidencechronograms/models.py similarity index 98% rename from confidence_chronograms/models.py rename to apps/confidencechronograms/models.py index 25cb7c45..a9be935b 100644 --- a/confidence_chronograms/models.py +++ b/apps/confidencechronograms/models.py @@ -148,7 +148,6 @@ class Task(models.Model): name = models.CharField(verbose_name = 'Nome', max_length=40) task_text = models.TextField(verbose_name = 'Descrição da Tarefa') start_date = models.DateField(verbose_name = 'Inicio') - # Duração já encontra a data final. tipo int com date? end_date = models.DateField(verbose_name = 'Termino') progress = models.CharField(verbose_name= 'Progresso %', max_length=3) dependencies = models.CharField(verbose_name='Dependências', max_length=10) @@ -160,7 +159,7 @@ class Meta: verbose_name = 'Tarefa' verbose_name_plural = 'Tarefas' #ordenar - ordering = ['date_added', 'chronogram'] + ordering = ['date_added'] def __str__(self): diff --git a/confidence_chronograms/static/css/bootstrap.css b/apps/confidencechronograms/static/css/bootstrap.css similarity index 100% rename from confidence_chronograms/static/css/bootstrap.css rename to apps/confidencechronograms/static/css/bootstrap.css diff --git a/confidence_chronograms/static/css/business-frontpage.css b/apps/confidencechronograms/static/css/business-frontpage.css similarity index 100% rename from confidence_chronograms/static/css/business-frontpage.css rename to apps/confidencechronograms/static/css/business-frontpage.css diff --git a/confidence_chronograms/static/css/frappe-gantt.css b/apps/confidencechronograms/static/css/frappe-gantt.css similarity index 100% rename from confidence_chronograms/static/css/frappe-gantt.css rename to apps/confidencechronograms/static/css/frappe-gantt.css diff --git a/confidence_chronograms/static/css/login.css b/apps/confidencechronograms/static/css/login.css similarity index 100% rename from confidence_chronograms/static/css/login.css rename to apps/confidencechronograms/static/css/login.css diff --git a/confidence_chronograms/static/css/styles.css b/apps/confidencechronograms/static/css/styles.css similarity index 100% rename from confidence_chronograms/static/css/styles.css rename to apps/confidencechronograms/static/css/styles.css diff --git a/confidence_chronograms/static/images/android-icon-36x36.png b/apps/confidencechronograms/static/images/android-icon-36x36.png similarity index 100% rename from confidence_chronograms/static/images/android-icon-36x36.png rename to apps/confidencechronograms/static/images/android-icon-36x36.png diff --git a/confidence_chronograms/static/js/bootstrap.bundle.js b/apps/confidencechronograms/static/js/bootstrap.bundle.js similarity index 100% rename from confidence_chronograms/static/js/bootstrap.bundle.js rename to apps/confidencechronograms/static/js/bootstrap.bundle.js diff --git a/confidence_chronograms/static/js/frappe-gantt.min.js b/apps/confidencechronograms/static/js/frappe-gantt.min.js similarity index 100% rename from confidence_chronograms/static/js/frappe-gantt.min.js rename to apps/confidencechronograms/static/js/frappe-gantt.min.js diff --git a/confidence_chronograms/static/js/jquery.min.js b/apps/confidencechronograms/static/js/jquery.min.js similarity index 100% rename from confidence_chronograms/static/js/jquery.min.js rename to apps/confidencechronograms/static/js/jquery.min.js diff --git a/confidence_chronograms/static/js/main.js b/apps/confidencechronograms/static/js/main.js similarity index 100% rename from confidence_chronograms/static/js/main.js rename to apps/confidencechronograms/static/js/main.js diff --git a/confidence_chronograms/templates/base-cliente.html b/apps/confidencechronograms/templates/base-cliente.html similarity index 100% rename from confidence_chronograms/templates/base-cliente.html rename to apps/confidencechronograms/templates/base-cliente.html diff --git a/confidence_chronograms/templates/base-funcionario.html b/apps/confidencechronograms/templates/base-funcionario.html similarity index 97% rename from confidence_chronograms/templates/base-funcionario.html rename to apps/confidencechronograms/templates/base-funcionario.html index b5dd565d..29ae7445 100644 --- a/confidence_chronograms/templates/base-funcionario.html +++ b/apps/confidencechronograms/templates/base-funcionario.html @@ -34,7 +34,6 @@ + + +
+ + +{% endblock %} \ No newline at end of file diff --git a/confidence_chronograms/templates/home.html b/apps/confidencechronograms/templates/home.html similarity index 100% rename from confidence_chronograms/templates/home.html rename to apps/confidencechronograms/templates/home.html diff --git a/confidence_chronograms/templates/login.html b/apps/confidencechronograms/templates/login.html similarity index 100% rename from confidence_chronograms/templates/login.html rename to apps/confidencechronograms/templates/login.html diff --git a/confidence_chronograms/templates/model-footer.html b/apps/confidencechronograms/templates/model-footer.html similarity index 100% rename from confidence_chronograms/templates/model-footer.html rename to apps/confidencechronograms/templates/model-footer.html diff --git a/confidence_chronograms/templates/model-header.html b/apps/confidencechronograms/templates/model-header.html similarity index 100% rename from confidence_chronograms/templates/model-header.html rename to apps/confidencechronograms/templates/model-header.html diff --git a/confidence_chronograms/templates/model-page.html b/apps/confidencechronograms/templates/model-page.html similarity index 100% rename from confidence_chronograms/templates/model-page.html rename to apps/confidencechronograms/templates/model-page.html diff --git a/confidence_chronograms/templates/task.html b/apps/confidencechronograms/templates/task.html similarity index 100% rename from confidence_chronograms/templates/task.html rename to apps/confidencechronograms/templates/task.html diff --git a/confidence_chronograms/tests.py b/apps/confidencechronograms/tests.py similarity index 100% rename from confidence_chronograms/tests.py rename to apps/confidencechronograms/tests.py diff --git a/confidence_chronograms/urls.py b/apps/confidencechronograms/urls.py similarity index 81% rename from confidence_chronograms/urls.py rename to apps/confidencechronograms/urls.py index 419a2a7a..a3d93033 100644 --- a/confidence_chronograms/urls.py +++ b/apps/confidencechronograms/urls.py @@ -1,7 +1,11 @@ -from django.urls import path +from django.urls import path, re_path from . import views from django.views.generic import RedirectView +from django.conf import settings +from django.conf.urls.static import static +from django.views.static import serve + urlpatterns = [ #--------------redireciona para HOME--------------------------- path('', views.home, name='home'), @@ -34,5 +38,7 @@ # views.delete_funcionario, name="del_funcionario" #), + re_path(r'^media/(?P.*)$', serve,{'document_root': settings.MEDIA_ROOT}), + re_path(r'^static/(?P.*)$', serve,{'document_root': settings.STATIC_ROOT}), -] \ No newline at end of file +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) \ No newline at end of file diff --git a/confidence_chronograms/views.py b/apps/confidencechronograms/views.py similarity index 97% rename from confidence_chronograms/views.py rename to apps/confidencechronograms/views.py index 2923639d..254d92a6 100644 --- a/confidence_chronograms/views.py +++ b/apps/confidencechronograms/views.py @@ -2,12 +2,11 @@ from django.contrib.auth.decorators import login_required from django.contrib.auth import authenticate, login, logout from django.contrib import messages -# from confidence_chronograms.models import Chronogram # from datetime import datetime, timedelta -# from django.http.response import Http404, JsonResponse -# from django.contrib.auth.models import User +from django.http.response import Http404, JsonResponse +from django.contrib.auth.models import User import json -from confidence_chronograms.models import Task, Cliente, Funcionario, Chronogram +from apps.confidencechronograms.models import Task, Cliente, Funcionario, Chronogram #def index(request): @@ -46,7 +45,7 @@ def confidencechronogram(request): #return redirect("/confidencechronogram/cliente") return redirect("/chronogram") - +# lista as tarefas do chronograma para o cliente @login_required(login_url='/login/') def list_chronogram(request): """ retorna o cronograma com às tarefas (javascript) @@ -154,7 +153,6 @@ def dados_cliente(request): return render(request, "confidence-cliente.html", dados) -#não recebe parâmetro id? @login_required(login_url="/login/") def cliente(request): dados = {} diff --git a/confidence_chronogram/urls.py b/confidence_chronogram/urls.py deleted file mode 100644 index 568c8437..00000000 --- a/confidence_chronogram/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.contrib import admin -from django.urls import path, include - -urlpatterns = [ - path('', include('confidence_chronograms.urls')), - path('admin/', admin.site.urls), - path('account/', include('account.urls')), - path('account/', include('django.contrib.auth.urls')), -] - diff --git a/confidence_chronogram/wsgi.py b/confidence_chronogram/wsgi.py deleted file mode 100644 index e92770f3..00000000 --- a/confidence_chronogram/wsgi.py +++ /dev/null @@ -1,18 +0,0 @@ -""" -WSGI config for confidence_chronogram project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -from dj_static import Cling - -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'confidence_chronogram.settings') - -application = Cling(get_wsgi_application()) diff --git a/confidence_chronograms/__pycache__/__init__.cpython-37.pyc b/confidence_chronograms/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index e4d66bcd1e11d19a37573fb6a98f6f7dc6c73ad9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmZ?b<>g`kg2M+r;z0Cc5CH>>K!yVl7qb9~6oz01O-8?!3`HPe1o6v7KO;XkRX;hk zII&1SIX^EgGbJ@IIW;~xqbNTwKfNe17rSV&etdjpUS>&ryk0@&Ee@O9{FKt1R6CIA IpMjVG0LwZk2LJ#7 diff --git a/confidence_chronograms/__pycache__/admin.cpython-37.pyc b/confidence_chronograms/__pycache__/admin.cpython-37.pyc deleted file mode 100644 index 197c44bb55e8681c824425ba6bb1e1f3f061af47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1431 zcmbVLO>fjN5ViBQ*(AG#0-_+kgv4PlU2#XKr4pRzrJQoWa%1l{ki_jcktkRAA>{^t z$yZMN1y0N)+p>o}t*yMwyu^0i zr`W5!+Ryzu$b&k}!#c_%&fYQQtKd6Rf##n^-~2pACR7nJ(TW)(Gg2`!@rp^18LI@D zWW}U-&#org*U1l$vsD)8bS(>Yyp~0JOqohg*ev^lU(06Pg;LdJGYedDbOxp|OOUk- zK1lo7rEj~YC`}`wG;VZMmAYwlLF=xEhrt0}_7Q?+Iae(A6wiI-cqJTG!% z+U>AEEObF*YVE>8!qT`{H%fypj0+d0(J$Tjv@#c+mdeaH#JKeU8AivrQ!GRyYb}IJ zgs6?`DvC29E;?DQo@7;NTcJvOUdc+05E`U&a0NOBmrkWC{Xg38+GwN(K{pIwja4xJ7WAV3**g07G<_xO)g=yw-IPx3!L)|Na`Zj9i8# zwk>o;i!O6f(L2l~t!ZT?+7cZyl1hQL)};e^4rPICXS?2%iIS}r_>NXH4<68WKP2d* zJ&e#UTWG(JE2&QF+KJm*`qeyVj^1orFG$;C$X&rbSsMKn_(5H4kT3up5WQ| zTc6_%o)J*AowTR8l78d5G~$kD(|oEv$!2Nx@vpQ{o&t4u{&-^>*nR9fU0Lw)9U#9$ zNI<4{$$NU%%k8b-dkLt3Ku5X2mLwGP5_?p`Ci}Vg)zH|lIj*qe(v0tUyWws`bINJ{ E1L-0`CIA2c diff --git a/confidence_chronograms/__pycache__/models.cpython-37.pyc b/confidence_chronograms/__pycache__/models.cpython-37.pyc deleted file mode 100644 index 5f47cef98b831c6e2b3869207f7d4f9b1255b944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6979 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 ZGyekl2?bCwu`KZ^Zxr diff --git a/confidence_chronograms/__pycache__/views.cpython-37.pyc b/confidence_chronograms/__pycache__/views.cpython-37.pyc deleted file mode 100644 index f64ff01dd72ece12f547ea159a28043732b40fc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2443 zcmb7F&2QX96!-XRoy~5NCgDQ@s-ZQ`A^(NNjT2{XJ@MXnyG=qVV9PV(H*em@Z{Eij-EP}~XZN@A`#(F5 z^E>{$dOTR%girqn19v#doq{B!a1)o{zngo7pZIp| zkS`{Sa3;($&L3ct({t-kiINLdM@sNaiPZE+y_CygRt}VSQ~`0GGZLlAQf5RQ z*!?<$Nmh6uDumW-DD++U@$WPJFeNA-9-I+~+wf_`$~aSi;>ZOf+`9*DD=HqDBJUC9 z!ahi7p=P1YFOFIS%FA2*kt{?%6`HAjD$Bi$i!v31bfjb{hl&+%rt1EFCLZf}@t*OX`rXCUE7y*#8?$jrb-#d{z@ufpJvkaX-Dkv56kj;r1U>Ore-`T9MQ zEZEhcQu!QRv|^5K3_qN3_ZeL3m>jz&&K4N^d8P5-1+ykhS)cO^*abC0(W(F)88XN8wZEUgO@pNS zESCxc2Mo*5S4dx}3IWJ8TSgj|BMJq0nQMA`p45%)R{WPwL@~+nbOCUPA-LE;f94?G z34~P>vO-Tpdir7y0Kd_;B4!asx8O!?b%`+{>{hmi2QePwxKV1LglS;??kNS*;e$p5 zQh|u|Etb1uD3&_j%W}Zx+U)$+Y`$*gVj%p(gQ5mTJTY5V6)0)q24X^@;-?#yzHtMm zLn{peu~H>ikM;W6%!%uC<8|8FGP-dct`dYa^5)rqg$=V|2R^+H!w{;?gAP;}a_pQq zKe>MHMQge%L~zjAYL%9UcO+* zCuk#)93>7XMlHUB|RYsNaB zt0L+utb6Op3Lmp_C}Ta6%A}QP5VPetxjfs$(<E4aM~3zT)?%r#=)SGJc%n{d9$#WvoP Z#=5@(tzeyWf{1j&$cy}_yLvMU{{m<9cJu%M diff --git a/confidence_chronograms/apps.py b/confidence_chronograms/apps.py deleted file mode 100644 index d40bb2d5..00000000 --- a/confidence_chronograms/apps.py +++ /dev/null @@ -1,5 +0,0 @@ -from django.apps import AppConfig - - -class ConfidenceChronogramsConfig(AppConfig): - name = 'confidence_chronograms' diff --git a/confidence_chronograms/forms.py b/confidence_chronograms/forms.py deleted file mode 100644 index c65eedd3..00000000 --- a/confidence_chronograms/forms.py +++ /dev/null @@ -1,28 +0,0 @@ - -from django import forms - -from .models import Funcionario, Cliente, Chronogram, Task - - -class FuncionarioForm(forms.ModelForm): - class Meta: - model = Funcionario - fields = ('nome', 'dt_nascimento', 'endereco', 'cep', 'uf', 'email', - 'fone1', 'usuario_fun') - -class ClienteForm(forms.ModelForm): - class Meta: - model = Cliente - fields = ('nome', 'razao_social', 'tipo_pessoa', 'cpf_cnpj', 'rg_ie', 'dt_nascimento', 'endereco', 'cep', 'uf', 'email', 'fone1', 'usuario_cli') - -class ChronogramForm(forms.ModelForm): - class Meta: - model = Chronogram - fields = ('construction', 'client', 'owner', 'address', - 'total_time', 'total_price', 'date_added', 'usuario') - -class TaskForm(forms.ModelForm): - class Meta: - model = Task - fields = ('ident', 'chronogram', 'name', 'task_text', 'start_date', 'duration', - 'end_date', 'progress', 'dependencies', 'price', 'date_added') \ No newline at end of file diff --git a/confidence_chronograms/templates/funcionario.html b/confidence_chronograms/templates/funcionario.html deleted file mode 100644 index e4178c0a..00000000 --- a/confidence_chronograms/templates/funcionario.html +++ /dev/null @@ -1,97 +0,0 @@ -{% extends "base-funcionario.html" %} - -{% block content %} -
-
-

Funcionário

-
{% csrf_token %} - -
- Dados do Funcionário -

- -

-

- -

-
- -
- Endereço -

- -

-

- -

-

- -

-

- -

- -
- - -
-
-
- - -{% endblock %} \ No newline at end of file diff --git a/confidencechronogram/__init__.py b/confidencechronogram/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/confidence_chronogram/asgi.py b/confidencechronogram/asgi.py similarity index 69% rename from confidence_chronogram/asgi.py rename to confidencechronogram/asgi.py index ceaad124..9576df18 100644 --- a/confidence_chronogram/asgi.py +++ b/confidencechronogram/asgi.py @@ -1,5 +1,5 @@ """ -ASGI config for confidence_chronogram project. +ASGI config for confidencechronogram project. It exposes the ASGI callable as a module-level variable named ``application``. @@ -11,6 +11,6 @@ from django.core.asgi import get_asgi_application -os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'confidence_chronogram.settings') +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'confidencechronogram.settings') application = get_asgi_application() diff --git a/confidence_chronogram/settings.py b/confidencechronogram/settings.py similarity index 59% rename from confidence_chronogram/settings.py rename to confidencechronogram/settings.py index ef47e0c7..74a7cf22 100644 --- a/confidence_chronogram/settings.py +++ b/confidencechronogram/settings.py @@ -1,15 +1,3 @@ -""" -Django settings for confidence_chronogram project. - -Generated by 'django-admin startproject' using Django 3.0.2. - -For more information on this file, see -https://docs.djangoproject.com/en/3.0/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/3.0/ref/settings/ -""" - import os from decouple import config @@ -41,21 +29,26 @@ 'django.contrib.messages', 'django.contrib.staticfiles', #my apps - 'confidence_chronograms', - 'account', + 'apps.confidencechronograms', + 'apps.account', + "crispy_forms", + 'bootstrapform', ] +CRISPY_TEMPLATE_PACK = 'bootstrap4' + MIDDLEWARE = [ - 'django.middleware.security.SecurityMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.clickjacking.XFrameOptionsMiddleware', + "django.middleware.security.SecurityMiddleware", + "whitenoise.middleware.WhiteNoiseMiddleware", + "django.contrib.sessions.middleware.SessionMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.clickjacking.XFrameOptionsMiddleware", ] -ROOT_URLCONF = 'confidence_chronogram.urls' +ROOT_URLCONF = 'confidencechronogram.urls' TEMPLATES = [ { @@ -73,15 +66,28 @@ }, ] -WSGI_APPLICATION = 'confidence_chronogram.wsgi.application' +WSGI_APPLICATION = 'confidencechronogram.wsgi.application' # Database # https://docs.djangoproject.com/en/3.0/ref/settings/#databases -default_dburl = 'sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3') -DATABASES = { 'default': config('DATABASE_URL', default=default_dburl, cast=dburl), } +#default_dburl = 'sqlite:///' + os.path.join(BASE_DIR, 'db.sqlite3') +#DATABASES = { 'default': config('DATABASE_URL', default=default_dburl, cast=dburl), } + +DATABASES = { + "default": { + "ENGINE": "django.db.backends.mysql", + "NAME": "db_confidence", + "USER": "root", + "PASSWORD": "Ads_12345", + "HOST": "localhost", + "PORT": "3306", + "OPTIONS": {"init_command": "SET sql_mode='STRICT_TRANS_TABLES'",}, + } +} + # Password validation # https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators @@ -119,10 +125,26 @@ # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/3.0/howto/static-files/ -STATIC_URL = '/static/' +STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') +STATIC_TMP = os.path.join(BASE_DIR, "static") +STATIC_URL = "/static/" -STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') +os.makedirs(STATIC_TMP, exist_ok=True) +os.makedirs(STATIC_ROOT, exist_ok=True) + +STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")] + +MEDIA_ROOT = os.path.join(BASE_DIR, "media") + +MEDIA_URL = "/media/" + +LOGIN_REDIRECT_URL = '/' +LOGOUT_REDIRECT_URL = '/' +LOGIN_URL = '/confidencechronogram/' + +STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' +#STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage" #Comentar django_heroku qndo for rodar localhost # import django_heroku diff --git a/confidencechronogram/urls.py b/confidencechronogram/urls.py new file mode 100644 index 00000000..98fcb099 --- /dev/null +++ b/confidencechronogram/urls.py @@ -0,0 +1,12 @@ +from django.contrib import admin +from django.urls import path, include +from django.conf.urls import url +from django.conf import settings +from django.conf.urls.static import static + +urlpatterns = [ + path('', include('apps.confidencechronograms.urls')), + path('admin/', admin.site.urls), + path('account/', include('apps.account.urls')), + #path('account/', include('django.contrib.auth.urls')), #para urls app_name = 'account' +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/confidencechronogram/wsgi.py b/confidencechronogram/wsgi.py new file mode 100644 index 00000000..e32240fe --- /dev/null +++ b/confidencechronogram/wsgi.py @@ -0,0 +1,9 @@ +import os + +from django.core.wsgi import get_wsgi_application + +from dj_static import Cling + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'confidencechronogram.settings') + +application = Cling(get_wsgi_application()) diff --git a/db.sqlite3 b/db.sqlite3 index cc8b08896eae5d724b4fdf5762be0100ceed4d84..96f9eeb66f418491c427b701573bfd11217ddf51 100644 GIT binary patch delta 8476 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 diff --git a/manage.py b/manage.py index dcc36505..78bd59b8 100755 --- a/manage.py +++ b/manage.py @@ -5,7 +5,7 @@ def main(): - os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'confidence_chronogram.settings') + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'confidencechronogram.settings') try: from django.core.management import execute_from_command_line except ImportError as exc: diff --git a/node_modules/frappe-gantt/README.md b/node_modules/frappe-gantt/README.md index 50ca4b5f..c3683fee 100644 --- a/node_modules/frappe-gantt/README.md +++ b/node_modules/frappe-gantt/README.md @@ -1,5 +1,5 @@
- +

Frappe Gantt

A simple, interactive, modern gantt chart library for the web

diff --git a/node_modules/frappe-gantt/package.json b/node_modules/frappe-gantt/package.json index 97ba7d8b..3dd34573 100755 --- a/node_modules/frappe-gantt/package.json +++ b/node_modules/frappe-gantt/package.json @@ -1,8 +1,8 @@ { "_from": "frappe-gantt", - "_id": "frappe-gantt@0.3.0", + "_id": "frappe-gantt@0.5.0", "_inBundle": false, - "_integrity": "sha512-19rJUJ6UfAN7LPHHhVtYjff0mdyat/mwMW+PAXp5s1211QZ4loi+TkuGgRY9n1r9xAI/VlGoYHUehHdYZge3aQ==", + "_integrity": "sha512-RAskVuBmnTcPJXh87oVhYmnNGy/9lvZlLHGui8QFB8yRBuUjzpZoZfZ+hKmDtBDmWNrE2/LRta06W5WmhTzzWQ==", "_location": "/frappe-gantt", "_phantomChildren": {}, "_requested": { @@ -19,10 +19,10 @@ "#USER", "/" ], - "_resolved": "https://registry.npmjs.org/frappe-gantt/-/frappe-gantt-0.3.0.tgz", - "_shasum": "0c718be2a5b5602be4ceb35ecc2093f9af59bea2", + "_resolved": "https://registry.npmjs.org/frappe-gantt/-/frappe-gantt-0.5.0.tgz", + "_shasum": "4dc7aa125f318efea64b4ae0e38f67a720238c1d", "_spec": "frappe-gantt", - "_where": "/home/cesar/confidence_chronogram", + "_where": "C:\\Users\\Cesar\\Documents\\confidence_chronogram", "author": { "name": "Faris Ansari" }, @@ -41,7 +41,7 @@ "jest": "^22.2.1", "prettier": "1.10.2", "rollup": "^0.55.3", - "rollup-plugin-sass": "^0.5.3", + "rollup-plugin-sass": "^1.2.2", "rollup-plugin-uglify": "^3.0.0" }, "eslintIgnore": [ @@ -71,5 +71,5 @@ "test": "jest", "test:watch": "jest --watch" }, - "version": "0.3.0" + "version": "0.5.0" } diff --git a/node_modules/frappe-gantt/src/bar.js b/node_modules/frappe-gantt/src/bar.js index 7e0868e4..c9240df0 100644 --- a/node_modules/frappe-gantt/src/bar.js +++ b/node_modules/frappe-gantt/src/bar.js @@ -181,24 +181,29 @@ export default class Bar { return; } - if (e.type === 'click') { - this.gantt.trigger_event('click', [this.task]); - } - + this.show_popup(); this.gantt.unselect_all(); - this.group.classList.toggle('active'); + this.group.classList.add('active'); + }); - this.show_popup(); + $.on(this.group, 'dblclick', e => { + if (this.action_completed) { + // just finished a move action, wait for a few seconds + return; + } + + this.gantt.trigger_event('click', [this.task]); }); } show_popup() { if (this.gantt.bar_being_dragged) return; - const start_date = date_utils.format(this.task._start, 'MMM D'); + const start_date = date_utils.format(this.task._start, 'MMM D', this.gantt.options.language); const end_date = date_utils.format( date_utils.add(this.task._end, -1, 'second'), - 'MMM D' + 'MMM D', + this.gantt.options.language ); const subtitle = start_date + ' - ' + end_date; @@ -206,7 +211,7 @@ export default class Bar { target_element: this.$bar, title: this.task.name, subtitle: subtitle, - task: this.task + task: this.task, }); } diff --git a/node_modules/frappe-gantt/src/date_utils.js b/node_modules/frappe-gantt/src/date_utils.js index 6b164ca4..a51feca2 100644 --- a/node_modules/frappe-gantt/src/date_utils.js +++ b/node_modules/frappe-gantt/src/date_utils.js @@ -21,6 +21,20 @@ const month_names = { 'November', 'December' ], + es: [ + 'Enero', + 'Febrero', + 'Marzo', + 'Abril', + 'Mayo', + 'Junio', + 'Julio', + 'Agosto', + 'Septiembre', + 'Octubre', + 'Noviembre', + 'Diciembre' + ], ru: [ 'Январь', 'Февраль', @@ -34,6 +48,62 @@ const month_names = { 'Октябрь', 'Ноябрь', 'Декабрь' + ], + ptBr: [ + 'Janeiro', + 'Fevereiro', + 'Março', + 'Abril', + 'Maio', + 'Junho', + 'Julho', + 'Agosto', + 'Setembro', + 'Outubro', + 'Novembro', + 'Dezembro' + ], + fr: [ + 'Janvier', + 'Février', + 'Mars', + 'Avril', + 'Mai', + 'Juin', + 'Juillet', + 'Août', + 'Septembre', + 'Octobre', + 'Novembre', + 'Décembre' + ], + tr: [ + 'Ocak', + 'Şubat', + 'Mart', + 'Nisan', + 'Mayıs', + 'Haziran', + 'Temmuz', + 'Ağustos', + 'Eylül', + 'Ekim', + 'Kasım', + 'Aralık' + ], + zh: [ + '一月', + '二月', + '三月', + '四月', + '五月', + '六月', + '七月', + '八月', + '九月', + '十月', + '十一月', + '十二月' ] }; diff --git a/node_modules/frappe-gantt/src/index.js b/node_modules/frappe-gantt/src/index.js index 209b3f0e..97770967 100644 --- a/node_modules/frappe-gantt/src/index.js +++ b/node_modules/frappe-gantt/src/index.js @@ -6,6 +6,15 @@ import Popup from './popup'; import './gantt.scss'; +const VIEW_MODE = { + QUARTER_DAY: 'Quarter Day', + HALF_DAY: 'Half Day', + DAY: 'Day', + WEEK: 'Week', + MONTH: 'Month', + YEAR: 'Year' +}; + export default class Gantt { constructor(wrapper, tasks, options) { this.setup_wrapper(wrapper); @@ -68,14 +77,7 @@ export default class Gantt { header_height: 50, column_width: 30, step: 24, - view_modes: [ - 'Quarter Day', - 'Half Day', - 'Day', - 'Week', - 'Month', - 'Year' - ], + view_modes: [...Object.values(VIEW_MODE)], bar_height: 20, bar_corner_radius: 3, arrow_curve: 5, @@ -180,22 +182,22 @@ export default class Gantt { update_view_scale(view_mode) { this.options.view_mode = view_mode; - if (view_mode === 'Day') { + if (view_mode === VIEW_MODE.DAY) { this.options.step = 24; this.options.column_width = 38; - } else if (view_mode === 'Half Day') { + } else if (view_mode === VIEW_MODE.HALF_DAY) { this.options.step = 24 / 2; this.options.column_width = 38; - } else if (view_mode === 'Quarter Day') { + } else if (view_mode === VIEW_MODE.QUARTER_DAY) { this.options.step = 24 / 4; this.options.column_width = 38; - } else if (view_mode === 'Week') { + } else if (view_mode === VIEW_MODE.WEEK) { this.options.step = 24 * 7; this.options.column_width = 140; - } else if (view_mode === 'Month') { + } else if (view_mode === VIEW_MODE.MONTH) { this.options.step = 24 * 30; this.options.column_width = 120; - } else if (view_mode === 'Year') { + } else if (view_mode === VIEW_MODE.YEAR) { this.options.step = 24 * 365; this.options.column_width = 120; } @@ -223,13 +225,13 @@ export default class Gantt { this.gantt_end = date_utils.start_of(this.gantt_end, 'day'); // add date padding on both sides - if (this.view_is(['Quarter Day', 'Half Day'])) { + if (this.view_is([VIEW_MODE.QUARTER_DAY, VIEW_MODE.HALF_DAY])) { this.gantt_start = date_utils.add(this.gantt_start, -7, 'day'); this.gantt_end = date_utils.add(this.gantt_end, 7, 'day'); - } else if (this.view_is('Month')) { + } else if (this.view_is(VIEW_MODE.MONTH)) { this.gantt_start = date_utils.start_of(this.gantt_start, 'year'); this.gantt_end = date_utils.add(this.gantt_end, 1, 'year'); - } else if (this.view_is('Year')) { + } else if (this.view_is(VIEW_MODE.YEAR)) { this.gantt_start = date_utils.add(this.gantt_start, -2, 'year'); this.gantt_end = date_utils.add(this.gantt_end, 2, 'year'); } else { @@ -246,9 +248,9 @@ export default class Gantt { if (!cur_date) { cur_date = date_utils.clone(this.gantt_start); } else { - if (this.view_is('Year')) { + if (this.view_is(VIEW_MODE.YEAR)) { cur_date = date_utils.add(cur_date, 1, 'year'); - } else if (this.view_is('Month')) { + } else if (this.view_is(VIEW_MODE.MONTH)) { cur_date = date_utils.add(cur_date, 1, 'month'); } else { cur_date = date_utils.add( @@ -377,19 +379,19 @@ export default class Gantt { for (let date of this.dates) { let tick_class = 'tick'; // thick tick for monday - if (this.view_is('Day') && date.getDate() === 1) { + if (this.view_is(VIEW_MODE.DAY) && date.getDate() === 1) { tick_class += ' thick'; } // thick tick for first week if ( - this.view_is('Week') && + this.view_is(VIEW_MODE.WEEK) && date.getDate() >= 1 && date.getDate() < 8 ) { tick_class += ' thick'; } // thick ticks for quarters - if (this.view_is('Month') && (date.getMonth() + 1) % 3 === 0) { + if (this.view_is(VIEW_MODE.MONTH) && (date.getMonth() + 1) % 3 === 0) { tick_class += ' thick'; } @@ -399,7 +401,7 @@ export default class Gantt { append_to: this.layers.grid }); - if (this.view_is('Month')) { + if (this.view_is(VIEW_MODE.MONTH)) { tick_x += date_utils.get_days_in_month(date) * this.options.column_width / @@ -412,7 +414,7 @@ export default class Gantt { make_grid_highlights() { // highlight today's date - if (this.view_is('Day')) { + if (this.view_is(VIEW_MODE.DAY)) { const x = date_utils.diff(date_utils.today(), this.gantt_start, 'hour') / this.options.step * @@ -817,7 +819,7 @@ export default class Gantt { rem, position; - if (this.view_is('Week')) { + if (this.view_is(VIEW_MODE.WEEK)) { rem = dx % (this.options.column_width / 7); position = odx - @@ -825,7 +827,7 @@ export default class Gantt { (rem < this.options.column_width / 14 ? 0 : this.options.column_width / 7); - } else if (this.view_is('Month')) { + } else if (this.view_is(VIEW_MODE.MONTH)) { rem = dx % (this.options.column_width / 30); position = odx - @@ -920,6 +922,8 @@ export default class Gantt { } } +Gantt.VIEW_MODE = VIEW_MODE; + function generate_id(task) { return ( task.name + diff --git a/package-lock.json b/package-lock.json index 999bda41..de6e1c72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,9 +3,9 @@ "lockfileVersion": 1, "dependencies": { "frappe-gantt": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/frappe-gantt/-/frappe-gantt-0.3.0.tgz", - "integrity": "sha512-19rJUJ6UfAN7LPHHhVtYjff0mdyat/mwMW+PAXp5s1211QZ4loi+TkuGgRY9n1r9xAI/VlGoYHUehHdYZge3aQ==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/frappe-gantt/-/frappe-gantt-0.5.0.tgz", + "integrity": "sha512-RAskVuBmnTcPJXh87oVhYmnNGy/9lvZlLHGui8QFB8yRBuUjzpZoZfZ+hKmDtBDmWNrE2/LRta06W5WmhTzzWQ==" } } } diff --git a/runtime.txt b/runtime.txt index 724c203e..a01373a3 100644 --- a/runtime.txt +++ b/runtime.txt @@ -1 +1 @@ -python-3.8.2 +python-3.7.2