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