Skip to content

Models

CommonModel (Model) django-model

A common abstract :class:django.db.models.Model with common fields for all "real" Models.

Source code in myapp/models.py
class CommonModel(models.Model):
    """
    A common abstract :class:`django.db.models.Model` with common fields for all "real" Models.
    """

    id = models.UUIDField(
        primary_key=True,
        default=uuid.uuid4,
        editable=False,
        help_text="globally unique id (UUID4)",
    )
    """Unique object ID"""
    effective_start_date = models.DateField(
        default=None,
        blank=True,
        null=True,
        help_text="date when this instance becomes valid",
    )
    """Date when this instance becomes valid"""
    effective_end_date = models.DateField(
        default=None,
        blank=True,
        null=True,
        help_text="date when this instance becomes invalid",
    )
    """Date when this instance becomes invalid"""
    last_mod_user_name = models.CharField(
        default=None,
        null=True,
        max_length=80,
        help_text="who last modified this instance",
    )
    """Who last modified this instance"""
    last_mod_date = models.DateField(auto_now=True, help_text="when they modified it")
    """Wheno they modified it"""

    class Meta:
        abstract = True

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

Meta

Source code in myapp/models.py
class Meta:
    abstract = True

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

Course (CommonModel) django-model

A course of instruction. e.g. COMSW1002 Computing in Context

Source code in myapp/models.py
class Course(CommonModel):
    """
    A course of instruction. e.g. COMSW1002 Computing in Context
    """

    school_bulletin_prefix_code = models.CharField(max_length=10)
    """School bulletin prefix_code"""
    suffix_two = models.CharField(
        max_length=2, help_text="two-character identifier suffix"
    )
    """Two-character inditifier suffix"""
    subject_area_code = models.CharField(max_length=10, help_text="Subject")
    """Subject area code"""
    course_number = models.CharField(
        max_length=10,
        help_text='"Shortcut" identifier (formerly for touch-tone registration)',
    )
    course_identifier = models.CharField(
        max_length=9,
        unique=True,
        help_text="Course identifier (one-character suffix)",
        validators=(
            validators.RegexValidator(regex="[A-Z]{4}[0-9]{4}[A-Z]"),
            validators.MinLengthValidator(limit_value=9),
        ),
    )
    course_name = models.CharField(max_length=80, help_text="Course official title")
    course_description = models.TextField(help_text="Course description")

    class Meta:
        ordering = ["course_number"]

    def __str__(self):
        return "%s,%s,%s,%s" % (
            self.id,
            self.course_number,
            self.course_identifier,
            self.course_name,
        )

course_description: TextField django-field

course description: Course description

course_identifier: CharField django-field

course identifier: Course identifier (one-character suffix)

course_name: CharField django-field

course name: Course official title

course_number: CharField django-field

course number: "Shortcut" identifier (formerly for touch-tone registration)

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

school_bulletin_prefix_code: CharField django-field

school bulletin prefix code

subject_area_code: CharField django-field

subject area code: Subject

suffix_two: CharField django-field

suffix two: two-character identifier suffix

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s,%s,%s,%s" % (
        self.id,
        self.course_number,
        self.course_identifier,
        self.course_name,
    )

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

CourseTerm (CommonModel) django-model

A specific course term (year+semester) instance. e.g. 20183COMSW1002

Source code in myapp/models.py
class CourseTerm(CommonModel):
    """
    A specific course term (year+semester) instance.
    e.g. 20183COMSW1002
    """

    term_identifier = models.CharField(
        max_length=14,
        unique=True,
        validators=(
            validators.RegexValidator(regex="[0-9]{4}[123][A-Z]{4}[0-9]{4}[A-Z]"),
            validators.MinLengthValidator(limit_value=14),
        ),
    )
    audit_permitted_code = models.PositiveIntegerField(blank=True, default=0)
    exam_credit_flag = models.BooleanField(default=True)
    course = models.ForeignKey(
        "myapp.Course",
        related_name="course_terms",
        on_delete=models.CASCADE,
        null=True,
        default=None,
    )

    class Meta:
        ordering = ["term_identifier"]

    def __str__(self):
        return "%s,%s,%s" % (
            self.id,
            self.term_identifier,
            self.course.course_identifier if self.course else "NONE",
        )

audit_permitted_code: PositiveIntegerField blank django-field

audit permitted code

course: ForeignKey django-field nullable

course

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

exam_credit_flag: BooleanField django-field

exam credit flag

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

term_identifier: CharField django-field

term identifier

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s,%s,%s" % (
        self.id,
        self.term_identifier,
        self.course.course_identifier if self.course else "NONE",
    )

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

Grade (CommonModel) django-model

A grade for a CourseTerm instance

