chrono/chrono/agendas/migrations/0091_lease.py

65 lines
2.3 KiB
Python

# Generated by Django 2.2.19 on 2021-03-16 13:44
import django.db.models.deletion
from django.db import migrations, models
create_gist_constraints_on_leases = """
ALTER TABLE agendas_lease
ADD CONSTRAINT lease_desk_constraint
EXCLUDE USING GIST(desk_id WITH =, tstzrange(start_datetime, end_datetime) WITH &&)
WHERE (desk_id IS NOT NULL);
ALTER TABLE agendas_lease
ADD CONSTRAINT lease_resource_constraint
EXCLUDE USING GIST(resource_id WITH =, tstzrange(start_datetime, end_datetime) WITH &&)
WHERE (resource_id IS NOT NULL);
"""
drop_gist_constraints_on_leases = """
ALTER TABLE agendas_lease DROP CONSTRAINT lease_desk_constraint;
ALTER TABLE agendas_lease DROP CONSTRAINT lease_resource_constraint;
"""
class Migration(migrations.Migration):
dependencies = [
('agendas', '0090_default_view'),
]
operations = [
migrations.CreateModel(
name='Lease',
fields=[
(
'id',
models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
('lock_code', models.CharField(max_length=64, verbose_name='Lock code')),
('lock_expiration_datetime', models.DateTimeField(verbose_name='Lock expiration time')),
('start_datetime', models.DateTimeField(verbose_name='Start')),
('end_datetime', models.DateTimeField(verbose_name='End')),
(
'agenda',
models.ForeignKey(
null=True, on_delete=django.db.models.deletion.CASCADE, to='agendas.Agenda'
),
),
(
'desk',
models.ForeignKey(
null=True, on_delete=django.db.models.deletion.CASCADE, to='agendas.Desk'
),
),
(
'resource',
models.ForeignKey(
null=True, on_delete=django.db.models.deletion.CASCADE, to='agendas.Resource'
),
),
],
options={
'index_together': {('start_datetime', 'end_datetime')},
},
),
migrations.RunSQL(sql=create_gist_constraints_on_leases, reverse_sql=drop_gist_constraints_on_leases),
]