Skip to content
Snippets Groups Projects
Verified Commit 7678d123 authored by Jonathan Weth's avatar Jonathan Weth :keyboard:
Browse files

Add initial models

parent e1b32e8b
No related branches found
No related tags found
1 merge request!1Resolve "Implement models"
# Generated by Django 3.2.4 on 2021-06-13 08:51
import django.contrib.sites.managers
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('core', '0019_fix_uniqueness_per_site'),
('sites', '0002_alter_domain_unique'),
]
operations = [
migrations.CreateModel(
name='AbiGroup',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('name', models.CharField(max_length=255, verbose_name='Name')),
],
options={
'verbose_name': 'Group (Abi)',
'verbose_name_plural': 'Groups (Abi)',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='AbiPerson',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('first_name', models.CharField(max_length=255, verbose_name='Vorname')),
('last_name', models.CharField(max_length=255, verbose_name='Nachname')),
('person', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='abi_persons', to='core.person', verbose_name='AlekSIS person')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
],
options={
'verbose_name': 'Person (Abi)',
'verbose_name_plural': 'Persons (Abi)',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='Quote',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('text', models.TextField(help_text='You also can include any extra information here like a context if you want.', verbose_name='Quote')),
('authors', models.ManyToManyField(blank=True, help_text='This can be left empty if the author is unknown or if there is no specific author.', null=True, related_name='quotes', to='abi.AbiPerson', verbose_name='Author(s)')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
('submitted_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='submitted_quotes', to='abi.abiperson', verbose_name='Ranked by')),
],
options={
'verbose_name': 'Quote',
'verbose_name_plural': 'Quotes',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='RankingCategory',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('name', models.CharField(max_length=255, verbose_name='Name')),
('proposed', models.BooleanField(default=False, verbose_name='Proposed')),
('number_of_persons', models.PositiveIntegerField(default=1, verbose_name='Number of selectable persons')),
('group', models.ForeignKey(help_text='The persons in this group will be selectable for rankings in this category.', on_delete=django.db.models.deletion.CASCADE, related_name='ranking_categories', to='abi.abigroup', verbose_name='Gruppe')),
('proposed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ranking_proposes', to='abi.abiperson', verbose_name='Proposed by')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
],
options={
'verbose_name': 'Ranking category',
'verbose_name_plural': 'Ranking categories',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='Ranking',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('weight', models.PositiveIntegerField(default=3, validators=[django.core.validators.MaxValueValidator(3)], verbose_name='Weight of this ranking')),
('category', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rankings', to='abi.rankingcategory', verbose_name='Ranking category')),
('persons', models.ManyToManyField(related_name='rankings', to='abi.AbiPerson', verbose_name='Ranked persons')),
('ranked_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='done_rankings', to='abi.abiperson', verbose_name='Ranked by')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
],
options={
'verbose_name': 'Ranking',
'verbose_name_plural': 'Rankings',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='QuoteVote',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('vote', models.IntegerField(validators=[django.core.validators.MaxValueValidator(1), django.core.validators.MinValueValidator(1)], verbose_name='Vote type')),
('quote', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='votes', to='abi.quote', verbose_name='Quote')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
('voted_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='quote_votes', to='abi.abiperson', verbose_name='Voted by')),
],
options={
'verbose_name': 'Quote vote',
'verbose_name_plural': 'Quote votes',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='Profile',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('nickname', models.CharField(blank=True, max_length=255, verbose_name='Nickname')),
('current_picture', models.ImageField(blank=True, null=True, upload_to='abi/current/', verbose_name='Current picture')),
('old_picture', models.ImageField(blank=True, null=True, upload_to='abi/old/', verbose_name='Picture from the childhood')),
('person', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='profile', to='abi.abiperson', verbose_name='Person')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
],
options={
'verbose_name': 'Personal profile',
'verbose_name_plural': 'Personal profiles',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.CreateModel(
name='Comment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', models.JSONField(default=dict, editable=False)),
('text', models.TextField(blank=True, verbose_name='Kommentar')),
('requested', models.BooleanField(default=False, verbose_name='Requested')),
('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='written_comments', to='abi.abiperson', verbose_name='Author')),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='received_comments', to='abi.abiperson', verbose_name='Receiver')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site')),
],
options={
'verbose_name': 'Kommentar',
'verbose_name_plural': 'Comments',
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
),
migrations.AddField(
model_name='abigroup',
name='members',
field=models.ManyToManyField(blank=True, null=True, related_name='member_of', to='abi.AbiPerson', verbose_name='Group members'),
),
migrations.AddField(
model_name='abigroup',
name='site',
field=models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.site'),
),
]
from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models
from django.utils.translation import gettext as _
from aleksis.core.mixins import ExtensibleModel
from aleksis.core.models import Person
class AbiPerson(ExtensibleModel):
first_name = models.CharField(max_length=255, verbose_name=_("First name"))
last_name = models.CharField(max_length=255, verbose_name=_("Last name"))
person = models.ForeignKey(
to=Person,
on_delete=models.SET_NULL,
null=True,
blank=True,
verbose_name=_("AlekSIS person"),
related_name="abi_persons",
)
class Meta:
verbose_name = _("Person (Abi)")
verbose_name_plural = _("Persons (Abi)")
class AbiGroup(ExtensibleModel):
name = models.CharField(max_length=255, verbose_name=_("Name"))
members = models.ManyToManyField(
to=AbiPerson,
verbose_name=_("Group members"),
related_name="member_of",
null=True,
blank=True,
)
class Meta:
verbose_name = _("Group (Abi)")
verbose_name_plural = _("Groups (Abi)")
class Profile(ExtensibleModel):
person = models.OneToOneField(
to=AbiPerson, on_delete=models.CASCADE, verbose_name=_("Person"), related_name="profile"
)
nickname = models.CharField(max_length=255, blank=True, verbose_name=_("Nickname"))
current_picture = models.ImageField(
null=True, blank=True, upload_to="abi/current/", verbose_name=_("Current picture")
)
old_picture = models.ImageField(
null=True, blank=True, upload_to="abi/old/", verbose_name=_("Picture from the childhood")
)
class Meta:
verbose_name = _("Personal profile")
verbose_name_plural = _("Personal profiles")
class RankingCategory(ExtensibleModel):
name = models.CharField(max_length=255, verbose_name=_("Name"))
proposed = models.BooleanField(default=False, verbose_name=_("Proposed"))
proposed_by = models.ForeignKey(
to=AbiPerson,
on_delete=models.SET_NULL,
blank=True,
null=True,
verbose_name=_("Proposed by"),
related_name="ranking_proposes",
)
group = models.ForeignKey(
to=AbiGroup,
on_delete=models.CASCADE,
verbose_name=_("Group"),
help_text=_("The persons in this group will be selectable for rankings in this category."),
related_name="ranking_categories",
)
number_of_persons = models.PositiveIntegerField(
default=1, verbose_name=_("Number of selectable persons")
)
class Meta:
verbose_name = _("Ranking category")
verbose_name_plural = _("Ranking categories")
class Ranking(ExtensibleModel):
category = models.ForeignKey(
to=RankingCategory,
on_delete=models.CASCADE,
verbose_name=_("Ranking category"),
related_name="rankings",
)
persons = models.ManyToManyField(
to=AbiPerson, related_name="rankings", verbose_name=_("Ranked persons")
)
weight = models.PositiveIntegerField(
default=3, validators=[MaxValueValidator(3)], verbose_name=_("Weight of this ranking")
)
ranked_by = models.ForeignKey(
to=AbiPerson,
on_delete=models.SET_NULL,
blank=True,
null=True,
verbose_name=_("Ranked by"),
related_name="done_rankings",
)
# FIXME Validate number of persons
# FIXME Validate Weight
class Meta:
verbose_name = _("Ranking")
verbose_name_plural = _("Rankings")
class Comment(ExtensibleModel):
person = models.ForeignKey(
to=AbiPerson,
on_delete=models.CASCADE,
verbose_name=_("Receiver"),
related_name="received_comments",
)
author = models.ForeignKey(
to=AbiPerson,
on_delete=models.CASCADE,
verbose_name=_("Author"),
related_name="written_comments",
)
text = models.TextField(blank=True, verbose_name=_("Comment"))
requested = models.BooleanField(default=False, verbose_name=_("Requested"))
class Meta:
verbose_name = _("Comment")
verbose_name_plural = _("Comments")
class Quote(ExtensibleModel):
authors = models.ManyToManyField(
to=AbiPerson,
verbose_name=_("Author(s)"),
help_text=_(
"This can be left empty if the author is unknown or if there is no specific author."
),
blank=True,
null=True,
related_name="quotes",
)
text = models.TextField(
verbose_name=_("Quote"),
help_text=_("You also can include any extra information here like a context if you want."),
)
submitted_by = models.ForeignKey(
to=AbiPerson,
on_delete=models.SET_NULL,
blank=True,
null=True,
verbose_name=_("Ranked by"),
related_name="submitted_quotes",
)
class Meta:
verbose_name = _("Quote")
verbose_name_plural = _("Quotes")
class QuoteVote(ExtensibleModel):
quote = models.ForeignKey(
to=Quote, on_delete=models.CASCADE, verbose_name=_("Quote"), related_name="votes"
)
voted_by = models.ForeignKey(
to=AbiPerson,
on_delete=models.CASCADE,
blank=True,
null=True,
verbose_name=_("Voted by"),
related_name="quote_votes",
)
vote = models.IntegerField(
validators=[MaxValueValidator(1), MinValueValidator(1)], verbose_name=_("Vote type")
)
class Meta:
verbose_name = _("Quote vote")
verbose_name_plural = _("Quote votes")
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