797 lines
29 KiB
Python
797 lines
29 KiB
Python
# Generated by Django 5.1.4 on 2025-01-15 05:35
|
|
|
|
import django.core.validators
|
|
import django.db.models.deletion
|
|
from decimal import Decimal
|
|
from django.conf import settings
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
("auth", "0012_alter_user_first_name_max_length"),
|
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name="AcademicYear",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("year", models.CharField(max_length=255, unique=True)),
|
|
],
|
|
options={
|
|
"verbose_name": "Academic Year",
|
|
"verbose_name_plural": "Academic Years",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Course",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("name", models.CharField(max_length=100)),
|
|
(
|
|
"level",
|
|
models.CharField(
|
|
choices=[
|
|
("basic", "Basic"),
|
|
("primary", "Primary"),
|
|
("secondary", "Secondary"),
|
|
("vocational training", "Vocational Training"),
|
|
("higher secondary", "Higher Secondary"),
|
|
("graduation", "Graduation"),
|
|
("post graduation", "Post Graduation"),
|
|
],
|
|
max_length=45,
|
|
),
|
|
),
|
|
(
|
|
"course_type",
|
|
models.CharField(
|
|
choices=[
|
|
("semester", "Semester-based"),
|
|
("yearly", "Yearly-based"),
|
|
],
|
|
max_length=10,
|
|
),
|
|
),
|
|
("duration", models.PositiveIntegerField()),
|
|
],
|
|
options={
|
|
"verbose_name": "Course",
|
|
"verbose_name_plural": "Courses",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Library",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("category", models.CharField(max_length=255)),
|
|
("book_name", models.CharField(max_length=255)),
|
|
("description", models.CharField(max_length=255)),
|
|
("publication", models.CharField(max_length=255)),
|
|
("publication_year", models.PositiveIntegerField()),
|
|
("quantity", models.PositiveIntegerField()),
|
|
(
|
|
"available",
|
|
models.CharField(choices=[("Y", "Yes"), ("N", "NO")], max_length=1),
|
|
),
|
|
("date_added", models.DateField(auto_now_add=True)),
|
|
],
|
|
options={
|
|
"verbose_name": "Library",
|
|
"verbose_name_plural": "Library",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="NewsEvent",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("title", models.CharField(max_length=255)),
|
|
("summary", models.TextField()),
|
|
(
|
|
"type",
|
|
models.CharField(
|
|
choices=[("news", "News"), ("event", "Event")], max_length=5
|
|
),
|
|
),
|
|
("created_at", models.DateTimeField(auto_now_add=True)),
|
|
],
|
|
options={
|
|
"verbose_name": "News/Event",
|
|
"verbose_name_plural": "News/Events",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Attendance",
|
|
fields=[
|
|
("id", models.AutoField(primary_key=True, serialize=False)),
|
|
("date", models.DateField()),
|
|
(
|
|
"status",
|
|
models.CharField(
|
|
choices=[("present", "Present"), ("absent", "Absent")],
|
|
max_length=10,
|
|
),
|
|
),
|
|
(
|
|
"session_year",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="app.academicyear",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Attendance",
|
|
"verbose_name_plural": "Attendance Records",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Staff",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("active_status", models.BooleanField(default=True)),
|
|
("first_name", models.CharField(max_length=255)),
|
|
(
|
|
"middle_name",
|
|
models.CharField(blank=True, max_length=255, null=True),
|
|
),
|
|
("last_name", models.CharField(max_length=255)),
|
|
("email", models.EmailField(max_length=255, unique=True)),
|
|
(
|
|
"phone",
|
|
models.CharField(
|
|
max_length=10,
|
|
validators=[
|
|
django.core.validators.RegexValidator("^\\+?1?\\d{9,15}$")
|
|
],
|
|
),
|
|
),
|
|
(
|
|
"username",
|
|
models.CharField(
|
|
blank=True, max_length=255, null=True, unique=True
|
|
),
|
|
),
|
|
("password", models.CharField(max_length=255)),
|
|
(
|
|
"gender",
|
|
models.CharField(
|
|
choices=[("M", "Male"), ("F", "Female")], max_length=1
|
|
),
|
|
),
|
|
(
|
|
"position",
|
|
models.CharField(
|
|
choices=[
|
|
("lab Assistant", "Lab Assistant"),
|
|
("librarian", "Librarian"),
|
|
("accountant", "Accountant"),
|
|
("guard", "Guard"),
|
|
("driver", "Driver"),
|
|
("helper", "Helper"),
|
|
("cleaner", "Cleaner"),
|
|
],
|
|
max_length=255,
|
|
),
|
|
),
|
|
("address", models.CharField(max_length=255)),
|
|
(
|
|
"marital_status",
|
|
models.CharField(
|
|
choices=[
|
|
("married", "Married"),
|
|
("widowed", "Widowed"),
|
|
("separated", "Separated"),
|
|
("divorced", "Divorced"),
|
|
("single", "Single"),
|
|
],
|
|
max_length=10,
|
|
),
|
|
),
|
|
("date_of_joining", models.DateField()),
|
|
("group", models.ManyToManyField(blank=True, to="auth.group")),
|
|
(
|
|
"user",
|
|
models.OneToOneField(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Staff",
|
|
"verbose_name_plural": "Staff",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Student",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("active_status", models.BooleanField(default=True)),
|
|
("first_name", models.CharField(max_length=255)),
|
|
(
|
|
"middle_name",
|
|
models.CharField(blank=True, max_length=255, null=True),
|
|
),
|
|
("last_name", models.CharField(max_length=255)),
|
|
("email", models.EmailField(max_length=255, unique=True)),
|
|
(
|
|
"phone",
|
|
models.CharField(
|
|
max_length=10,
|
|
validators=[
|
|
django.core.validators.RegexValidator("^\\+?1?\\d{9,15}$")
|
|
],
|
|
),
|
|
),
|
|
(
|
|
"username",
|
|
models.CharField(
|
|
blank=True, max_length=255, null=True, unique=True
|
|
),
|
|
),
|
|
("password", models.CharField(max_length=255)),
|
|
("date_of_birth", models.DateField()),
|
|
(
|
|
"gender",
|
|
models.CharField(
|
|
choices=[("M", "Male"), ("F", "Female")], max_length=1
|
|
),
|
|
),
|
|
("address", models.CharField(max_length=255)),
|
|
("father_name", models.CharField(max_length=100)),
|
|
(
|
|
"father_phone_no",
|
|
models.CharField(
|
|
max_length=10,
|
|
validators=[
|
|
django.core.validators.RegexValidator("^\\+?1?\\d{9,15}$")
|
|
],
|
|
),
|
|
),
|
|
(
|
|
"father_email",
|
|
models.EmailField(blank=True, max_length=254, null=True),
|
|
),
|
|
(
|
|
"father_occupation",
|
|
models.CharField(
|
|
choices=[
|
|
("agriculture", "Agriculture"),
|
|
("banker", "Banker"),
|
|
("business", "Business"),
|
|
("doctor", "Doctor"),
|
|
("farmer", "Farmer"),
|
|
("fisherman", "Fisherman"),
|
|
("public service", "Public Service"),
|
|
("private service", "Private Service"),
|
|
("shopkeeper", "Shopkeeper"),
|
|
("driver", "Driver"),
|
|
("worker", "Worker"),
|
|
("N/A", "N/A"),
|
|
],
|
|
default="N/A",
|
|
max_length=45,
|
|
),
|
|
),
|
|
("mother_name", models.CharField(max_length=100)),
|
|
(
|
|
"mother_phone_no",
|
|
models.CharField(
|
|
blank=True,
|
|
max_length=10,
|
|
null=True,
|
|
validators=[
|
|
django.core.validators.RegexValidator("^\\+?1?\\d{9,15}$")
|
|
],
|
|
),
|
|
),
|
|
(
|
|
"mother_email",
|
|
models.EmailField(blank=True, max_length=254, null=True),
|
|
),
|
|
(
|
|
"mother_occupation",
|
|
models.CharField(
|
|
choices=[
|
|
("agriculture", "Agriculture"),
|
|
("banker", "Banker"),
|
|
("business", "Business"),
|
|
("doctor", "Doctor"),
|
|
("farmer", "Farmer"),
|
|
("fisherman", "Fisherman"),
|
|
("public service", "Public Service"),
|
|
("private service", "Private Service"),
|
|
("shopkeeper", "Shopkeeper"),
|
|
("driver", "Driver"),
|
|
("houseWife", "HouseWife"),
|
|
("worker", "Worker"),
|
|
("N/A", "N/A"),
|
|
],
|
|
default="N/A",
|
|
max_length=45,
|
|
),
|
|
),
|
|
("guardian_name", models.CharField(max_length=100)),
|
|
(
|
|
"guardian_phone_no",
|
|
models.CharField(
|
|
max_length=10,
|
|
validators=[
|
|
django.core.validators.RegexValidator("^\\+?1?\\d{9,15}$")
|
|
],
|
|
),
|
|
),
|
|
(
|
|
"guardian_email",
|
|
models.EmailField(blank=True, max_length=254, null=True),
|
|
),
|
|
(
|
|
"relationship_with_student",
|
|
models.CharField(
|
|
choices=[
|
|
("father", "Father"),
|
|
("mother", "Mother"),
|
|
("brother", "Brother"),
|
|
("sister", "Sister"),
|
|
("uncle", "Uncle"),
|
|
("aunt", "Aunt"),
|
|
("grandfather", "Grandfather"),
|
|
],
|
|
max_length=45,
|
|
),
|
|
),
|
|
(
|
|
"academic_year",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to="app.academicyear",
|
|
),
|
|
),
|
|
(
|
|
"course",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.course"
|
|
),
|
|
),
|
|
("group", models.ManyToManyField(blank=True, to="auth.group")),
|
|
(
|
|
"user",
|
|
models.OneToOneField(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Student",
|
|
"verbose_name_plural": "Students",
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Marksheet",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
(
|
|
"period_number",
|
|
models.PositiveIntegerField(
|
|
help_text="Select the semester/year number within the course duration."
|
|
),
|
|
),
|
|
(
|
|
"total_marks",
|
|
models.PositiveIntegerField(
|
|
blank=True,
|
|
default=Decimal("0.00"),
|
|
null=True,
|
|
validators=[django.core.validators.MinValueValidator(0)],
|
|
),
|
|
),
|
|
(
|
|
"obtained_marks",
|
|
models.PositiveIntegerField(
|
|
default=Decimal("0.00"),
|
|
validators=[django.core.validators.MinValueValidator(0)],
|
|
),
|
|
),
|
|
(
|
|
"grade",
|
|
models.CharField(
|
|
blank=True,
|
|
choices=[
|
|
("A+", "A+"),
|
|
("A", "A"),
|
|
("B+", "B+"),
|
|
("B", "B"),
|
|
("C+", "C+"),
|
|
("C", "C"),
|
|
("D", "D"),
|
|
("E", "E"),
|
|
],
|
|
max_length=2,
|
|
null=True,
|
|
),
|
|
),
|
|
(
|
|
"course",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="marksheets",
|
|
to="app.course",
|
|
),
|
|
),
|
|
(
|
|
"student",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="marksheets",
|
|
to="app.student",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Marksheet",
|
|
"verbose_name_plural": "Marksheets",
|
|
"unique_together": {("student", "course", "period_number")},
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Certificate",
|
|
fields=[
|
|
("id", models.AutoField(primary_key=True, serialize=False)),
|
|
("finished_year", models.CharField(max_length=5)),
|
|
("issued_by", models.CharField(max_length=255)),
|
|
("checked_by", models.CharField(max_length=255)),
|
|
("principle", models.CharField(max_length=255)),
|
|
("date", models.DateField()),
|
|
(
|
|
"student",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="certificate",
|
|
to="app.student",
|
|
),
|
|
),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name="AttendanceReport",
|
|
fields=[
|
|
("id", models.AutoField(primary_key=True, serialize=False)),
|
|
("status", models.BooleanField(default=False)),
|
|
("created_at", models.DateTimeField(auto_now_add=True)),
|
|
("updated_at", models.DateTimeField(auto_now_add=True)),
|
|
(
|
|
"attendance_id",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.attendance"
|
|
),
|
|
),
|
|
(
|
|
"student_id",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.student"
|
|
),
|
|
),
|
|
],
|
|
),
|
|
migrations.AddField(
|
|
model_name="attendance",
|
|
name="student",
|
|
field=models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.student"
|
|
),
|
|
),
|
|
migrations.CreateModel(
|
|
name="Subject",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("name", models.CharField(max_length=255)),
|
|
("semester_or_year_number", models.PositiveIntegerField()),
|
|
(
|
|
"course",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="subjects",
|
|
to="app.course",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Subject",
|
|
"verbose_name_plural": "Subjects",
|
|
"ordering": ["course", "semester_or_year_number", "name"],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name="Result",
|
|
fields=[
|
|
("id", models.AutoField(primary_key=True, serialize=False)),
|
|
(
|
|
"practical_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("0.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"exam_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("0.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"total_marks",
|
|
models.DecimalField(
|
|
decimal_places=2,
|
|
default=Decimal("0.00"),
|
|
editable=False,
|
|
max_digits=5,
|
|
),
|
|
),
|
|
(
|
|
"student",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.student"
|
|
),
|
|
),
|
|
(
|
|
"subject",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.subject"
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Result",
|
|
"verbose_name_plural": "Results",
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name="attendance",
|
|
name="subject",
|
|
field=models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE, to="app.subject"
|
|
),
|
|
),
|
|
migrations.CreateModel(
|
|
name="Teacher",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
("active_status", models.BooleanField(default=True)),
|
|
("first_name", models.CharField(max_length=255)),
|
|
(
|
|
"middle_name",
|
|
models.CharField(blank=True, max_length=255, null=True),
|
|
),
|
|
("last_name", models.CharField(max_length=255)),
|
|
("email", models.EmailField(max_length=255, unique=True)),
|
|
(
|
|
"phone",
|
|
models.CharField(
|
|
max_length=10,
|
|
validators=[
|
|
django.core.validators.RegexValidator("^\\+?1?\\d{9,15}$")
|
|
],
|
|
),
|
|
),
|
|
(
|
|
"username",
|
|
models.CharField(
|
|
blank=True, max_length=255, null=True, unique=True
|
|
),
|
|
),
|
|
("password", models.CharField(max_length=255)),
|
|
("address", models.CharField(max_length=255)),
|
|
(
|
|
"gender",
|
|
models.CharField(
|
|
choices=[("M", "Male"), ("F", "Female")], max_length=1
|
|
),
|
|
),
|
|
(
|
|
"qualification",
|
|
models.CharField(
|
|
choices=[
|
|
("BA", "BA"),
|
|
("BBS", "BBS"),
|
|
("BE", "BE"),
|
|
("BEd", "BEd"),
|
|
("BSc", "BSc"),
|
|
("MA", "MA"),
|
|
("MSc", "MSc"),
|
|
("MBS", "MBS"),
|
|
("ME", "ME"),
|
|
("PhD", "PhD"),
|
|
("Others", "Others"),
|
|
],
|
|
max_length=45,
|
|
),
|
|
),
|
|
("specialization", models.CharField(max_length=255)),
|
|
(
|
|
"marital_status",
|
|
models.CharField(
|
|
choices=[
|
|
("married", "Married"),
|
|
("widowed", "Widowed"),
|
|
("separated", "Separated"),
|
|
("divorced", "Divorced"),
|
|
("single", "Single"),
|
|
],
|
|
max_length=10,
|
|
),
|
|
),
|
|
("date_of_joining", models.DateField()),
|
|
("group", models.ManyToManyField(blank=True, to="auth.group")),
|
|
(
|
|
"user",
|
|
models.OneToOneField(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
to=settings.AUTH_USER_MODEL,
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"verbose_name": "Teacher",
|
|
"verbose_name_plural": "Teachers",
|
|
},
|
|
),
|
|
migrations.AddField(
|
|
model_name="subject",
|
|
name="teacher",
|
|
field=models.ForeignKey(
|
|
blank=True,
|
|
null=True,
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="subjects",
|
|
to="app.teacher",
|
|
),
|
|
),
|
|
migrations.CreateModel(
|
|
name="SubjectMark",
|
|
fields=[
|
|
(
|
|
"id",
|
|
models.BigAutoField(
|
|
auto_created=True,
|
|
primary_key=True,
|
|
serialize=False,
|
|
verbose_name="ID",
|
|
),
|
|
),
|
|
(
|
|
"obtained_practical_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("0.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"total_practical_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("20.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"obtained_theory_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("0.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"total_theory_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("80.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"total_marks",
|
|
models.DecimalField(
|
|
decimal_places=2, default=Decimal("0.00"), max_digits=5
|
|
),
|
|
),
|
|
(
|
|
"marksheet",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="subject_marks",
|
|
to="app.marksheet",
|
|
),
|
|
),
|
|
(
|
|
"subject",
|
|
models.ForeignKey(
|
|
on_delete=django.db.models.deletion.CASCADE,
|
|
related_name="subject_marks",
|
|
to="app.subject",
|
|
),
|
|
),
|
|
],
|
|
options={
|
|
"unique_together": {("marksheet", "subject")},
|
|
},
|
|
),
|
|
]
|