Skip to content
Snippets Groups Projects
Commit 7e92be2b authored by Lukas Weichelt's avatar Lukas Weichelt Committed by Tom Teichler
Browse files

Add Migration for moving room object from chronos to core

parent 092963f4
No related branches found
No related tags found
1 merge request!1113Resolve "[3.0] Move Room from Chronos to Core"
# Generated by Django 3.2.15 on 2022-11-20 14:20
import django.contrib.sites.managers
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import oauth2_provider.generators
import oauth2_provider.models
class Migration(migrations.Migration):
dependencies = [
('sites', '0002_alter_domain_unique'),
('core', '0044_task_assignment_result_fetched'),
]
operations = [
migrations.CreateModel(
name='Room',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('short_name', models.CharField(max_length=255, verbose_name='Short 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={
'verbose_name': 'Room',
'verbose_name_plural': 'Rooms',
'ordering': ['name', 'short_name'],
'permissions': (('view_room_timetable', 'Can view room timetable'),),
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.AddConstraint(
model_name='room',
constraint=models.UniqueConstraint(fields=('site_id', 'short_name'), name='unique_short_name_per_site_room'),
),
# Migrate data from Chronos table; deletion will be handled by Chronos
migrations.RunSQL(
"""
-- Use a temporary, empty source table in case Chronos is not installed
CREATE TEMPORARY TABLE IF NOT EXISTS chronos_rooms (LIKE core_rooms);
INSERT INTO core_rooms SELECT * FROM chronos_rooms;
"""
),
]
......@@ -1458,3 +1458,25 @@ class PersonalICalUrl(models.Model):
def get_absolute_url(self):
return reverse("ical_feed", kwargs={"slug": self.uuid})
class Room(ExtensibleModel):
short_name = models.CharField(verbose_name=_("Short name"), max_length=255)
name = models.CharField(verbose_name=_("Long name"), max_length=255)
def __str__(self) -> str:
return f"{self.name} ({self.short_name})"
def get_absolute_url(self) -> str:
return reverse("timetable", args=["room", self.id])
class Meta:
permissions = (("view_room_timetable", _("Can view room timetable")),)
ordering = ["name", "short_name"]
verbose_name = _("Room")
verbose_name_plural = _("Rooms")
constraints = [
models.UniqueConstraint(
fields=["site_id", "short_name"], name="unique_short_name_per_site_room"
),
]
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