mirror of
https://github.com/lemeow125/StudE-Backend.git
synced 2024-11-17 06:19:24 +08:00
68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
import os
|
|
from django.conf import settings
|
|
from django.db.models.signals import post_migrate
|
|
from django.dispatch import receiver
|
|
from django.db import models
|
|
# Create your models here.
|
|
|
|
|
|
class Course(models.Model):
|
|
name = models.CharField(max_length=64, unique=True)
|
|
shortname = models.CharField(max_length=16, unique=True)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
'''
|
|
# Old Subject migration code
|
|
@receiver(post_migrate)
|
|
def populate_courses(sender, **kwargs):
|
|
if sender.name == 'courses':
|
|
Course.objects.get_or_create(
|
|
name='Bachelor of Science in Information Technology', shortname='BSIT')
|
|
Course.objects.get_or_create(
|
|
name='Bachelor of Science in Computer Science', shortname='BSCS')
|
|
Course.objects.get_or_create(
|
|
name='Bachelor of Science in Computer Engineering ', shortname='BSCpE')
|
|
Course.objects.get_or_create(
|
|
name='Bachelor of Science in Data Science', shortname='BSDS')
|
|
# Add more predefined records as needed
|
|
'''
|
|
|
|
|
|
# Create courses based on records that we have
|
|
@receiver(post_migrate)
|
|
def populate_subjects(sender, **kwargs):
|
|
if sender.name == 'courses':
|
|
root_path = os.path.join(settings.MEDIA_ROOT, 'records')
|
|
csv_files = [f for f in os.listdir(root_path) if f.endswith('.csv')]
|
|
added_courses = 0
|
|
existing_courses = 0
|
|
print('--- Adding Courses ---')
|
|
for csv_file in csv_files:
|
|
# The filename contains coursename
|
|
filename = os.path.splitext(csv_file)[0]
|
|
# Splitting the filename and constructing the shortname
|
|
shortname = ''
|
|
for word in filename.split(' '):
|
|
if word[0].isupper():
|
|
shortname += word[0]
|
|
|
|
if shortname != None:
|
|
# If course already exists with relevant info, skip over it
|
|
if (Course.objects.filter(name=filename, shortname=shortname).exists()):
|
|
existing_courses += 1
|
|
continue
|
|
|
|
# Else add the course
|
|
else:
|
|
Course.objects.get_or_create(
|
|
name=filename, shortname=shortname)
|
|
added_courses += 1
|
|
continue
|
|
else:
|
|
print('Warn: Improperly formatted course record:', filename)
|
|
|
|
print('Added', added_courses, 'courses')
|
|
print('Skipped', existing_courses, 'already existing courses\n')
|