Merge branch 'develop' into feature/webhooks

This commit is contained in:
Aarni Halinen
2022-01-13 22:58:10 +02:00
181 changed files with 3830 additions and 2295 deletions
+1 -1
View File
@@ -2,4 +2,4 @@ from django.apps import AppConfig
class KaehmyConfig(AppConfig):
name = 'kaehmy'
name = "kaehmy"
+51 -26
View File
@@ -6,12 +6,16 @@ from kaehmy.models import PresetRole, CustomRole, Application, Comment, KaehmyBa
class CheckboxSelectMultiple(forms.widgets.CheckboxSelectMultiple):
option_template_name = 'checkbox_option.html'
option_template_name = "checkbox_option.html"
def create_option(self, name, value, label, selected, index, subindex=None, attrs=None):
dic = super(CheckboxSelectMultiple, self).create_option(name, value, label, selected, index, subindex, attrs)
def create_option(
self, name, value, label, selected, index, subindex=None, attrs=None
):
dic = super(CheckboxSelectMultiple, self).create_option(
name, value, label, selected, index, subindex, attrs
)
description = PresetRole.objects.get(id=value).description
dic['description'] = description
dic["description"] = description
return dic
def __init__(self, *args, **kwargs):
@@ -25,30 +29,46 @@ class ApplicationForm(forms.ModelForm):
"""Meta for class Application."""
model = Application
fields = ['name', 'email', 'phone_number', 'year',
'preset_roles', 'custom_roles', 'custom_role_name',
'custom_role_is_board', 'text']
fields = [
"name",
"email",
"phone_number",
"year",
"preset_roles",
"custom_roles",
"custom_role_name",
"custom_role_is_board",
"text",
]
def __init__(self, *args, **kwargs):
super(ApplicationForm, self).__init__(*args, **kwargs)
self.fields["email"].label = _('Email (not public)')
self.fields["phone_number"].label = _('Phone number (not public)')
self.fields["email"].label = _("Email (not public)")
self.fields["phone_number"].label = _("Phone number (not public)")
custom_roles_exist = CustomRole.objects.all().exists()
self.fields["custom_roles"].widget = forms.widgets.CheckboxSelectMultiple() if custom_roles_exist else forms.HiddenInput()
self.fields["custom_roles"].widget = (
forms.widgets.CheckboxSelectMultiple()
if custom_roles_exist
else forms.HiddenInput()
)
self.fields["custom_roles"].help_text = ""
self.fields["custom_roles"].label = _('Custom roles')
self.fields["custom_roles"].label = _("Custom roles")
self.fields["custom_roles"].queryset = CustomRole.objects.all()
for cat_id, category in KaehmyBaseRole.CATEGORIES:
key = 'preset_roles_{}'.format(cat_id)
qset = PresetRole.objects.filter(category=cat_id).order_by('category', '-is_board')
key = "preset_roles_{}".format(cat_id)
qset = PresetRole.objects.filter(category=cat_id).order_by(
"category", "-is_board"
)
self.fields[key] = forms.ModelMultipleChoiceField(qset)
self.fields[key].widget = CheckboxSelectMultiple(attrs={
'title': _('Preset roles'),
'name': 'preset_roles',
})
self.fields[key].widget = CheckboxSelectMultiple(
attrs={
"title": _("Preset roles"),
"name": "preset_roles",
}
)
self.fields[key].help_text = ""
self.fields[key].queryset = qset
self.fields[key].label = _(category)
@@ -57,33 +77,38 @@ class ApplicationForm(forms.ModelForm):
def clean(self):
cleaned_data = super(ApplicationForm, self).clean()
for key in cleaned_data.keys():
if 'preset_roles_' in key:
cleaned_data['preset_roles'] = cleaned_data['preset_roles'] | cleaned_data[key]
if "preset_roles_" in key:
cleaned_data["preset_roles"] = (
cleaned_data["preset_roles"] | cleaned_data[key]
)
return cleaned_data
def clean_phone_number(self):
"""Clean phone number field."""
number = self.cleaned_data.get('phone_number')
number = self.cleaned_data.get("phone_number")
if number.isdigit():
return number
else:
raise ValidationError(_('Invalid phone number'))
raise ValidationError(_("Invalid phone number"))
def clean_custom_role_name(self):
"""Check that no other custom role with same name exists."""
custom_name = self.cleaned_data.get('custom_role_name')
custom_name = self.cleaned_data.get("custom_role_name")
if not CustomRole.objects.filter(name=custom_name).exists():
return custom_name
else:
raise ValidationError(_('Custom role with the same name already exists.'))
raise ValidationError(_("Custom role with the same name already exists."))
def non_role_fields(self):
return [self.fields[k] for k in self.fields.keys() if k not in ["preset_roles", "custom_roles"]]
return [
self.fields[k]
for k in self.fields.keys()
if k not in ["preset_roles", "custom_roles"]
]
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ['name', 'email', 'message', 'parent']
fields = ["name", "email", "message", "parent"]
+147 -41
View File
@@ -12,82 +12,188 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('webapp', '0037_auto_20180125_2131'),
("webapp", "0037_auto_20180125_2131"),
]
operations = [
migrations.CreateModel(
name='CommentParent',
name="CommentParent",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(default='', max_length=255, verbose_name='Name')),
('email', models.EmailField(default='', max_length=254, verbose_name='Email')),
('timestamp', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Timestamp')),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"name",
models.CharField(default="", max_length=255, verbose_name="Name"),
),
(
"email",
models.EmailField(default="", max_length=254, verbose_name="Email"),
),
(
"timestamp",
models.DateTimeField(
default=django.utils.timezone.now, verbose_name="Timestamp"
),
),
],
),
migrations.CreateModel(
name='CustomRole',
name="CustomRole",
fields=[
('baserole_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.BaseRole')),
(
"baserole_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="webapp.BaseRole",
),
),
],
options={
'verbose_name_plural': 'Custom kaehmy roles',
'verbose_name': 'Custom kaehmy role',
"verbose_name_plural": "Custom kaehmy roles",
"verbose_name": "Custom kaehmy role",
},
bases=('webapp.baserole',),
bases=("webapp.baserole",),
),
migrations.CreateModel(
name='PresetRole',
name="PresetRole",
fields=[
('presetrole_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.PresetRole')),
(
"presetrole_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="webapp.PresetRole",
),
),
],
options={
'verbose_name_plural': 'Preset kaehmy roles',
'verbose_name': 'Preset kaehmy role',
"verbose_name_plural": "Preset kaehmy roles",
"verbose_name": "Preset kaehmy role",
},
bases=('webapp.presetrole',),
bases=("webapp.presetrole",),
),
migrations.CreateModel(
name='TelegramChannel',
name="TelegramChannel",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=255)),
('channel_id', models.CharField(max_length=255, unique=True)),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("name", models.CharField(max_length=255)),
("channel_id", models.CharField(max_length=255, unique=True)),
],
options={
'verbose_name_plural': 'Telegram channels',
'verbose_name': 'Telegram channel',
"verbose_name_plural": "Telegram channels",
"verbose_name": "Telegram channel",
},
),
migrations.CreateModel(
name='Application',
name="Application",
fields=[
('commentparent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='kaehmy.CommentParent')),
('phone_number', models.CharField(default='', max_length=10, verbose_name='Phone number')),
('year', models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, 'N')], verbose_name='Year')),
('text', models.TextField(default='', max_length=300, verbose_name='Text')),
('custom_role_name', models.CharField(blank=True, max_length=255, verbose_name='Custom role name')),
('custom_role_is_board', models.BooleanField(verbose_name='Board member')),
('custom_roles', models.ManyToManyField(blank=True, related_name='forms', to='kaehmy.CustomRole')),
('preset_roles', models.ManyToManyField(blank=True, related_name='forms', to='kaehmy.PresetRole')),
(
"commentparent_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="kaehmy.CommentParent",
),
),
(
"phone_number",
models.CharField(
default="", max_length=10, verbose_name="Phone number"
),
),
(
"year",
models.IntegerField(
choices=[(1, "1"), (2, "2"), (3, "3"), (4, "4"), (5, "N")],
verbose_name="Year",
),
),
(
"text",
models.TextField(default="", max_length=300, verbose_name="Text"),
),
(
"custom_role_name",
models.CharField(
blank=True, max_length=255, verbose_name="Custom role name"
),
),
(
"custom_role_is_board",
models.BooleanField(verbose_name="Board member"),
),
(
"custom_roles",
models.ManyToManyField(
blank=True, related_name="forms", to="kaehmy.CustomRole"
),
),
(
"preset_roles",
models.ManyToManyField(
blank=True, related_name="forms", to="kaehmy.PresetRole"
),
),
],
options={
'verbose_name_plural': 'Kaehmylomakkeet',
'verbose_name': 'Kaehmylomake',
"verbose_name_plural": "Kaehmylomakkeet",
"verbose_name": "Kaehmylomake",
},
bases=('kaehmy.commentparent',),
bases=("kaehmy.commentparent",),
),
migrations.CreateModel(
name='Comment',
name="Comment",
fields=[
('commentparent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='kaehmy.CommentParent')),
('message', models.TextField(verbose_name='Message')),
('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='kaehmy.CommentParent')),
(
"commentparent_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="kaehmy.CommentParent",
),
),
("message", models.TextField(verbose_name="Message")),
(
"parent",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="messages",
to="kaehmy.CommentParent",
),
),
],
options={
'verbose_name_plural': 'Kaehmykommentit',
'verbose_name': 'Kaehmykommentti',
"verbose_name_plural": "Kaehmykommentit",
"verbose_name": "Kaehmykommentti",
},
bases=('kaehmy.commentparent',),
bases=("kaehmy.commentparent",),
),
]
+42 -9
View File
@@ -7,26 +7,59 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('webapp', '0047_auto_20180710_2110'),
('kaehmy', '0001_initial'),
("webapp", "0047_auto_20180710_2110"),
("kaehmy", "0001_initial"),
]
operations = [
migrations.CreateModel(
name='KaehmyBaseRole',
name="KaehmyBaseRole",
fields=[
('baserole_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.BaseRole')),
('category', models.CharField(choices=[('corporate', 'Corporate affairs'), ('freshman', 'Freshmen'), ('international', 'International'), ('external', 'External affairs'), ('media', 'Media'), ('tech', 'Technology'), ('wellbeing', 'Wellbeing'), ('elepaja', 'Elepaja'), ('ceremonies', 'Ceremonies'), ('culture', 'Culture'), ('studies', 'Studies'), ('sosso', 'Sössö magazine'), ('alumni', 'Alumni relations'), ('others', 'Others')], default='others', max_length=255, verbose_name='Category')),
(
"baserole_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="webapp.BaseRole",
),
),
(
"category",
models.CharField(
choices=[
("corporate", "Corporate affairs"),
("freshman", "Freshmen"),
("international", "International"),
("external", "External affairs"),
("media", "Media"),
("tech", "Technology"),
("wellbeing", "Wellbeing"),
("elepaja", "Elepaja"),
("ceremonies", "Ceremonies"),
("culture", "Culture"),
("studies", "Studies"),
("sosso", "Sössö magazine"),
("alumni", "Alumni relations"),
("others", "Others"),
],
default="others",
max_length=255,
verbose_name="Category",
),
),
],
bases=('webapp.baserole',),
bases=("webapp.baserole",),
),
migrations.DeleteModel(
name='Application',
name="Application",
),
migrations.DeleteModel(
name='customrole',
name="customrole",
),
migrations.DeleteModel(
name='presetrole',
name="presetrole",
),
]
+84 -28
View File
@@ -7,57 +7,113 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('kaehmy', '0002_auto_20180902_1929'),
("kaehmy", "0002_auto_20180902_1929"),
]
operations = [
migrations.CreateModel(
name='Application',
name="Application",
fields=[
('commentparent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='kaehmy.CommentParent')),
('phone_number', models.CharField(default='', max_length=10, verbose_name='Phone number')),
('year', models.IntegerField(choices=[(1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, 'N')], verbose_name='Year')),
('text', models.TextField(default='', max_length=300, verbose_name='Text')),
('custom_role_name', models.CharField(blank=True, max_length=255, verbose_name='Custom role name')),
('custom_role_is_board', models.BooleanField(verbose_name='Board member')),
(
"commentparent_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="kaehmy.CommentParent",
),
),
(
"phone_number",
models.CharField(
default="", max_length=10, verbose_name="Phone number"
),
),
(
"year",
models.IntegerField(
choices=[(1, "1"), (2, "2"), (3, "3"), (4, "4"), (5, "N")],
verbose_name="Year",
),
),
(
"text",
models.TextField(default="", max_length=300, verbose_name="Text"),
),
(
"custom_role_name",
models.CharField(
blank=True, max_length=255, verbose_name="Custom role name"
),
),
(
"custom_role_is_board",
models.BooleanField(verbose_name="Board member"),
),
],
options={
'verbose_name': 'Kaehmylomake',
'verbose_name_plural': 'Kaehmylomakkeet',
"verbose_name": "Kaehmylomake",
"verbose_name_plural": "Kaehmylomakkeet",
},
bases=('kaehmy.commentparent',),
bases=("kaehmy.commentparent",),
),
migrations.CreateModel(
name='CustomRole',
name="CustomRole",
fields=[
('kaehmybaserole_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='kaehmy.KaehmyBaseRole')),
(
"kaehmybaserole_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="kaehmy.KaehmyBaseRole",
),
),
],
options={
'verbose_name': 'Custom kaehmy role',
'verbose_name_plural': 'Custom kaehmy roles',
"verbose_name": "Custom kaehmy role",
"verbose_name_plural": "Custom kaehmy roles",
},
bases=('kaehmy.kaehmybaserole',),
bases=("kaehmy.kaehmybaserole",),
),
migrations.CreateModel(
name='PresetRole',
name="PresetRole",
fields=[
('kaehmybaserole_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='kaehmy.KaehmyBaseRole')),
('description', models.TextField(verbose_name='Description')),
(
"kaehmybaserole_ptr",
models.OneToOneField(
auto_created=True,
on_delete=django.db.models.deletion.CASCADE,
parent_link=True,
primary_key=True,
serialize=False,
to="kaehmy.KaehmyBaseRole",
),
),
("description", models.TextField(verbose_name="Description")),
],
options={
'verbose_name': 'Preset kaehmy role',
'verbose_name_plural': 'Preset kaehmy roles',
"verbose_name": "Preset kaehmy role",
"verbose_name_plural": "Preset kaehmy roles",
},
bases=('kaehmy.kaehmybaserole',),
bases=("kaehmy.kaehmybaserole",),
),
migrations.AddField(
model_name='application',
name='custom_roles',
field=models.ManyToManyField(blank=True, related_name='forms', to='kaehmy.CustomRole'),
model_name="application",
name="custom_roles",
field=models.ManyToManyField(
blank=True, related_name="forms", to="kaehmy.CustomRole"
),
),
migrations.AddField(
model_name='application',
name='preset_roles',
field=models.ManyToManyField(blank=True, related_name='forms', to='kaehmy.PresetRole'),
model_name="application",
name="preset_roles",
field=models.ManyToManyField(
blank=True, related_name="forms", to="kaehmy.PresetRole"
),
),
]
+23 -4
View File
@@ -6,13 +6,32 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('kaehmy', '0003_auto_20180902_1943'),
("kaehmy", "0003_auto_20180902_1943"),
]
operations = [
migrations.AlterField(
model_name='kaehmybaserole',
name='category',
field=models.CharField(choices=[('corporate', 'Corporate affairs'), ('freshman', 'Freshmen'), ('international', 'International'), ('external', 'External affairs'), ('media', 'Media'), ('tech', 'Technology'), ('wellbeing', 'Wellbeing'), ('elepaja', 'Elepaja'), ('ceremonies', 'Ceremonies'), ('studies', 'Studies'), ('sosso', 'Sössö magazine'), ('alumni', 'Alumni relations'), ('others', 'Others')], default='others', max_length=255, verbose_name='Category'),
model_name="kaehmybaserole",
name="category",
field=models.CharField(
choices=[
("corporate", "Corporate affairs"),
("freshman", "Freshmen"),
("international", "International"),
("external", "External affairs"),
("media", "Media"),
("tech", "Technology"),
("wellbeing", "Wellbeing"),
("elepaja", "Elepaja"),
("ceremonies", "Ceremonies"),
("studies", "Studies"),
("sosso", "Sössö magazine"),
("alumni", "Alumni relations"),
("others", "Others"),
],
default="others",
max_length=255,
verbose_name="Category",
),
),
]
+4 -4
View File
@@ -6,13 +6,13 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('kaehmy', '0004_auto_20181018_2121'),
("kaehmy", "0004_auto_20181018_2121"),
]
operations = [
migrations.AlterField(
model_name='application',
name='custom_role_is_board',
field=models.BooleanField(blank=True, verbose_name='Board member'),
model_name="application",
name="custom_role_is_board",
field=models.BooleanField(blank=True, verbose_name="Board member"),
),
]
+62 -50
View File
@@ -10,56 +10,58 @@ from webapp.models import BaseRole
# 2. Data migrate from webapp BaseRole to new kaehmy BaseRole
# 3. Delete webapp BaseRole table
VERBOSE_NAME = _('Kaehmy')
VERBOSE_NAME = _("Kaehmy")
class KaehmyBaseRole(BaseRole):
"""ABC"""
CATEGORIES = (
('corporate', _('Corporate affairs')),
('freshman', _('Freshmen')),
('international', _('International')),
('external', _('External affairs')),
('media', _('Media')),
('tech', _('Technology')),
('wellbeing', _('Wellbeing')),
('elepaja', _('Elepaja')),
('ceremonies', _('Ceremonies')),
('studies', _('Studies')),
('sosso', _('Sössö magazine')),
('alumni', _('Alumni relations')),
('others', _('Others')),
("corporate", _("Corporate affairs")),
("freshman", _("Freshmen")),
("international", _("International")),
("external", _("External affairs")),
("media", _("Media")),
("tech", _("Technology")),
("wellbeing", _("Wellbeing")),
("elepaja", _("Elepaja")),
("ceremonies", _("Ceremonies")),
("studies", _("Studies")),
("sosso", _("Sössö magazine")),
("alumni", _("Alumni relations")),
("others", _("Others")),
)
category = models.CharField(
_("Category"), choices=CATEGORIES, default="others", max_length=255
)
category = models.CharField(_('Category'), choices=CATEGORIES, default='others', max_length=255)
class PresetRole(KaehmyBaseRole):
"""Model for kaehmy role."""
description = models.TextField(_('Description'))
description = models.TextField(_("Description"))
class Meta:
verbose_name = _('Preset kaehmy role')
verbose_name_plural = _('Preset kaehmy roles')
verbose_name = _("Preset kaehmy role")
verbose_name_plural = _("Preset kaehmy roles")
class CustomRole(KaehmyBaseRole):
"""Model representing a user-specified custom occupation."""
class Meta:
verbose_name = _('Custom kaehmy role')
verbose_name_plural = _('Custom kaehmy roles')
verbose_name = _("Custom kaehmy role")
verbose_name_plural = _("Custom kaehmy roles")
class CommentParent(models.Model):
name = models.CharField(_('Name'), max_length=255, default='')
email = models.EmailField(_('Email'), default='')
timestamp = models.DateTimeField(_('Timestamp'), default=timezone.now)
name = models.CharField(_("Name"), max_length=255, default="")
email = models.EmailField(_("Email"), default="")
timestamp = models.DateTimeField(_("Timestamp"), default=timezone.now)
def __str__(self):
return 'Message parent #{}'.format(self.id)
return "Message parent #{}".format(self.id)
class Comment(CommentParent):
@@ -70,11 +72,13 @@ class Comment(CommentParent):
"""
class Meta:
verbose_name = _('Kaehmykommentti')
verbose_name_plural = _('Kaehmykommentit')
verbose_name = _("Kaehmykommentti")
verbose_name_plural = _("Kaehmykommentit")
message = models.TextField(_('Message'))
parent = models.ForeignKey('CommentParent', related_name='messages', on_delete=models.CASCADE)
message = models.TextField(_("Message"))
parent = models.ForeignKey(
"CommentParent", related_name="messages", on_delete=models.CASCADE
)
class Application(CommentParent):
@@ -83,34 +87,36 @@ class Application(CommentParent):
Allows user to choose from existing roles or to create custom ones.
"""
YEAR_CHOICES = (
(1, '1'),
(2, '2'),
(3, '3'),
(4, '4'),
(5, 'N'),
(1, "1"),
(2, "2"),
(3, "3"),
(4, "4"),
(5, "N"),
)
class Meta:
verbose_name = _('Kaehmylomake')
verbose_name_plural = _('Kaehmylomakkeet')
verbose_name = _("Kaehmylomake")
verbose_name_plural = _("Kaehmylomakkeet")
phone_number = models.CharField(
_('Phone number'), max_length=10, default="")
year = models.IntegerField(_('Year'), choices=YEAR_CHOICES)
text = models.TextField(_('Text'), default="", max_length=300)
phone_number = models.CharField(_("Phone number"), max_length=10, default="")
year = models.IntegerField(_("Year"), choices=YEAR_CHOICES)
text = models.TextField(_("Text"), default="", max_length=300)
custom_role_name = models.CharField(
_('Custom role name'), max_length=255, blank=True)
custom_role_is_board = models.BooleanField(
_('Board member'), blank=True)
_("Custom role name"), max_length=255, blank=True
)
custom_role_is_board = models.BooleanField(_("Board member"), blank=True)
custom_roles = models.ManyToManyField(
'kaehmy.CustomRole', related_name='forms', blank=True)
"kaehmy.CustomRole", related_name="forms", blank=True
)
preset_roles = models.ManyToManyField(
'kaehmy.PresetRole', related_name='forms', blank=True)
"kaehmy.PresetRole", related_name="forms", blank=True
)
def __str__(self):
"""Return model info."""
return _('Kaehmy application: {}').format(self.name)
return _("Kaehmy application: {}").format(self.name)
def comment_count(self):
"""Count comments for kaehmy."""
@@ -132,19 +138,25 @@ class Application(CommentParent):
presets = [r.name.capitalize() for r in self.preset_roles.filter(is_board=True)]
customs = [r.name.capitalize() for r in self.custom_roles.filter(is_board=True)]
combined = presets + customs
return _('Board: {}').format(', '.join(combined)) if len(combined) > 0 else ''
return _("Board: {}").format(", ".join(combined)) if len(combined) > 0 else ""
def official_roles(self):
presets = [r.name.capitalize() for r in self.preset_roles.filter(is_board=False)]
customs = [r.name.capitalize() for r in self.custom_roles.filter(is_board=False)]
presets = [
r.name.capitalize() for r in self.preset_roles.filter(is_board=False)
]
customs = [
r.name.capitalize() for r in self.custom_roles.filter(is_board=False)
]
combined = presets + customs
return _('Official: {}').format(', '.join(combined)) if len(combined) > 0 else ''
return (
_("Official: {}").format(", ".join(combined)) if len(combined) > 0 else ""
)
def all_roles(self):
presets = [r.name.capitalize() for r in self.preset_roles.all()]
customs = [r.name.capitalize() for r in self.custom_roles.all()]
combined = presets + customs
return ', '.join(combined) if len(combined) > 0 else ''
return ", ".join(combined) if len(combined) > 0 else ""
def has_any_board_role(self):
return self.preset_roles.filter(is_board=True).exists() or self.custom_roles.filter(is_board=True)
+8 -2
View File
@@ -8,6 +8,12 @@ from kaehmy.models import Application
class ExportTable(tables.Table):
class Meta:
model = Application
exclude = ['text', 'messageparent_ptr', 'custom_role_name', 'custom_role_is_board', 'timestamp']
exclude = [
"text",
"messageparent_ptr",
"custom_role_name",
"custom_role_is_board",
"timestamp",
]
all_roles = tables.Column(verbose_name=_('Roles'), orderable=False)
all_roles = tables.Column(verbose_name=_("Roles"), orderable=False)
+2 -2
View File
@@ -6,13 +6,13 @@ from kaehmy.models import PresetRole, CustomRole
@register(PresetRole)
class PresetRoleTranslationOptions(TranslationOptions):
""" Class for PresetRole translation options"""
"""Class for PresetRole translation options"""
fields = ()
@register(CustomRole)
class CustomRoleTranslationOptions(TranslationOptions):
""" Class for CustomROle translation options"""
"""Class for CustomROle translation options"""
fields = ()
+7 -6
View File
@@ -13,14 +13,15 @@ from kaehmy.views import export_view
urlpatterns = [
# kaehmy
url(r'^new', view),
url(r'^submit', submit),
url(r'^add_comment', comment),
url(r'^statistics', statistics_view),
url(r'^export', export_view),
url(r'^$', list_view),
url(r"^new", view),
url(r"^submit", submit),
url(r"^add_comment", comment),
url(r"^statistics", statistics_view),
url(r"^export", export_view),
url(r"^$", list_view),
]
if settings.DEBUG:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()