Files
Student-Management-System-I…/app/migrations/0001_initial.py
T

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")},
},
),
]