Source code in myapp/models.py
class Grade(CommonModel):
    """
    A grade for a CourseTerm instance
    """

    person = models.OneToOneField(
        "myapp.Student", on_delete=models.DO_NOTHING, related_name="grade"
    )
    course_term = models.OneToOneField(
        "myapp.CourseTerm", on_delete=models.DO_NOTHING, related_name="grade"
    )
    credits = models.FloatField(help_text="Credits attempted/earned")
    grade_letter = models.CharField(
        max_length=2,
        choices=[(k, k) for k in [None, "A", "B", "C", "D", "F", "P"]],
        default=None,
    )
    grade_value = models.FloatField(
        default=0.0, help_text="grade points (e.g. A is 4.0, F is 0.0)"
    )

    def __str__(self):
        return "%s: %s: %s: %s: %s" % (
            self.id,
            self.person.id,
            self.person.name,
            self.course_term.term_identifier,
            self.grade_letter,
        )

course_term: OneToOneField django-field

course term

credits: FloatField django-field

credits: Credits attempted/earned

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

grade_letter: CharField django-field

grade letter

grade_value: FloatField django-field

grade value: grade points (e.g. A is 4.0, F is 0.0)

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

person: OneToOneField django-field

person

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s: %s: %s: %s: %s" % (
        self.id,
        self.person.id,
        self.person.name,
        self.course_term.term_identifier,
        self.grade_letter,
    )

get_grade_letter_display(self, *, field=<django.db.models.fields.CharField: grade_letter>)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

Instructor (CommonModel) django-model

An instructor.

Source code in myapp/models.py
class Instructor(CommonModel):
    """
    An instructor.
    """

    person = models.OneToOneField(
        "myapp.Person",
        related_name="instructor",
        on_delete=models.CASCADE,
        null=True,
        default=None,
    )
    course_terms = models.ManyToManyField(
        "myapp.CourseTerm", related_name="instructors"
    )

    class Meta:
        ordering = ["id"]

    def __str__(self):
        return "%s" % (self.id)

course_terms: ManyToManyField django-field

course terms

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

person: OneToOneField django-field nullable

person

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s" % (self.id)

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

NonModel (CommonModel) django-model

Make a concrete model that's not actually got a database under it.

Source code in myapp/models.py
class NonModel(CommonModel):
    """
    Make a concrete model that's not actually got a database under it.
    """

    # TODO: Look at a custom model manager.
    class Meta:
        managed = False

    # id = models.CharField(primary_key=True, max_length=5)
    field1 = models.CharField(max_length=20)
    field2 = models.CharField(max_length=20, default="hi")
    field3 = models.CharField(max_length=10, default="there")

    # def __init__(self, id, field1, field2=None):
    #     self.id = id
    #     self.field1 = field1
    #     self.field2 = field2

    def __str__(self):
        return "%s" % (self.id)

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

field1: CharField django-field

field1

field2: CharField django-field

field2

field3: CharField django-field

field3

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s" % (self.id)

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

Person (CommonModel) django-model

A person.

Source code in myapp/models.py
class Person(CommonModel):
    """
    A person.
    """

    # 'name' is a reserved word in SQL server so just force the db_column name to be different.
    # TODO: This might be a django-pyodbc-azure bug. Check it.
    name = models.CharField(max_length=100, unique=True)

    class Meta:
        ordering = ["name"]
        verbose_name_plural = "people"

    def __str__(self):
        return "%s,%s" % (self.id, self.name)

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

name: CharField django-field

name

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s,%s" % (self.id, self.name)

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

Student (CommonModel) django-model

A student.

Source code in myapp/models.py
class Student(CommonModel):
    """
    A student.
    """

    person = models.OneToOneField(
        "myapp.Person",
        related_name="student",
        on_delete=models.CASCADE,
        null=True,
        default=None,
    )
    #: grades includes all registered classes whether or not they have been completed
    grades = models.ManyToManyField("myapp.Grade", related_name="student")

    class Meta:
        ordering = ["id"]

    def __str__(self):
        return "%s" % (self.id)

effective_end_date: DateField blank django-field nullable

effective end date: date when this instance becomes invalid

effective_start_date: DateField blank django-field nullable

effective start date: date when this instance becomes valid

grades: ManyToManyField django-field

grades

id: UUIDField django-field

id: globally unique id (UUID4)

last_mod_date: DateField blank django-field

last mod date: when they modified it

last_mod_user_name: CharField django-field nullable

last mod user name: who last modified this instance

person: OneToOneField django-field nullable

person

DoesNotExist (ObjectDoesNotExist)

MultipleObjectsReturned (MultipleObjectsReturned)

__str__(self) special

Source code in myapp/models.py
def __str__(self):
    return "%s" % (self.id)

get_next_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=True, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)

get_previous_by_last_mod_date(self, *, field=<django.db.models.fields.DateField: last_mod_date>, is_next=False, **kwargs)

Source code in myapp/models.py
def _method(cls_or_self, /, *args, **keywords):
    keywords = {**self.keywords, **keywords}
    return self.func(cls_or_self, *self.args, *args, **keywords)