Skip to content

Commit 2815a84

Browse files
committed
new
1 parent 22c461e commit 2815a84

File tree

381 files changed

+305464
-1
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

381 files changed

+305464
-1
lines changed

.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/venv
2+
/App_User/__pycache__
3+
/App_Userlog/__pycache__
4+
/.gitattributes

App_Project/__init__.py

Whitespace-only changes.
201 Bytes
Binary file not shown.
157 Bytes
Binary file not shown.
Binary file not shown.
1.01 KB
Binary file not shown.
581 Bytes
Binary file not shown.
472 Bytes
Binary file not shown.
4.59 KB
Binary file not shown.
3.8 KB
Binary file not shown.
6.99 KB
Binary file not shown.
6.62 KB
Binary file not shown.
1.45 KB
Binary file not shown.
1.36 KB
Binary file not shown.
10.8 KB
Binary file not shown.
9.86 KB
Binary file not shown.

App_Project/admin.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from django.contrib import admin
2+
from App_Project import models
3+
# Register your models here.
4+
5+
admin.site.register(models.Project)
6+
admin.site.register(models.Task)
7+
admin.site.register(models.CompletedTask)
8+
admin.site.register(models.IncompletedTask)
9+
admin.site.register(models.AssignedTask)
10+
admin.site.register(models.WorkingTask)
11+
admin.site.register(models.EmployeeTask)

App_Project/apps.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class AppProjectConfig(AppConfig):
5+
default_auto_field = 'django.db.models.BigAutoField'
6+
name = 'App_Project'

App_Project/forms.py

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
from tkinter import Widget
2+
from django import forms
3+
from django.core.exceptions import ValidationError
4+
from App_Project.models import Task, Project, EmployeeTask, EmployeeProject
5+
from App_User.models import Employee
6+
# from django.contrib.admin.widgets import AdminDateWidget
7+
from tempus_dominus.widgets import DateTimePicker
8+
from django.forms import DateInput, DateTimeInput
9+
10+
11+
class ProjectForm(forms.ModelForm):
12+
# start_date = forms.DateField(widget=AdminDateWidget)
13+
# start_date = forms.DateTimeField(widget=DateTimePicker)
14+
class Meta:
15+
model = Project
16+
fields = ('name', 'description', 'start_date', 'end_date', 'manager')
17+
widgets = {
18+
'start_date': DateInput(attrs={'type': 'date', 'placeholder': 'YYYY-MM-DD'}),
19+
'end_date': DateInput(attrs={'type': 'date', 'placeholder': 'YYYY-MM-DD'}),
20+
# 'start_date': DateTimeInput(attrs={'type': 'datetime-local', 'placeholder': 'YYYY-MM-DD HH:MM:SS'}),
21+
# 'end_date': DateTimeInput(attrs={'type': 'datetime-local', 'placeholder': 'YYYY-MM-DD HH:MM:SS'}),
22+
}
23+
24+
class TaskForm(forms.ModelForm):
25+
class Meta:
26+
model = Task
27+
# fields = ('__all__')
28+
exclude = ('completed_by',)
29+
widgets = {
30+
'start_date': DateInput(attrs={'type': 'date', 'placeholder': 'YYYY-MM-DD'}),
31+
'end_date': DateInput(attrs={'type': 'date', 'placeholder': 'YYYY-MM-DD'}),
32+
}
33+
34+
class EmployeeProjectForm(forms.ModelForm):
35+
class Meta:
36+
model = EmployeeProject
37+
fields = ('employees',)
38+
widgets = {'employees': forms.CheckboxSelectMultiple}
39+
40+
41+
class EmployeeTaskForm(forms.ModelForm):
42+
class Meta:
43+
model = EmployeeTask
44+
fields = ['employees']
45+
46+
class AssignTaskForm(forms.Form):
47+
employees = forms.ModelMultipleChoiceField(
48+
queryset=Employee.objects.all(),
49+
widget=forms.CheckboxSelectMultiple,
50+
label='Employees'
51+
)
52+
53+
def __init__(self, *args, **kwargs):
54+
self.task = kwargs.pop('task')
55+
super().__init__(*args, **kwargs)
56+
57+
def clean(self):
58+
cleaned_data = super().clean()
59+
employees = cleaned_data.get('employees')
60+
if not employees:
61+
raise ValidationError('You must select at least one employee')
62+
for employee in employees:
63+
if employee in self.task.employees.all():
64+
raise ValidationError(f'{employee} is already assigned to this task')
65+
return cleaned_data
+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Generated by Django 4.2.1 on 2023-05-14 05:08
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
initial = True
10+
11+
dependencies = [
12+
('App_User', '0001_initial'),
13+
]
14+
15+
operations = [
16+
migrations.CreateModel(
17+
name='Project',
18+
fields=[
19+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
20+
('name', models.CharField(max_length=255)),
21+
('description', models.TextField(blank=True, max_length=500, null=True)),
22+
('start_date', models.DateField()),
23+
('end_date', models.DateField()),
24+
('employees', models.ManyToManyField(related_name='projects', to='App_User.employee')),
25+
('manager', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='managed_projects', to='App_User.employee')),
26+
],
27+
),
28+
migrations.CreateModel(
29+
name='Task',
30+
fields=[
31+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
32+
('name', models.CharField(max_length=255)),
33+
('description', models.TextField(blank=True, max_length=500, null=True)),
34+
('start_date', models.DateField()),
35+
('end_date', models.DateField()),
36+
('status', models.CharField(choices=[('ASSIGNED', 'Assigned'), ('WORKING', 'Working'), ('COMPLETED', 'Completed'), ('INCOMPLETED', 'Incompleted')], default='ASSIGNED', max_length=20)),
37+
('created_at', models.DateTimeField(auto_now_add=True)),
38+
('updated_at', models.DateTimeField(auto_now=True)),
39+
('assigned_to', models.ManyToManyField(related_name='assigned_tasks', to='App_User.employee')),
40+
('completed_by', models.ManyToManyField(blank=True, related_name='completed_tasks', to='App_User.employee')),
41+
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.project')),
42+
],
43+
),
44+
migrations.CreateModel(
45+
name='WorkingTask',
46+
fields=[
47+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
48+
('created_at', models.DateTimeField(auto_now_add=True)),
49+
('assigned_to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_User.employee')),
50+
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.task')),
51+
],
52+
),
53+
migrations.CreateModel(
54+
name='IncompletedTask',
55+
fields=[
56+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
57+
('created_at', models.DateTimeField(auto_now_add=True)),
58+
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.task')),
59+
],
60+
),
61+
migrations.CreateModel(
62+
name='CompletedTask',
63+
fields=[
64+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
65+
('completed_at', models.DateTimeField(auto_now_add=True)),
66+
('completed_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_User.employee')),
67+
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.task')),
68+
],
69+
),
70+
migrations.CreateModel(
71+
name='AssignedTask',
72+
fields=[
73+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
74+
('created_at', models.DateTimeField(auto_now_add=True)),
75+
('assigned_to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_User.employee')),
76+
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.task')),
77+
],
78+
),
79+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 4.2.1 on 2023-05-15 05:17
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('App_User', '0001_initial'),
11+
('App_Project', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='EmployeeTask',
17+
fields=[
18+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19+
('created_at', models.DateTimeField(auto_now_add=True)),
20+
('employee', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_User.employee')),
21+
('task', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.task')),
22+
],
23+
),
24+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Generated by Django 4.2.1 on 2023-05-15 05:19
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('App_Project', '0002_employeetask'),
10+
]
11+
12+
operations = [
13+
migrations.RenameField(
14+
model_name='employeetask',
15+
old_name='employee',
16+
new_name='employees',
17+
),
18+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 4.2.1 on 2023-05-27 08:09
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('App_User', '0001_initial'),
11+
('App_Project', '0003_rename_employee_employeetask_employees'),
12+
]
13+
14+
operations = [
15+
migrations.CreateModel(
16+
name='EmployeeProject',
17+
fields=[
18+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19+
('created_at', models.DateTimeField(auto_now_add=True)),
20+
('employees', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_User.employee')),
21+
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='App_Project.project')),
22+
],
23+
),
24+
migrations.AddField(
25+
model_name='employeetask',
26+
name='employee_project',
27+
field=models.ForeignKey(default=0, on_delete=django.db.models.deletion.CASCADE, to='App_Project.employeeproject'),
28+
preserve_default=False,
29+
),
30+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Generated by Django 4.2.1 on 2023-06-13 04:50
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('App_Project', '0004_employeeproject_employeetask_employee_project'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='assignedtask',
16+
name='assigned_to',
17+
),
18+
migrations.RemoveField(
19+
model_name='assignedtask',
20+
name='created_at',
21+
),
22+
migrations.RemoveField(
23+
model_name='assignedtask',
24+
name='id',
25+
),
26+
migrations.RemoveField(
27+
model_name='completedtask',
28+
name='completed_at',
29+
),
30+
migrations.RemoveField(
31+
model_name='completedtask',
32+
name='completed_by',
33+
),
34+
migrations.RemoveField(
35+
model_name='completedtask',
36+
name='id',
37+
),
38+
migrations.RemoveField(
39+
model_name='incompletedtask',
40+
name='created_at',
41+
),
42+
migrations.RemoveField(
43+
model_name='incompletedtask',
44+
name='id',
45+
),
46+
migrations.RemoveField(
47+
model_name='workingtask',
48+
name='assigned_to',
49+
),
50+
migrations.RemoveField(
51+
model_name='workingtask',
52+
name='created_at',
53+
),
54+
migrations.RemoveField(
55+
model_name='workingtask',
56+
name='id',
57+
),
58+
migrations.AlterField(
59+
model_name='assignedtask',
60+
name='task',
61+
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='App_Project.task'),
62+
),
63+
migrations.AlterField(
64+
model_name='completedtask',
65+
name='task',
66+
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='App_Project.task'),
67+
),
68+
migrations.AlterField(
69+
model_name='incompletedtask',
70+
name='task',
71+
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='App_Project.task'),
72+
),
73+
migrations.AlterField(
74+
model_name='task',
75+
name='project',
76+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tasks', to='App_Project.project'),
77+
),
78+
migrations.AlterField(
79+
model_name='workingtask',
80+
name='task',
81+
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='App_Project.task'),
82+
),
83+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 4.2.1 on 2023-06-13 09:28
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('App_Project', '0005_remove_assignedtask_assigned_to_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='employeetask',
16+
name='employee_project',
17+
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='App_Project.employeeproject'),
18+
),
19+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 4.2.1 on 2023-06-13 09:42
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('App_Project', '0006_alter_employeetask_employee_project'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='employeetask',
16+
name='employee_project',
17+
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='App_Project.project'),
18+
),
19+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 4.2.2 on 2023-07-01 16:45
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('App_Project', '0007_alter_employeetask_employee_project'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='task',
15+
name='end_date',
16+
field=models.DateTimeField(),
17+
),
18+
migrations.AlterField(
19+
model_name='task',
20+
name='start_date',
21+
field=models.DateTimeField(),
22+
),
23+
]

App_Project/migrations/__init__.py

Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)