mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Permission models
This commit is contained in:
61
src/tixlbase/migrations/0004_auto_20140911_2037.py
Normal file
61
src/tixlbase/migrations/0004_auto_20140911_2037.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
from django.conf import settings
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('tixlbase', '0003_auto_20140910_1649'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='OrganizerPermission',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, verbose_name='ID', serialize=False, primary_key=True)),
|
||||||
|
('can_create_events', models.BooleanField(default=True)),
|
||||||
|
('organizer', models.ForeignKey(to='tixlbase.Organizer', related_name='perms')),
|
||||||
|
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, related_name='organizer_perms')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
},
|
||||||
|
bases=(models.Model,),
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='organizerpermission',
|
||||||
|
unique_together=set([('organizer', 'user')]),
|
||||||
|
),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='organizer',
|
||||||
|
name='owner',
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='event',
|
||||||
|
name='organizer',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='events', to='tixlbase.Organizer'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='email',
|
||||||
|
field=models.EmailField(null=True, blank=True, db_index=True, verbose_name='E-mail', max_length=75),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='event',
|
||||||
|
field=models.ForeignKey(null=True, blank=True, on_delete=django.db.models.deletion.PROTECT, related_name='users', to='tixlbase.Event'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='familyname',
|
||||||
|
field=models.CharField(null=True, blank=True, verbose_name='Family name', max_length=255),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='user',
|
||||||
|
name='givenname',
|
||||||
|
field=models.CharField(null=True, blank=True, verbose_name='Given name', max_length=255),
|
||||||
|
),
|
||||||
|
]
|
||||||
48
src/tixlbase/migrations/0005_auto_20140911_2052.py
Normal file
48
src/tixlbase/migrations/0005_auto_20140911_2052.py
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('tixlbase', '0004_auto_20140911_2037'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='EventPermission',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, serialize=False, primary_key=True, verbose_name='ID')),
|
||||||
|
('can_change_settings', models.BooleanField(default=True)),
|
||||||
|
('organizer', models.ForeignKey(to='tixlbase.Event')),
|
||||||
|
('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, related_name='event_perms')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
},
|
||||||
|
bases=(models.Model,),
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='eventpermission',
|
||||||
|
unique_together=set([('organizer', 'user')]),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='event',
|
||||||
|
name='permitted',
|
||||||
|
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, related_name='events', through='tixlbase.EventPermission'),
|
||||||
|
preserve_default=True,
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='organizer',
|
||||||
|
name='permitted',
|
||||||
|
field=models.ManyToManyField(to=settings.AUTH_USER_MODEL, related_name='organizers', through='tixlbase.OrganizerPermission'),
|
||||||
|
preserve_default=True,
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='organizerpermission',
|
||||||
|
name='organizer',
|
||||||
|
field=models.ForeignKey(to='tixlbase.Organizer'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -124,24 +124,35 @@ class User(AbstractBaseUser, PermissionsMixin):
|
|||||||
|
|
||||||
class Organizer(models.Model):
|
class Organizer(models.Model):
|
||||||
"""
|
"""
|
||||||
This model represents an entity organizing events, like a company,
|
This model represents an entity organizing events, like a company.
|
||||||
an organization or a person. It has one user as owner (who has
|
Any organizer has a unique slug, which is a short name (alphanumeric,
|
||||||
registered it) and can have any number of users with admin
|
all lowercase) being used in URLs.
|
||||||
authorization. Any organizer has a unique slug, which is a short
|
|
||||||
name (alphanumeric, all lowercase) being used in URLs.
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
slug = models.CharField(max_length=50,
|
slug = models.CharField(max_length=50,
|
||||||
unique=True,
|
unique=True, db_index=True)
|
||||||
db_index=True)
|
permitted = models.ManyToManyField(User, through='OrganizerPermission',
|
||||||
owner = models.ForeignKey(User, null=True, blank=True,
|
related_name="organizers")
|
||||||
on_delete=models.PROTECT)
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ("name",)
|
ordering = ("name",)
|
||||||
|
|
||||||
|
|
||||||
|
class OrganizerPermission(models.Model):
|
||||||
|
"""
|
||||||
|
The relation between an Organizer and an User who has permissions to
|
||||||
|
access an organizer profile.
|
||||||
|
"""
|
||||||
|
|
||||||
|
organizer = models.ForeignKey(Organizer)
|
||||||
|
user = models.ForeignKey(User, related_name="organizer_perms")
|
||||||
|
can_create_events = models.BooleanField(default=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
unique_together = (("organizer", "user"),)
|
||||||
|
|
||||||
|
|
||||||
class Event(models.Model):
|
class Event(models.Model):
|
||||||
"""
|
"""
|
||||||
This model represents an event. An event is anything you can buy
|
This model represents an event. An event is anything you can buy
|
||||||
@@ -171,8 +182,9 @@ class Event(models.Model):
|
|||||||
organizer = models.ForeignKey(Organizer, related_name="events",
|
organizer = models.ForeignKey(Organizer, related_name="events",
|
||||||
on_delete=models.PROTECT)
|
on_delete=models.PROTECT)
|
||||||
name = models.CharField(max_length=200)
|
name = models.CharField(max_length=200)
|
||||||
slug = models.CharField(max_length=50,
|
slug = models.CharField(max_length=50, db_index=True)
|
||||||
db_index=True)
|
permitted = models.ManyToManyField(User, through='EventPermission',
|
||||||
|
related_name="events")
|
||||||
locale = models.CharField(max_length=10)
|
locale = models.CharField(max_length=10)
|
||||||
currency = models.CharField(max_length=10)
|
currency = models.CharField(max_length=10)
|
||||||
date_from = models.DateTimeField()
|
date_from = models.DateTimeField()
|
||||||
@@ -187,3 +199,17 @@ class Event(models.Model):
|
|||||||
class Meta:
|
class Meta:
|
||||||
unique_together = (("organizer", "slug"),)
|
unique_together = (("organizer", "slug"),)
|
||||||
ordering = ("date_from", "name")
|
ordering = ("date_from", "name")
|
||||||
|
|
||||||
|
|
||||||
|
class EventPermission(models.Model):
|
||||||
|
"""
|
||||||
|
The relation between an Event and an User who has permissions to
|
||||||
|
access an event.
|
||||||
|
"""
|
||||||
|
|
||||||
|
organizer = models.ForeignKey(Event)
|
||||||
|
user = models.ForeignKey(User, related_name="event_perms")
|
||||||
|
can_change_settings = models.BooleanField(default=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
unique_together = (("organizer", "user"),)
|
||||||
|
|||||||
Reference in New Issue
Block a user