added parent edit page
This commit is contained in:
parent
d13127a273
commit
87607da643
@ -29,6 +29,7 @@ urlpatterns = [
|
||||
path("parents/", views.ParentsView.as_view(), name="parents"),
|
||||
path("table/<date:start_date>/<date:end_date>/", views.get_table_data, name="table_data"),
|
||||
path("table/", views.table_view, name="table"),
|
||||
path("parents/<int:id>/", views.parent_view, name="parent"),
|
||||
path("projects/<int:id>/", views.project_view, name="project"),
|
||||
path("projects/<int:id>/set_parent", views.set_parent, name="set_parent"),
|
||||
path("stats/by-month/<int:year>/<int:month>/", views.get_stats_by_month, name="stats_by_month"),
|
||||
|
@ -1,8 +1,13 @@
|
||||
from django import forms
|
||||
|
||||
from dispatcher.models import Project
|
||||
from dispatcher.models import Project, Parent
|
||||
|
||||
|
||||
class ParentForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Parent
|
||||
fields = "__all__"
|
||||
|
||||
class ProjectForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Project
|
||||
|
18
dispatcher/migrations/0006_alter_parent_project_num.py
Normal file
18
dispatcher/migrations/0006_alter_parent_project_num.py
Normal file
@ -0,0 +1,18 @@
|
||||
# Generated by Django 5.1.5 on 2025-02-02 14:32
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('dispatcher', '0005_clocking'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='parent',
|
||||
name='project_num',
|
||||
field=models.CharField(blank=True, max_length=32),
|
||||
),
|
||||
]
|
@ -1,7 +1,7 @@
|
||||
from django.db import models
|
||||
|
||||
class Parent(models.Model):
|
||||
project_num = models.CharField(max_length=32)
|
||||
project_num = models.CharField(max_length=32, blank=True)
|
||||
name = models.CharField(max_length=256)
|
||||
|
||||
def __str__(self):
|
||||
|
30
dispatcher/static/edit.css
Normal file
30
dispatcher/static/edit.css
Normal file
@ -0,0 +1,30 @@
|
||||
.container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
max-width: 30em;
|
||||
align-self: center;
|
||||
gap: 2em;
|
||||
}
|
||||
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1.6em;
|
||||
}
|
||||
|
||||
form > div {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 0.4em;
|
||||
}
|
||||
|
||||
form label {
|
||||
font-style: italic;
|
||||
color: var(--light2);
|
||||
}
|
||||
|
||||
form button {
|
||||
align-self: center;
|
||||
padding: 0.4em 1.2em;
|
||||
}
|
8
dispatcher/static/parents.js
Normal file
8
dispatcher/static/parents.js
Normal file
@ -0,0 +1,8 @@
|
||||
window.addEventListener("load", () => {
|
||||
document.querySelectorAll(".list li").forEach(row => {
|
||||
let id = row.dataset.id
|
||||
row.querySelector("button.edit").addEventListener("click", () => {
|
||||
window.location.href = `${id}/`
|
||||
})
|
||||
})
|
||||
})
|
@ -11,7 +11,7 @@ window.addEventListener("load", () => {
|
||||
})
|
||||
})
|
||||
|
||||
row.querySelector("button.see").addEventListener("click", () => {
|
||||
row.querySelector("button.edit").addEventListener("click", () => {
|
||||
window.location.href = `${id}/`
|
||||
})
|
||||
})
|
||||
|
@ -9,7 +9,7 @@ from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.decorators.http import require_POST
|
||||
|
||||
from dispatcher.core import import_tasks
|
||||
from dispatcher.forms import ProjectForm, ImportForm
|
||||
from dispatcher.forms import ProjectForm, ImportForm, ParentForm
|
||||
from dispatcher.models import Project, Parent, Clocking
|
||||
from dispatcher.serializers import ClockingSerializer
|
||||
|
||||
@ -28,14 +28,30 @@ def projects_view(request):
|
||||
}
|
||||
return render(request, "projects.html", context)
|
||||
|
||||
|
||||
def parent_view(request, id):
|
||||
parent = get_object_or_404(Parent, id=id)
|
||||
context = {
|
||||
"class": "parent",
|
||||
"id": id
|
||||
}
|
||||
form = ParentForm(request.POST or None, request.FILES or None, instance=parent)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
context["form"] = ParentForm(instance=parent)
|
||||
return render(request, "edit.html", context)
|
||||
|
||||
def project_view(request, id):
|
||||
project = get_object_or_404(Project, id=id)
|
||||
context = {}
|
||||
context = {
|
||||
"class": "project",
|
||||
"id": id
|
||||
}
|
||||
form = ProjectForm(request.POST or None, request.FILES or None, instance=project)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
context["form"] = ProjectForm(instance=project)
|
||||
return render(request, "project.html", context)
|
||||
return render(request, "edit.html", context)
|
||||
|
||||
def table_view(request):
|
||||
return render(request, "table.html")
|
||||
|
16
templates/edit.html
Normal file
16
templates/edit.html
Normal file
@ -0,0 +1,16 @@
|
||||
{% extends "base.html" %}
|
||||
{% load static %}
|
||||
{% block title %}Editing {{ class }} {{ id }}{% endblock %}
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="{% static "edit.css" %}">
|
||||
{% endblock %}
|
||||
{% block main %}
|
||||
<div class="container">
|
||||
<h2>Editing {{ class }} {{ id }}</h2>
|
||||
<form action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form }}
|
||||
<button type="submit">Save</button>
|
||||
</form>
|
||||
</div>
|
||||
{% endblock %}
|
@ -2,6 +2,7 @@
|
||||
{% load static %}
|
||||
{% block head %}
|
||||
<link rel="stylesheet" href="{% static "list.css" %}">
|
||||
{% block extra-head %}{% endblock %}
|
||||
{% endblock %}
|
||||
{% block main %}
|
||||
<ul class="list">
|
||||
|
@ -2,6 +2,9 @@
|
||||
{% load static %}
|
||||
{% block title %}Parents{% endblock %}
|
||||
{% block element_name %}parent{% endblock %}
|
||||
{% block extra-head %}
|
||||
<script src="{% static "parents.js" %}"></script>
|
||||
{% endblock %}
|
||||
{% block element %}
|
||||
<div class="name">{{ element.name }}</div>
|
||||
<div class="project_num">({{ element.project_num }})</div>
|
||||
|
@ -1,10 +0,0 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block main %}
|
||||
<h2>Editing project</h2>
|
||||
<form action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form }}
|
||||
<button type="submit">Save</button>
|
||||
</form>
|
||||
{% endblock %}
|
@ -29,7 +29,7 @@
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
<button class="see">See</button>
|
||||
<button class="edit">Edit</button>
|
||||
<button class="delete">Delete</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
Loading…
x
Reference in New Issue
Block a user