Skip to content
Snippets Groups Projects
Commit f0a822c1 authored by Hangzhi Yu's avatar Hangzhi Yu
Browse files

Merge branch 'new-model-based-on-calendar' into 211-implement-vue-substitution-frontend

parents c6af6bed 955800d1
No related branches found
No related tags found
1 merge request!310Resolve "Implement Vue substitution frontend"
Pipeline #172364 failed
Showing
with 283 additions and 215 deletions
{
"name": "aleksis-builddeps",
"version": "1.0.0",
"dependencies": {
"@intlify/eslint-plugin-vue-i18n": "^2.0.0",
"eslint": "^8.26.0",
"eslint-config-prettier": "^9.0.0",
"eslint-plugin-vue": "^9.7.0",
"prettier": "^3.0.0",
"stylelint": "^15.0.0",
"stylelint-config-prettier": "^9.0.3",
"stylelint-config-standard": "^34.0.0"
}
}
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class *$py.class
*.py[cod]
__pycache__/
# Distribution / packaging # Distribution / packaging
*.egg
*.egg-info/
.Python .Python
.eggs/
.installed.cfg
build/ build/
develop-eggs/ develop-eggs/
dist/ dist/
downloads/ downloads/
eggs/ eggs/
.eggs/
lib/ lib/
lib64/ lib64/
parts/ parts/
sdist/ sdist/
var/ var/
wheels/ wheels/
*.egg-info/
.installed.cfg
*.egg
# Installer logs # Installer logs
pip-log.txt
pip-delete-this-directory.txt pip-delete-this-directory.txt
pip-log.txt
# Translations # Translations
*.mo *.mo
...@@ -39,22 +39,56 @@ local_settings.py ...@@ -39,22 +39,56 @@ local_settings.py
# Environments # Environments
.env .env
.venv .venv
ENV/
env/ env/
venv/ venv/
ENV/
# Editors # Editors
*~ *~
DEADJOE DEADJOE
\#*# \#*#
# IntelliJ
.idea
.idea/
# VSCode
.vscode/
.history/
*.code-workspace
# Database # Database
db.sqlite3 db.sqlite3
# Sphinx # Sphinx
docs/_build/ docs/_build/
# Test # TeX
.tox/ *.aux
# Generated files
/cache
/node_modules
.dev-js/node_modules
/static/
/whoosh_index/
.vite
.dev-js/.yarn
.dev-js/.pnp.cjs
.dev-js/.pnp.loader.mjs
# Lock files
poetry.lock poetry.lock
package-lock.json
yarn.lock
.dev-js/yarn.lock
# Tests
.coverage
.mypy_cache/
.tox/
htmlcov/
# Data
maintenance_mode_state.txt
media/
...@@ -89,3 +89,6 @@ yarn.lock ...@@ -89,3 +89,6 @@ yarn.lock
# Do not check/reformat generated files # Do not check/reformat generated files
aleksis/core/util/licenses.json aleksis/core/util/licenses.json
.vite/ .vite/
.pnp.cjs
.pnp.loader.mjs
...@@ -9,6 +9,9 @@ and this project adheres to `Semantic Versioning`_. ...@@ -9,6 +9,9 @@ and this project adheres to `Semantic Versioning`_.
Unreleased Unreleased
---------- ----------
`3.0.2`_ - 2023-09-10
---------------------
Fixed Fixed
~~~~~ ~~~~~
...@@ -401,4 +404,4 @@ Fixed ...@@ -401,4 +404,4 @@ Fixed
.. _3.0b0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0b0 .. _3.0b0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0b0
.. _3.0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0 .. _3.0: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0
.. _3.0.1: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0.1 .. _3.0.1: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0.1
.. _3.0.2: https://edugit.org/AlekSIS/Official/AlekSIS-App-Chronos/-/tags/3.0.2
from typing import Sequence from collections.abc import Sequence
from django.db.models import Count, Q from django.db.models import Count, Q
from django.forms import RadioSelect from django.forms import RadioSelect
......
from django.utils.translation import gettext as _
from material import Fieldset
from aleksis.core.forms import AnnouncementForm, EditGroupForm
AnnouncementForm.add_node_to_layout(Fieldset(_("Options for timetables"), "show_in_timetables"))
EditGroupForm.add_node_to_layout(Fieldset(_("Optional data for timetables"), "subject_id"))
...@@ -68,7 +68,7 @@ export default { ...@@ -68,7 +68,7 @@ export default {
class="flex-grow-1" class="flex-grow-1"
:value="type.id" :value="type.id"
> >
{{ type.name }} {{ $t(type.name) }}
</v-btn> </v-btn>
</v-btn-toggle> </v-btn-toggle>
</v-card-text> </v-card-text>
......
...@@ -20,8 +20,8 @@ export default { ...@@ -20,8 +20,8 @@ export default {
this.availableTimetables.find( this.availableTimetables.find(
(t) => (t) =>
t.objId === this.$route.params.id && t.objId === this.$route.params.id &&
t.type.toLowerCase() === this.$route.params.type t.type.toLowerCase() === this.$route.params.type,
) ),
); );
} }
}, },
...@@ -59,7 +59,7 @@ export default { ...@@ -59,7 +59,7 @@ export default {
methods: { methods: {
findNextTimetable(offset = 1) { findNextTimetable(offset = 1) {
const currentIndex = this.availableTimetablesIds.indexOf( const currentIndex = this.availableTimetablesIds.indexOf(
this.selected.id this.selected.id,
); );
const newIndex = currentIndex + offset; const newIndex = currentIndex + offset;
if (newIndex < 0 || newIndex >= this.availableTimetablesIds.length) { if (newIndex < 0 || newIndex >= this.availableTimetablesIds.length) {
......
export default { export default {
GROUP: { GROUP: {
name: "Groups", name: "chronos.timetable.types.groups",
id: "GROUP", id: "GROUP",
icon: "mdi-account-group-outline", icon: "mdi-account-group-outline",
}, },
TEACHER: { TEACHER: {
name: "Teachers", name: "chronos.timetable.types.teachers",
id: "TEACHER", id: "TEACHER",
icon: "mdi-account-outline", icon: "mdi-account-outline",
}, },
ROOM: { name: "Rooms", id: "ROOM", icon: "mdi-door" }, ROOM: { name: "chronos.timetable.types.rooms", id: "ROOM", icon: "mdi-door" },
}; };
...@@ -6,6 +6,7 @@ export default { ...@@ -6,6 +6,7 @@ export default {
inMenu: true, inMenu: true,
titleKey: "chronos.menu_title", titleKey: "chronos.menu_title",
icon: "mdi-school-outline", icon: "mdi-school-outline",
iconActive: "mdi-school",
validators: [hasPersonValidator], validators: [hasPersonValidator],
}, },
props: { props: {
......
...@@ -12,7 +12,12 @@ ...@@ -12,7 +12,12 @@
"search": "Stundenpläne suchen", "search": "Stundenpläne suchen",
"prev": "Vorheriger Stundenplan", "prev": "Vorheriger Stundenplan",
"next": "Nächster Stundenplan", "next": "Nächster Stundenplan",
"select": "Stundenplan auswählen" "select": "Stundenplan auswählen",
"types": {
"groups": "Gruppen",
"teachers": "Lehrkräfte",
"rooms": "Räume"
}
}, },
"lessons": { "lessons": {
"menu_title_daily": "Tagesstunden" "menu_title_daily": "Tagesstunden"
......
...@@ -12,7 +12,12 @@ ...@@ -12,7 +12,12 @@
"search": "Search Timetables", "search": "Search Timetables",
"prev": "Previous Timetable", "prev": "Previous Timetable",
"next": "Next Timetable", "next": "Next Timetable",
"select": "Select Timetable" "select": "Select Timetable",
"types": {
"groups": "Groups",
"teachers": "Teachers",
"rooms": "Rooms"
}
}, },
"lessons": { "lessons": {
"menu_title_daily": "Daily lessons" "menu_title_daily": "Daily lessons"
......
from collections.abc import Iterable
from datetime import date, datetime, timedelta from datetime import date, datetime, timedelta
from enum import Enum from enum import Enum
from typing import Dict, Iterable, List, Optional, Union from typing import TYPE_CHECKING, Optional, Union
from django.contrib.sites.managers import CurrentSiteManager as _CurrentSiteManager
from django.db import models from django.db import models
from django.db.models import ExpressionWrapper, F, Func, Q, QuerySet, Value from django.db.models import ExpressionWrapper, F, Func, Q, QuerySet, Value
from django.db.models.fields import DateField from django.db.models.fields import DateField
...@@ -12,10 +12,18 @@ from calendarweek import CalendarWeek ...@@ -12,10 +12,18 @@ from calendarweek import CalendarWeek
from polymorphic.managers import PolymorphicQuerySet from polymorphic.managers import PolymorphicQuerySet
from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date from aleksis.apps.chronos.util.date import week_weekday_from_date, week_weekday_to_date
from aleksis.core.managers import DateRangeQuerySetMixin, SchoolTermRelatedQuerySet from aleksis.apps.cursus.models import Course
from aleksis.core.managers import (
AlekSISBaseManagerWithoutMigrations,
DateRangeQuerySetMixin,
SchoolTermRelatedQuerySet,
)
from aleksis.core.models import Group, Person, Room from aleksis.core.models import Group, Person, Room
from aleksis.core.util.core_helpers import get_site_preferences from aleksis.core.util.core_helpers import get_site_preferences
if TYPE_CHECKING:
from .models import Holiday, LessonPeriod, ValidityRange
class ValidityRangeQuerySet(QuerySet, DateRangeQuerySetMixin): class ValidityRangeQuerySet(QuerySet, DateRangeQuerySetMixin):
"""Custom query set for validity ranges.""" """Custom query set for validity ranges."""
...@@ -66,10 +74,6 @@ class ValidityRangeRelatedQuerySet(QuerySet): ...@@ -66,10 +74,6 @@ class ValidityRangeRelatedQuerySet(QuerySet):
return None return None
class CurrentSiteManager(_CurrentSiteManager):
use_in_migrations = False
class TimetableType(Enum): class TimetableType(Enum):
"""Enum for different types of timetables.""" """Enum for different types of timetables."""
...@@ -82,7 +86,7 @@ class TimetableType(Enum): ...@@ -82,7 +86,7 @@ class TimetableType(Enum):
return cls.__members__.get(s.upper()) return cls.__members__.get(s.upper())
class LessonPeriodManager(CurrentSiteManager): class LessonPeriodManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to lesson periods.""" """Manager adding specific methods to lesson periods."""
def get_queryset(self): def get_queryset(self):
...@@ -107,7 +111,7 @@ class LessonPeriodManager(CurrentSiteManager): ...@@ -107,7 +111,7 @@ class LessonPeriodManager(CurrentSiteManager):
) )
class LessonSubstitutionManager(CurrentSiteManager): class LessonSubstitutionManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to lesson substitutions.""" """Manager adding specific methods to lesson substitutions."""
def get_queryset(self): def get_queryset(self):
...@@ -133,7 +137,7 @@ class LessonSubstitutionManager(CurrentSiteManager): ...@@ -133,7 +137,7 @@ class LessonSubstitutionManager(CurrentSiteManager):
) )
class SupervisionManager(CurrentSiteManager): class SupervisionManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to supervisions.""" """Manager adding specific methods to supervisions."""
def get_queryset(self): def get_queryset(self):
...@@ -151,7 +155,7 @@ class SupervisionManager(CurrentSiteManager): ...@@ -151,7 +155,7 @@ class SupervisionManager(CurrentSiteManager):
) )
class SupervisionSubstitutionManager(CurrentSiteManager): class SupervisionSubstitutionManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to supervision substitutions.""" """Manager adding specific methods to supervision substitutions."""
def get_queryset(self): def get_queryset(self):
...@@ -171,7 +175,7 @@ class SupervisionSubstitutionManager(CurrentSiteManager): ...@@ -171,7 +175,7 @@ class SupervisionSubstitutionManager(CurrentSiteManager):
) )
class EventManager(CurrentSiteManager): class EventManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to events.""" """Manager adding specific methods to events."""
def get_queryset(self): def get_queryset(self):
...@@ -190,7 +194,7 @@ class EventManager(CurrentSiteManager): ...@@ -190,7 +194,7 @@ class EventManager(CurrentSiteManager):
) )
class ExtraLessonManager(CurrentSiteManager): class ExtraLessonManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to extra lessons.""" """Manager adding specific methods to extra lessons."""
def get_queryset(self): def get_queryset(self):
...@@ -208,7 +212,7 @@ class ExtraLessonManager(CurrentSiteManager): ...@@ -208,7 +212,7 @@ class ExtraLessonManager(CurrentSiteManager):
) )
class BreakManager(CurrentSiteManager): class BreakManager(AlekSISBaseManagerWithoutMigrations):
"""Manager adding specific methods to breaks.""" """Manager adding specific methods to breaks."""
def get_queryset(self): def get_queryset(self):
...@@ -403,7 +407,7 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin): ...@@ -403,7 +407,7 @@ class LessonDataQuerySet(models.QuerySet, WeekQuerySetMixin):
return lesson_periods return lesson_periods
def group_by_validity(self) -> Dict["ValidityRange", List["LessonPeriod"]]: def group_by_validity(self) -> dict["ValidityRange", list["LessonPeriod"]]:
"""Group lesson periods by validity range as dictionary.""" """Group lesson periods by validity range as dictionary."""
lesson_periods_by_validity = {} lesson_periods_by_validity = {}
for lesson_period in self: for lesson_period in self:
...@@ -636,7 +640,7 @@ class AbsenceQuerySet(DateRangeQuerySetMixin, SchoolTermRelatedQuerySet): ...@@ -636,7 +640,7 @@ class AbsenceQuerySet(DateRangeQuerySetMixin, SchoolTermRelatedQuerySet):
class HolidayQuerySet(QuerySet, DateRangeQuerySetMixin): class HolidayQuerySet(QuerySet, DateRangeQuerySetMixin):
"""QuerySet with custom query methods for holidays.""" """QuerySet with custom query methods for holidays."""
def get_all_days(self) -> List[date]: def get_all_days(self) -> list[date]:
"""Get all days included in the selected holidays.""" """Get all days included in the selected holidays."""
holiday_days = [] holiday_days = []
for holiday in self: for holiday in self:
...@@ -885,6 +889,12 @@ class LessonEventQuerySet(PolymorphicQuerySet): ...@@ -885,6 +889,12 @@ class LessonEventQuerySet(PolymorphicQuerySet):
) )
return self.filter(Q(rooms=room) | Q(pk__in=amended)).distinct() return self.filter(Q(rooms=room) | Q(pk__in=amended)).distinct()
def for_course(self, course: Union[int, Course]):
amended = self.filter(Q(amended_by__isnull=False) & (Q(course=course))).values_list(
"amended_by__pk", flat=True
)
return self.filter(Q(course=course) | Q(pk__in=amended)).distinct()
def for_person(self, person: Union[int, Person]): def for_person(self, person: Union[int, Person]):
amended = self.filter( amended = self.filter(
Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person)) Q(amended_by__isnull=False) & (Q(teachers=person) | Q(groups__members=person))
...@@ -892,3 +902,18 @@ class LessonEventQuerySet(PolymorphicQuerySet): ...@@ -892,3 +902,18 @@ class LessonEventQuerySet(PolymorphicQuerySet):
return self.filter( return self.filter(
Q(teachers=person) | Q(groups__members=person) | Q(pk__in=amended) Q(teachers=person) | Q(groups__members=person) | Q(pk__in=amended)
).distinct() ).distinct()
def related_to_person(self, person: Union[int, Person]):
amended = self.filter(
Q(amended_by__isnull=False)
& (Q(teachers=person) | Q(groups__members=person) | Q(groups__owners=person))
).values_list("amended_by__pk", flat=True)
return self.filter(
Q(teachers=person) | Q(groups__members=person) | Q(groups__owners=person)
).distinct()
def not_amended(self):
return self.filter(amended_by__isnull=True)
def not_amending(self):
return self.filter(amends__isnull=True)
...@@ -18,7 +18,6 @@ class Migration(migrations.Migration): ...@@ -18,7 +18,6 @@ class Migration(migrations.Migration):
dependencies = [ dependencies = [
("core", "0001_initial"), ("core", "0001_initial"),
("sites", "0002_alter_domain_unique"),
] ]
operations = [ operations = [
...@@ -237,15 +236,6 @@ class Migration(migrations.Migration): ...@@ -237,15 +236,6 @@ class Migration(migrations.Migration):
), ),
("time_start", models.TimeField(verbose_name="Start time")), ("time_start", models.TimeField(verbose_name="Start time")),
("time_end", models.TimeField(verbose_name="End time")), ("time_end", models.TimeField(verbose_name="End time")),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Time period", "verbose_name": "Time period",
...@@ -273,15 +263,6 @@ class Migration(migrations.Migration): ...@@ -273,15 +263,6 @@ class Migration(migrations.Migration):
), ),
), ),
("date", models.DateField(verbose_name="Date")), ("date", models.DateField(verbose_name="Date")),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
( (
"supervision", "supervision",
models.ForeignKey( models.ForeignKey(
...@@ -339,15 +320,6 @@ class Migration(migrations.Migration): ...@@ -339,15 +320,6 @@ class Migration(migrations.Migration):
"colour_bg", "colour_bg",
colorfield.fields.ColorField(default="#FFFFFF", max_length=18), colorfield.fields.ColorField(default="#FFFFFF", max_length=18),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Supervision area", "verbose_name": "Supervision area",
...@@ -376,16 +348,6 @@ class Migration(migrations.Migration): ...@@ -376,16 +348,6 @@ class Migration(migrations.Migration):
verbose_name="Break", verbose_name="Break",
), ),
), ),
migrations.AddField(
model_name="supervision",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
migrations.AddField( migrations.AddField(
model_name="supervision", model_name="supervision",
name="teacher", name="teacher",
...@@ -444,15 +406,6 @@ class Migration(migrations.Migration): ...@@ -444,15 +406,6 @@ class Migration(migrations.Migration):
verbose_name="Background colour", verbose_name="Background colour",
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Subject", "verbose_name": "Subject",
...@@ -486,15 +439,6 @@ class Migration(migrations.Migration): ...@@ -486,15 +439,6 @@ class Migration(migrations.Migration):
), ),
), ),
("name", models.CharField(max_length=255, verbose_name="Long name")), ("name", models.CharField(max_length=255, verbose_name="Long name")),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Room", "verbose_name": "Room",
...@@ -561,15 +505,6 @@ class Migration(migrations.Migration): ...@@ -561,15 +505,6 @@ class Migration(migrations.Migration):
verbose_name="Room", verbose_name="Room",
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
( (
"subject", "subject",
models.ForeignKey( models.ForeignKey(
...@@ -623,16 +558,6 @@ class Migration(migrations.Migration): ...@@ -623,16 +558,6 @@ class Migration(migrations.Migration):
verbose_name="Room", verbose_name="Room",
), ),
), ),
migrations.AddField(
model_name="lessonperiod",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
migrations.AddField( migrations.AddField(
model_name="lesson", model_name="lesson",
name="periods", name="periods",
...@@ -643,16 +568,6 @@ class Migration(migrations.Migration): ...@@ -643,16 +568,6 @@ class Migration(migrations.Migration):
verbose_name="Periods", verbose_name="Periods",
), ),
), ),
migrations.AddField(
model_name="lesson",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
migrations.AddField( migrations.AddField(
model_name="lesson", model_name="lesson",
name="subject", name="subject",
...@@ -697,15 +612,6 @@ class Migration(migrations.Migration): ...@@ -697,15 +612,6 @@ class Migration(migrations.Migration):
"comments", "comments",
models.TextField(blank=True, null=True, verbose_name="Comments"), models.TextField(blank=True, null=True, verbose_name="Comments"),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Holiday", "verbose_name": "Holiday",
...@@ -771,15 +677,6 @@ class Migration(migrations.Migration): ...@@ -771,15 +677,6 @@ class Migration(migrations.Migration):
verbose_name="Room", verbose_name="Room",
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
( (
"subject", "subject",
models.ForeignKey( models.ForeignKey(
...@@ -857,15 +754,6 @@ class Migration(migrations.Migration): ...@@ -857,15 +754,6 @@ class Migration(migrations.Migration):
verbose_name="End period", verbose_name="End period",
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Exam", "verbose_name": "Exam",
...@@ -930,15 +818,6 @@ class Migration(migrations.Migration): ...@@ -930,15 +818,6 @@ class Migration(migrations.Migration):
related_name="events", to="chronos.Room", verbose_name="Rooms" related_name="events", to="chronos.Room", verbose_name="Rooms"
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
( (
"teachers", "teachers",
models.ManyToManyField( models.ManyToManyField(
...@@ -981,16 +860,6 @@ class Migration(migrations.Migration): ...@@ -981,16 +860,6 @@ class Migration(migrations.Migration):
verbose_name="Time period before break ends", verbose_name="Time period before break ends",
), ),
), ),
migrations.AddField(
model_name="break",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
migrations.CreateModel( migrations.CreateModel(
name="AbsenceReason", name="AbsenceReason",
fields=[ fields=[
...@@ -1019,15 +888,6 @@ class Migration(migrations.Migration): ...@@ -1019,15 +888,6 @@ class Migration(migrations.Migration):
blank=True, max_length=255, null=True, verbose_name="Name" blank=True, max_length=255, null=True, verbose_name="Name"
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
], ],
options={ options={
"verbose_name": "Absence reason", "verbose_name": "Absence reason",
...@@ -1112,15 +972,6 @@ class Migration(migrations.Migration): ...@@ -1112,15 +972,6 @@ class Migration(migrations.Migration):
verbose_name="Room", verbose_name="Room",
), ),
), ),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
( (
"teacher", "teacher",
models.ForeignKey( models.ForeignKey(
......
...@@ -43,7 +43,6 @@ def migrate_lesson(apps, schema_editor): ...@@ -43,7 +43,6 @@ def migrate_lesson(apps, schema_editor):
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
("core", "0002_school_term"), ("core", "0002_school_term"),
("sites", "0002_alter_domain_unique"),
("chronos", "0001_initial"), ("chronos", "0001_initial"),
] ]
...@@ -186,16 +185,6 @@ class Migration(migrations.Migration): ...@@ -186,16 +185,6 @@ class Migration(migrations.Migration):
verbose_name="School term", verbose_name="School term",
), ),
), ),
migrations.AddField(
model_name="validityrange",
name="site",
field=models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
migrations.AddField( migrations.AddField(
model_name="lesson", model_name="lesson",
name="validity", name="validity",
......
...@@ -48,7 +48,7 @@ class Migration(migrations.Migration): ...@@ -48,7 +48,7 @@ class Migration(migrations.Migration):
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='absencereason', model_name='absencereason',
constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_short_name_per_site_absence_reason'), constraint=models.UniqueConstraint(fields=('short_name',), name='unique_short_name_per_site_absence_reason'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='break', model_name='break',
...@@ -60,19 +60,19 @@ class Migration(migrations.Migration): ...@@ -60,19 +60,19 @@ class Migration(migrations.Migration):
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='room', model_name='room',
constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_short_name_per_site_room'), constraint=models.UniqueConstraint(fields=('short_name',), name='unique_short_name_per_site_room'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='subject', model_name='subject',
constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_short_name_per_site_subject'), constraint=models.UniqueConstraint(fields=('short_name',), name='unique_short_name_per_site_subject'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='subject', model_name='subject',
constraint=models.UniqueConstraint(fields=('site_id', 'name'), name='unique_name_per_site'), constraint=models.UniqueConstraint(fields=('name',), name='unique_name_per_site'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='supervisionarea', model_name='supervisionarea',
constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_short_name_per_site_supervision_area'), constraint=models.UniqueConstraint(fields=('short_name',), name='unique_short_name_per_site_supervision_area'),
), ),
migrations.AddConstraint( migrations.AddConstraint(
model_name='timeperiod', model_name='timeperiod',
......
...@@ -29,7 +29,6 @@ class Migration(migrations.Migration): ...@@ -29,7 +29,6 @@ class Migration(migrations.Migration):
}, },
bases=('resint.livedocument',), bases=('resint.livedocument',),
managers=[ managers=[
('objects', aleksis.core.managers.PolymorphicCurrentSiteManager()),
], ],
), ),
] ]
...@@ -8,8 +8,7 @@ import django.db.models.deletion ...@@ -8,8 +8,7 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('sites', '0002_alter_domain_unique'), ('chronos', '0013_move_room_to_core'),
('chronos', '0014_lessonevent'),
] ]
operations = [ operations = [
......
# Generated by Django 4.2.9 on 2024-01-09 15:08
import colorfield.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('chronos', '0014_add_managed_by_app_label'),
]
operations = [
migrations.AlterModelManagers(
name='absencereason',
managers=[
],
),
migrations.AlterModelManagers(
name='subject',
managers=[
],
),
migrations.AlterModelManagers(
name='supervisionarea',
managers=[
],
),
migrations.RemoveConstraint(
model_name='absencereason',
name='unique_short_name_per_site_absence_reason',
),
migrations.RemoveConstraint(
model_name='break',
name='unique_short_name_per_site_break',
),
migrations.RemoveConstraint(
model_name='subject',
name='unique_short_name_per_site_subject',
),
migrations.RemoveConstraint(
model_name='supervisionarea',
name='unique_short_name_per_site_supervision_area',
),
] + [
migrations.RunSQL(
f"ALTER TABLE chronos_{model_name} drop column if exists site_id;"
) for model_name in
[
"absence",
"absencereason",
"automaticplan",
"break",
"event",
"exam",
"extralesson",
"holiday",
"lesson",
"lessonperiod",
"lessonsubstitution",
"subject",
"supervision",
"supervisionarea",
"supervisionsubstitution",
"timeperiod",
"validityrange"
]
] + [
migrations.AlterField(
model_name='absence',
name='comment',
field=models.TextField(blank=True, default='', verbose_name='Comment'),
preserve_default=False,
),
migrations.AlterField(
model_name='absencereason',
name='name',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Name'),
preserve_default=False,
),
migrations.AlterField(
model_name='absencereason',
name='short_name',
field=models.CharField(max_length=255, unique=True, verbose_name='Short name'),
),
migrations.AlterField(
model_name='event',
name='title',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Title'),
preserve_default=False,
),
migrations.AlterField(
model_name='extralesson',
name='comment',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Comment'),
preserve_default=False,
),
migrations.AlterField(
model_name='holiday',
name='comments',
field=models.TextField(blank=True, default='', verbose_name='Comments'),
preserve_default=False,
),
migrations.AlterField(
model_name='lessonsubstitution',
name='comment',
field=models.TextField(blank=True, default='', verbose_name='Comment'),
preserve_default=False,
),
migrations.AlterField(
model_name='subject',
name='colour_bg',
field=colorfield.fields.ColorField(blank=True, default='', image_field=None, max_length=25, samples=None, verbose_name='Background colour'),
),
migrations.AlterField(
model_name='subject',
name='colour_fg',
field=colorfield.fields.ColorField(blank=True, default='', image_field=None, max_length=25, samples=None, verbose_name='Foreground colour'),
),
migrations.AlterField(
model_name='subject',
name='short_name',
field=models.CharField(max_length=255, unique=True, verbose_name='Short name'),
),
migrations.AlterField(
model_name='supervisionarea',
name='colour_bg',
field=colorfield.fields.ColorField(default='#FFFFFF', image_field=None, max_length=25, samples=None),
),
migrations.AlterField(
model_name='supervisionarea',
name='colour_fg',
field=colorfield.fields.ColorField(default='#000000', image_field=None, max_length=25, samples=None),
),
migrations.AlterField(
model_name='supervisionarea',
name='short_name',
field=models.CharField(max_length=255, unique=True, verbose_name='Short name'),
),
migrations.AlterField(
model_name='timeperiod',
name='weekday',
field=models.PositiveSmallIntegerField(choices=[(0, 'Monday'), (1, 'Tuesday'), (2, 'Wednesday'), (3, 'Thursday'), (4, 'Friday'), (5, 'Saturday'), (6, 'Sunday')], verbose_name='Week day'),
),
migrations.AddConstraint(
model_name='break',
constraint=models.UniqueConstraint(fields=('validity', 'short_name'), name='unique_short_name_per_validity_break'),
),
]
...@@ -6,10 +6,9 @@ import django.db.models.deletion ...@@ -6,10 +6,9 @@ import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
("sites", "0002_alter_domain_unique"),
("core", "0051_calendarevent_and_holiday"), ("core", "0051_calendarevent_and_holiday"),
("cursus", "0001_initial"), ("cursus", "0001_initial"),
("chronos", "0013_move_room_to_core"), ("chronos", "0015_drop_site"),
] ]
operations = [ operations = [
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment