diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..99cf7ae --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,19 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python Debugger: Django", + "type": "debugpy", + "request": "launch", + "program": "${workspaceFolder}\\manage.py", + "args": [ + "runserver" + ], + "django": true, + "autoStartBrowser": false + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cad7657 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "cmake.configureOnOpen": false +} \ No newline at end of file diff --git a/index.html b/index.html index a5b4ad9..0651ce5 100644 --- a/index.html +++ b/index.html @@ -1,6 +1,73 @@ - - - - - - \ No newline at end of file + + + + + + Servicing Ticket + + + +
+
+ Company Logo +
+
+
+ {{ ticket.name }} +
+
+ {{ticket.phone}} +
+
+ {{ticket.date}} +
+
+ {% if ticket.description %} {{ ticket.description }} {% else %} Нема опис {% endif %} +
+
+
+
+
+ {{ ticket.name }} +
+
+ {{ ticket.phone }} +
+
+ {{ ticket.date }} +
+
+ {% if ticket.description %} {{ ticket.description }} {% else %} Нема опис {% endif %} +
+
+
+ + \ No newline at end of file diff --git a/serviceCRM/filter.py b/serviceCRM/filter.py new file mode 100644 index 0000000..2bd3373 --- /dev/null +++ b/serviceCRM/filter.py @@ -0,0 +1,14 @@ +from .models import Insert +import django_filters as filters +from django_filters import FilterSet + +class DoneTable(FilterSet): + class Meta: + model = Insert + fields = ["done"] + + def filter_done(self, queryset, name, value): + if value: + return queryset.filter(done=True) + else: + return queryset.filter(done=False) \ No newline at end of file diff --git a/serviceCRM/forms.py b/serviceCRM/forms.py index 2fca7f4..399fc51 100644 --- a/serviceCRM/forms.py +++ b/serviceCRM/forms.py @@ -20,7 +20,15 @@ class InputForm(forms.ModelForm): field_order = ["name", "phone", "date", "description", "done"] - # name = forms.CharField(label="Name", max_length=30) - # phone = forms.CharField(label="Phone", max_length=30) - # date = forms.DateField() - # description = forms.CharField(label="Write description of the problem...", max_length=300) +# class EditForm(forms.ModelForm): +# class Meta: +# model = Insert +# fields = {"name", "phone", "description", "done"} +# labels = {'name': "Name", 'phone': "Phone", 'description': "Description", 'done': "Done"} +# widgets = { +# 'name': forms.TextInput(attrs={'class': 'form-control'}), +# 'phone': forms.TextInput(attrs={'class': 'form-control'}), +# 'description': forms.Textarea(attrs={'class': 'form-control'}) +# } + +# field_order = ["name", "phone", "description", "done"] \ No newline at end of file diff --git a/serviceCRM/static/fer-logo.png b/serviceCRM/static/fer-logo.png new file mode 100644 index 0000000..851a9b9 Binary files /dev/null and b/serviceCRM/static/fer-logo.png differ diff --git a/serviceCRM/tables.py b/serviceCRM/tables.py index 02aaa37..7a0decd 100644 --- a/serviceCRM/tables.py +++ b/serviceCRM/tables.py @@ -1,13 +1,22 @@ import django_tables2 as tables +from django_tables2 import TemplateColumn +from django_filters import FilterSet +from django.db.models.query import QuerySet # Add missing import from .models import Insert -from django_tables2.utils import A - class InsertTable(tables.Table): + + actions = TemplateColumn(template_code='Edit') class Meta: model = Insert - template_name = "list.html" - sequence = ("name", "phone", "description","date","done" ) - delete = tables.LinkColumn('main:delete_item', args=[A('pk')], attrs={ - 'a': {'class': 'btn'} - }) + fields = ("id","name","phone","description","date","done") + + +class DoneInsertTable(InsertTable): + class Meta: + model = Insert + fields = ("id","name","phone","description","date","done") + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + print(self.data) diff --git a/serviceCRM/templates/list.html b/serviceCRM/templates/list.html index 52a7f9f..7e0b6db 100644 --- a/serviceCRM/templates/list.html +++ b/serviceCRM/templates/list.html @@ -3,6 +3,6 @@ {% load render_table from django_tables2 %} - {% render_table table %} - + {% render_table object_list %} + {% endblock%} \ No newline at end of file diff --git a/serviceCRM/templates/serviceCRM/delete.html b/serviceCRM/templates/serviceCRM/delete.html new file mode 100644 index 0000000..e69de29 diff --git a/serviceCRM/templates/serviceCRM/done.html b/serviceCRM/templates/serviceCRM/done.html new file mode 100644 index 0000000..2414505 --- /dev/null +++ b/serviceCRM/templates/serviceCRM/done.html @@ -0,0 +1,6 @@ +{% extends 'base.html' %} +{% load render_table from django_tables2 %} + +{% block content %} + {% render_table table %} +{%endblock%} \ No newline at end of file diff --git a/serviceCRM/templates/serviceCRM/edit.html b/serviceCRM/templates/serviceCRM/edit.html index 0f5d396..f7b2e22 100644 --- a/serviceCRM/templates/serviceCRM/edit.html +++ b/serviceCRM/templates/serviceCRM/edit.html @@ -1 +1,13 @@ -Edit +{% extends 'base.html' %} +{% block title %}Edit{% endblock %} +{% block content %} +{% csrf_token %} +
+
+ {% csrf_token %} + {{form.as_p}} + + +
+
+{% endblock%} \ No newline at end of file diff --git a/serviceCRM/templates/serviceCRM/list.html b/serviceCRM/templates/serviceCRM/list.html index 52a7f9f..bfdcac4 100644 --- a/serviceCRM/templates/serviceCRM/list.html +++ b/serviceCRM/templates/serviceCRM/list.html @@ -1,8 +1,5 @@ {% extends 'base.html' %} +{% load render_table from django_tables2 %} {% block content %} - {% load render_table from django_tables2 %} - - {% render_table table %} - {% endblock%} \ No newline at end of file diff --git a/serviceCRM/templates/serviceCRM/nalog.html b/serviceCRM/templates/serviceCRM/nalog.html new file mode 100644 index 0000000..2a88587 --- /dev/null +++ b/serviceCRM/templates/serviceCRM/nalog.html @@ -0,0 +1,83 @@ +{% block content %} +{% load static %} + + + + + Servicing Ticket + + + +
+
+ Company Logo +
+
+
+ {{ name }} +
+
+ {{phone}} +
+
+ {{date}} +
+
+ {{ desc }} +
+
+
+
+
+ {{ name }} +
+
+ {{ phone }} +
+
+ {{ date }} +
+
+ {{ desc }} +
+
+
+ + +{% endblock %} diff --git a/serviceCRM/urls.py b/serviceCRM/urls.py index 15924fe..3b3ca10 100644 --- a/serviceCRM/urls.py +++ b/serviceCRM/urls.py @@ -19,8 +19,11 @@ from django.urls import path import serviceCRM.views as view urlpatterns = [ - path("", view.TableView.as_view(), name="index"), + path("", view.InsertListView.as_view(), name="index"), path('admin/', admin.site.urls), - path("/", view.ReportById.ReportById, name="detail"), path("insert/", view.InsertNew.insert, name="insert"), - path("done//", view.done, name="done"),] + path("edit//", view.Update.as_view(), name="update"), + path("nalog//", view.Nalog, name="nalog"), + path("delete//", view.Delete.Delete, name="delete"), + path("done/", view.Done.as_view(), name="done"), + ] diff --git a/serviceCRM/views.py b/serviceCRM/views.py index da3b605..0661910 100644 --- a/serviceCRM/views.py +++ b/serviceCRM/views.py @@ -1,36 +1,23 @@ from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import get_object_or_404, render from django.views import generic +from django.views.generic import UpdateView from .forms import InputForm -from .tables import InsertTable from .models import Insert +from .tables import DoneInsertTable, InsertTable from django_tables2 import SingleTableView - - -# from django.template import loader - -def index(request): - if request.user.is_authenticated: - return HttpResponse("You are logged in") - proba = Insert.objects.order_by("date") - return HttpResponse(proba) - else: - return HttpResponse("You are not logged in") - - -# def detail(request,question_id): -# req = get_object_or_404(Insert,id=question_id) -# context = {"name":req.name, "phone":req.phone,"desc":req.description,"date":req.date} -# return HttpResponse(render(request,"serviceCRM/id.html", context)) -# -class ReportById(generic.DetailView): +class InsertListView(SingleTableView): model = Insert - template_name = "serviceCRM/id.html" + table_class = InsertTable + template_name = 'serviceCRM/list.html' - def ReportById(request, question_id): - req = get_object_or_404(Insert, id=question_id) - context = {"name": req.name, "phone": req.phone, "desc": req.description, "date": req.date} - return HttpResponse(f"Report ID: {question_id} \nName: {req.name} \nPhone: {req.phone} \nDescription: {req.description} \nDate: {req.date} \nDone: {req.done}") +# class ReportById(generic.DetailView): +# model = Insert +# template_name = "serviceCRM/id.html" +# def ReportById(request, question_id): +# req = get_object_or_404(Insert, id=question_id) +# context = {"name": req.name, "phone": req.phone, "desc": req.description, "date": req.date} +# return HttpResponse(f"Report ID: {question_id} \nName: {req.name} \nPhone: {req.phone} \nDescription: {req.description} \nDate: {req.date} \nDone: {req.done}") class InsertNew(generic.View): model = Insert @@ -40,23 +27,42 @@ class InsertNew(generic.View): if request.method == 'POST': form = InputForm(request.POST) if form.is_valid(): - form.save() + ticket=form.save() print("Raboti") - return HttpResponseRedirect("/admin/") + return HttpResponseRedirect(f"/nalog/{ticket.id}/") else: form = InputForm() return render(request, InsertNew.template_name, {'form': form}) - -class TableView(SingleTableView): - table_class = Insert - queryset = Insert.objects.all() - template_name = "serviceCRM/list.html" - +class Update(UpdateView): + model = Insert + template_name = "serviceCRM/edit.html" + fields = ["name", "phone", "description", "done"] + success_url = '/' def done(request, id): req = get_object_or_404(Insert, id=id) if req.isDone(): return HttpResponse("Done") return HttpResponse("Not Done") + +def Nalog(request, id): + data = Insert.objects.get(id=id) + template = "serviceCRM/nalog.html" + context = {"name": data.name, "phone": data.phone, "desc": data.description, "date": data.date} + return render(request, template, context) + +class Delete(): + model = Insert + def Delete(request, id): + req = get_object_or_404(Insert, id=id) + req.delete() + return HttpResponseRedirect("/") + +class Done(SingleTableView): + model = Insert + table_data = Insert.objects.filter(done=True) + table_class = DoneInsertTable + template_name = 'serviceCRM/done.html' +