Skip to content
Snippets Groups Projects
Commit 76bdc68c authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

[Reformat] Make lint clean

parent c1348c0d
No related branches found
No related tags found
1 merge request!55WIP: Resolve "Migrate to AlekSIS app"
Pipeline #3501 failed
Showing
with 650 additions and 323 deletions
include:
- project: "AlekSIS/official/AlekSIS"
file: /ci/general.yml
- project: "AlekSIS/official/AlekSIS"
file: /ci/test.yml
- project: "AlekSIS/official/AlekSIS"
file: /ci/build_dist.yml
from ._version import __version__
default_app_config = "aleksis.apps.ticdesk.apps.TICDeskConfig"
from django_filters import FilterSet
from material import Layout, Row
from django.utils.translation import gettext_lazy as _
from .models import EventRegistration, TeckidsMember, Voucher, FeedbackAspect
from django_filters import FilterSet
from material import Layout, Row
from aleksis.core.filters import MultipleCharFilter
class EventRegistrationFilter(FilterSet):
from .models import EventRegistration, FeedbackAspect, TeckidsMember, Voucher
class EventRegistrationFilter(FilterSet):
class Meta:
model = EventRegistration
fields = ["person", "event", "accept_sepa", "date_registred"]
......@@ -16,19 +17,15 @@ class EventRegistrationFilter(FilterSet):
super().__init__(*args, **kwargs)
self.form.layout = Layout(
Row("person", "event"),
Row("accept_sepa", "date_registred"),
Row("person", "event"), Row("accept_sepa", "date_registred"),
)
class TeckidsMemberFilter(FilterSet):
name = MultipleCharFilter(
[
"person__first_name__icontains",
"person__last_name__icontains",
],
label = _("Search by name"),
["person__first_name__icontains", "person__last_name__icontains",],
label=_("Search by name"),
)
class Meta:
......@@ -45,18 +42,12 @@ class TeckidsMemberFilter(FilterSet):
class VoucherFilter(FilterSet):
event = MultipleCharFilter(
[
"project__short_name__icontains",
],
label = _("Search by event"),
["project__short_name__icontains",], label=_("Search by event"),
)
name = MultipleCharFilter(
[
"person__first_name__icontains",
"person__last_name__icontains",
],
label = _("Search by name"),
["person__first_name__icontains", "person__last_name__icontains",],
label=_("Search by name"),
)
class Meta:
......@@ -68,8 +59,8 @@ class VoucherFilter(FilterSet):
self.form.layout = Layout(Row("event", "name"))
class FeedbackAspectsFilter(FilterSet):
class FeedbackAspectsFilter(FilterSet):
class Meta:
model = FeedbackAspect
fields = ["aspect"]
This diff is collapsed.
......@@ -12,16 +12,8 @@ MENUS = {
("aleksis.core.util.predicates.permission_validator", "core.has_person")
],
"submenu": [
{
"name": _("Mail addresses"),
"url": "manage_mail",
"icon": "email",
},
{
"name": _("SSH keys"),
"url": "manage_ssh_keys",
"icon": "vpn_key",
},
{"name": _("Mail addresses"), "url": "manage_mail", "icon": "email",},
{"name": _("SSH keys"), "url": "manage_ssh_keys", "icon": "vpn_key",},
{
"name": _("PGP keys"),
"url": "manage_pgp_keys",
......@@ -146,16 +138,8 @@ MENUS = {
)
],
"submenu": [
{
"name": _("List members"),
"icon": "list",
"url": "members",
},
{
"name": _("New member"),
"icon": "add",
"url": "create_member",
},
{"name": _("List members"), "icon": "list", "url": "members",},
{"name": _("New member"), "icon": "add", "url": "create_member",},
],
},
],
......
......@@ -9,41 +9,118 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('core', '0004_auto_20200728_1145'),
('sites', '0002_alter_domain_unique'),
('ticdesk', '0006_teckidsmember'),
("core", "0004_auto_20200728_1145"),
("sites", "0002_alter_domain_unique"),
("ticdesk", "0006_teckidsmember"),
]
operations = [
migrations.AlterModelOptions(
name='globalpermissions',
options={'managed': False, 'permissions': (('view_vouchers', 'Can view vouchers'), ('edit_vouchers', 'Can edit vouchers'), ('delete_vouchers', 'Can delete vouchers'), ('create_vouchers', 'Can create vouchers'), ('edit_events', 'Can edit events'), ('create_events', 'Can create events'), ('delete_events', 'Can delete events'), ('generate_lists', 'Can generate lists'))},
name="globalpermissions",
options={
"managed": False,
"permissions": (
("view_vouchers", "Can view vouchers"),
("edit_vouchers", "Can edit vouchers"),
("delete_vouchers", "Can delete vouchers"),
("create_vouchers", "Can create vouchers"),
("edit_events", "Can edit events"),
("create_events", "Can create events"),
("delete_events", "Can delete events"),
("generate_lists", "Can generate lists"),
),
},
),
migrations.CreateModel(
name='EventRegistration',
name="EventRegistration",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)),
('date_registred', models.DateTimeField(auto_now_add=True, verbose_name='Registration date')),
('comment', models.TextField(verbose_name='Comment / remarks')),
('channel', models.CharField(max_length=255, verbose_name='Channel')),
('donation', models.PositiveIntegerField(verbose_name='Donation')),
('accept_sepa', models.BooleanField(verbose_name='SEPA direct debit')),
('iban', models.CharField(max_length=255, verbose_name='IBAN (for SEPA direct debit)')),
('accept_terms', models.BooleanField(verbose_name='Delcaration of consent by parents')),
('accept_data', models.BooleanField(verbose_name='Declaration of consent data protection')),
('accept_general_terms', models.BooleanField(verbose_name='Declatation of consent terms and condition')),
('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ticdesk.TeckidsProject', verbose_name='Event')),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Person', verbose_name='Person')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
('voucher', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ticdesk.Voucher', verbose_name='Voucher')),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"extended_data",
django.contrib.postgres.fields.jsonb.JSONField(
default=dict, editable=False
),
),
(
"date_registred",
models.DateTimeField(
auto_now_add=True, verbose_name="Registration date"
),
),
("comment", models.TextField(verbose_name="Comment / remarks")),
("channel", models.CharField(max_length=255, verbose_name="Channel")),
("donation", models.PositiveIntegerField(verbose_name="Donation")),
("accept_sepa", models.BooleanField(verbose_name="SEPA direct debit")),
(
"iban",
models.CharField(
max_length=255, verbose_name="IBAN (for SEPA direct debit)"
),
),
(
"accept_terms",
models.BooleanField(
verbose_name="Delcaration of consent by parents"
),
),
(
"accept_data",
models.BooleanField(
verbose_name="Declaration of consent data protection"
),
),
(
"accept_general_terms",
models.BooleanField(
verbose_name="Declatation of consent terms and condition"
),
),
(
"event",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="ticdesk.TeckidsProject",
verbose_name="Event",
),
),
(
"person",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="core.Person",
verbose_name="Person",
),
),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
(
"voucher",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="ticdesk.Voucher",
verbose_name="Voucher",
),
),
],
options={
'verbose_name': 'Registration',
'verbose_name_plural': 'Registrations',
"verbose_name": "Registration",
"verbose_name_plural": "Registrations",
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
),
]
......@@ -6,12 +6,16 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0007_auto_20200728_1145'),
("ticdesk", "0007_auto_20200728_1145"),
]
operations = [
migrations.AlterModelOptions(
name='teckidsproject',
options={'ordering': ('date_event',), 'verbose_name': 'Teckids project', 'verbose_name_plural': 'Teckids projects'},
name="teckidsproject",
options={
"ordering": ("date_event",),
"verbose_name": "Teckids project",
"verbose_name_plural": "Teckids projects",
},
),
]
......@@ -6,13 +6,24 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0008_auto_20200728_1352'),
("ticdesk", "0008_auto_20200728_1352"),
]
operations = [
migrations.AlterField(
model_name='eventregistration',
name='channel',
field=models.CharField(choices=[('none', 'No information'), ('internet', 'From internet'), ('school', 'From school'), ('friends', 'From friends'), ('parents', 'From parents'), ('newsletter', 'From newsletter')], max_length=255, verbose_name='Channel'),
model_name="eventregistration",
name="channel",
field=models.CharField(
choices=[
("none", "No information"),
("internet", "From internet"),
("school", "From school"),
("friends", "From friends"),
("parents", "From parents"),
("newsletter", "From newsletter"),
],
max_length=255,
verbose_name="Channel",
),
),
]
......@@ -6,28 +6,50 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0009_auto_20200728_1504'),
("ticdesk", "0009_auto_20200728_1504"),
]
operations = [
migrations.AlterField(
model_name='eventregistration',
name='channel',
field=models.CharField(blank=True, choices=[('none', 'No information'), ('internet', 'From internet'), ('school', 'From school'), ('friends', 'From friends'), ('parents', 'From parents'), ('newsletter', 'From newsletter')], max_length=255, null=True, verbose_name='Channel'),
model_name="eventregistration",
name="channel",
field=models.CharField(
blank=True,
choices=[
("none", "No information"),
("internet", "From internet"),
("school", "From school"),
("friends", "From friends"),
("parents", "From parents"),
("newsletter", "From newsletter"),
],
max_length=255,
null=True,
verbose_name="Channel",
),
),
migrations.AlterField(
model_name='eventregistration',
name='comment',
field=models.TextField(blank=True, null=True, verbose_name='Comment / remarks'),
model_name="eventregistration",
name="comment",
field=models.TextField(
blank=True, null=True, verbose_name="Comment / remarks"
),
),
migrations.AlterField(
model_name='eventregistration',
name='donation',
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='Donation'),
model_name="eventregistration",
name="donation",
field=models.PositiveIntegerField(
blank=True, null=True, verbose_name="Donation"
),
),
migrations.AlterField(
model_name='eventregistration',
name='iban',
field=models.CharField(blank=True, max_length=255, null=True, verbose_name='IBAN (for SEPA direct debit)'),
model_name="eventregistration",
name="iban",
field=models.CharField(
blank=True,
max_length=255,
null=True,
verbose_name="IBAN (for SEPA direct debit)",
),
),
]
......@@ -6,12 +6,26 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0010_auto_20200728_2017'),
("ticdesk", "0010_auto_20200728_2017"),
]
operations = [
migrations.AlterModelOptions(
name='globalpermissions',
options={'managed': False, 'permissions': (('view_vouchers', 'Can view vouchers'), ('edit_vouchers', 'Can edit vouchers'), ('delete_vouchers', 'Can delete vouchers'), ('create_vouchers', 'Can create vouchers'), ('edit_events', 'Can edit events'), ('create_events', 'Can create events'), ('delete_events', 'Can delete events'), ('generate_lists', 'Can generate lists'), ('manage_registrations', 'Can manage registrations'), ('view_registrations', 'Can view registrations'))},
name="globalpermissions",
options={
"managed": False,
"permissions": (
("view_vouchers", "Can view vouchers"),
("edit_vouchers", "Can edit vouchers"),
("delete_vouchers", "Can delete vouchers"),
("create_vouchers", "Can create vouchers"),
("edit_events", "Can edit events"),
("create_events", "Can create events"),
("delete_events", "Can delete events"),
("generate_lists", "Can generate lists"),
("manage_registrations", "Can manage registrations"),
("view_registrations", "Can view registrations"),
),
},
),
]
......@@ -6,18 +6,24 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0011_auto_20200728_2119'),
("ticdesk", "0011_auto_20200728_2119"),
]
operations = [
migrations.AddField(
model_name='teckidsmember',
name='dues',
field=models.PositiveIntegerField(default=60, verbose_name='Membership dues in €'),
model_name="teckidsmember",
name="dues",
field=models.PositiveIntegerField(
default=60, verbose_name="Membership dues in €"
),
),
migrations.AddField(
model_name='teckidsmember',
name='dues_sepa',
field=models.DateField(blank=True, null=True, verbose_name='Membership dues SEPA direct debit mandate'),
model_name="teckidsmember",
name="dues_sepa",
field=models.DateField(
blank=True,
null=True,
verbose_name="Membership dues SEPA direct debit mandate",
),
),
]
......@@ -6,13 +6,13 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0012_auto_20200729_1640'),
("ticdesk", "0012_auto_20200729_1640"),
]
operations = [
migrations.AlterField(
model_name='teckidsmember',
name='member_until',
field=models.DateField(blank=True, null=True, verbose_name='Member until'),
model_name="teckidsmember",
name="member_until",
field=models.DateField(blank=True, null=True, verbose_name="Member until"),
),
]
......@@ -7,13 +7,19 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0013_auto_20200729_1738'),
("ticdesk", "0013_auto_20200729_1738"),
]
operations = [
migrations.AlterField(
model_name='eventregistration',
name='voucher',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='ticdesk.Voucher', verbose_name='Voucher'),
model_name="eventregistration",
name="voucher",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
to="ticdesk.Voucher",
verbose_name="Voucher",
),
),
]
......@@ -6,18 +6,19 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sites', '0002_alter_domain_unique'),
('ticdesk', '0014_auto_20200731_1511'),
("sites", "0002_alter_domain_unique"),
("ticdesk", "0014_auto_20200731_1511"),
]
operations = [
migrations.RenameModel(
old_name='FeedbackAspects',
new_name='FeedbackAspect',
),
migrations.RenameModel(old_name="FeedbackAspects", new_name="FeedbackAspect",),
migrations.AddField(
model_name='teckidsproject',
name='feedback_aspects',
field=models.ManyToManyField(related_name='project', to='ticdesk.FeedbackAspect', verbose_name='Feedback aspects'),
model_name="teckidsproject",
name="feedback_aspects",
field=models.ManyToManyField(
related_name="project",
to="ticdesk.FeedbackAspect",
verbose_name="Feedback aspects",
),
),
]
......@@ -9,50 +9,151 @@ import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('core', '0004_auto_20200728_1145'),
('sites', '0002_alter_domain_unique'),
('ticdesk', '0015_auto_20200802_1340'),
("core", "0004_auto_20200728_1145"),
("sites", "0002_alter_domain_unique"),
("ticdesk", "0015_auto_20200802_1340"),
]
operations = [
migrations.CreateModel(
name='FeedbackFeedbackAspect',
name="FeedbackFeedbackAspect",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)),
('feedback', models.IntegerField()),
('aspect', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='ticdesk.FeedbackAspect')),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='core.Person')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
],
options={
'abstract': False,
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"extended_data",
django.contrib.postgres.fields.jsonb.JSONField(
default=dict, editable=False
),
),
("feedback", models.IntegerField()),
(
"aspect",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
to="ticdesk.FeedbackAspect",
),
),
(
"person",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE, to="core.Person"
),
),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
],
options={"abstract": False,},
managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
),
migrations.CreateModel(
name='EventFeedback',
name="EventFeedback",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('extended_data', django.contrib.postgres.fields.jsonb.JSONField(default=dict, editable=False)),
('comment_team', models.TextField(verbose_name='Comment for the team')),
('comment_public', models.TextField(verbose_name='Comment for the website')),
('comment_public_info', models.CharField(choices=[('first', 'Only first name'), ('first_age', 'First name and age'), ('first_last_age', 'First name, last name and age')], max_length=255, verbose_name='Comment info')),
('photos', models.FileField(upload_to='feedback_photos/', verbose_name='Photos')),
('photo_licence', models.CharField(choices=[('CC-BY-4.0+', 'Creative Commons with attribution, 4.0 or later'), ('CC-BY-SA-4.0+', 'Creative Commons with attribution and distribution only under the same conditions, 4.0 or later')], max_length=255, verbose_name='Photo licence')),
('feedback', models.ManyToManyField(to='ticdesk.FeedbackFeedbackAspect')),
('person', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_feedback', to='core.Person', verbose_name='Person')),
('project', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='feedback', to='ticdesk.TeckidsProject', verbose_name='Project')),
('site', models.ForeignKey(default=1, editable=False, on_delete=django.db.models.deletion.CASCADE, to='sites.Site')),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"extended_data",
django.contrib.postgres.fields.jsonb.JSONField(
default=dict, editable=False
),
),
("comment_team", models.TextField(verbose_name="Comment for the team")),
(
"comment_public",
models.TextField(verbose_name="Comment for the website"),
),
(
"comment_public_info",
models.CharField(
choices=[
("first", "Only first name"),
("first_age", "First name and age"),
("first_last_age", "First name, last name and age"),
],
max_length=255,
verbose_name="Comment info",
),
),
(
"photos",
models.FileField(
upload_to="feedback_photos/", verbose_name="Photos"
),
),
(
"photo_licence",
models.CharField(
choices=[
(
"CC-BY-4.0+",
"Creative Commons with attribution, 4.0 or later",
),
(
"CC-BY-SA-4.0+",
"Creative Commons with attribution and distribution only under the same conditions, 4.0 or later",
),
],
max_length=255,
verbose_name="Photo licence",
),
),
(
"feedback",
models.ManyToManyField(to="ticdesk.FeedbackFeedbackAspect"),
),
(
"person",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="event_feedback",
to="core.Person",
verbose_name="Person",
),
),
(
"project",
models.ForeignKey(
on_delete=django.db.models.deletion.CASCADE,
related_name="feedback",
to="ticdesk.TeckidsProject",
verbose_name="Project",
),
),
(
"site",
models.ForeignKey(
default=1,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
to="sites.Site",
),
),
],
options={
'verbose_name': 'Event feedback',
'verbose_name_plural': 'Event feedbacks',
"verbose_name": "Event feedback",
"verbose_name_plural": "Event feedbacks",
},
managers=[
('objects', django.contrib.sites.managers.CurrentSiteManager()),
],
managers=[("objects", django.contrib.sites.managers.CurrentSiteManager()),],
),
]
......@@ -6,23 +6,32 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0016_eventfeedback_feedbackfeedbackaspect'),
("ticdesk", "0016_eventfeedback_feedbackfeedbackaspect"),
]
operations = [
migrations.AlterField(
model_name='eventfeedback',
name='comment_public',
field=models.TextField(blank=True, null=True, verbose_name='Comment for the website'),
model_name="eventfeedback",
name="comment_public",
field=models.TextField(
blank=True, null=True, verbose_name="Comment for the website"
),
),
migrations.AlterField(
model_name='eventfeedback',
name='comment_team',
field=models.TextField(blank=True, null=True, verbose_name='Comment for the team'),
model_name="eventfeedback",
name="comment_team",
field=models.TextField(
blank=True, null=True, verbose_name="Comment for the team"
),
),
migrations.AlterField(
model_name='eventfeedback',
name='photos',
field=models.FileField(blank=True, null=True, upload_to='feedback_photos/', verbose_name='Photos'),
model_name="eventfeedback",
name="photos",
field=models.FileField(
blank=True,
null=True,
upload_to="feedback_photos/",
verbose_name="Photos",
),
),
]
......@@ -6,26 +6,13 @@ from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('ticdesk', '0017_auto_20200802_1507'),
("ticdesk", "0017_auto_20200802_1507"),
]
operations = [
migrations.RemoveField(
model_name='feedbackfeedbackaspect',
name='aspect',
),
migrations.RemoveField(
model_name='feedbackfeedbackaspect',
name='person',
),
migrations.RemoveField(
model_name='feedbackfeedbackaspect',
name='site',
),
migrations.DeleteModel(
name='EventFeedback',
),
migrations.DeleteModel(
name='FeedbackFeedbackAspect',
),
migrations.RemoveField(model_name="feedbackfeedbackaspect", name="aspect",),
migrations.RemoveField(model_name="feedbackfeedbackaspect", name="person",),
migrations.RemoveField(model_name="feedbackfeedbackaspect", name="site",),
migrations.DeleteModel(name="EventFeedback",),
migrations.DeleteModel(name="FeedbackFeedbackAspect",),
]
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from jsonstore import CharField, DateField, IntegerField
from jsonstore import CharField
from aleksis.core.models import Group, Person
from aleksis.core.models import Person
from .models import TeckidsMember
@Person.property_
def is_member_of(self, group):
""" Check if person is member of a given group """
return group in self.member_of.all()
@Person.property_
def is_member(self) -> bool:
"""Check if person is still a member."""
return (TeckidsMember.objects.filter(person=self).exists())
return TeckidsMember.objects.filter(person=self).exists()
# Additional fields for persons
Person.field(school=CharField(verbose_name=_("Name of school")))
......
......@@ -3,7 +3,7 @@ from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from aleksis.core.mixins import ExtensibleModel, PureDjangoModel
from aleksis.core.models import Person, Group
from aleksis.core.models import Person
class TeckidsMember(ExtensibleModel):
......@@ -11,11 +11,19 @@ class TeckidsMember(ExtensibleModel):
unique=True, verbose_name=_("Employee number")
)
member_since = models.DateField(verbose_name=_("Member since"))
member_until = models.DateField(verbose_name=_("Member until"), blank=True, null=True)
member_until = models.DateField(
verbose_name=_("Member until"), blank=True, null=True
)
title = models.TextField(verbose_name=_("Title / Role"))
dues = models.PositiveIntegerField(verbose_name=_("Membership dues in €"), default=60)
dues_sepa = models.DateField(verbose_name=_("Membership dues SEPA direct debit mandate"), blank=True, null=True)
dues = models.PositiveIntegerField(
verbose_name=_("Membership dues in €"), default=60
)
dues_sepa = models.DateField(
verbose_name=_("Membership dues SEPA direct debit mandate"),
blank=True,
null=True,
)
person = models.ForeignKey(Person, on_delete=models.CASCADE)
def __str__(self) -> str:
......@@ -133,7 +141,9 @@ class TeckidsProject(ExtensibleModel):
def clean(self):
if not self.gid_number:
self.gid_number = TeckidsProject.objects.order_by("-gid_number")[0].gid_number + 1
self.gid_number = (
TeckidsProject.objects.order_by("-gid_number")[0].gid_number + 1
)
super(TeckidsProject, self).clean()
......@@ -241,6 +251,7 @@ class Voucher(ExtensibleModel):
def __str__(self) -> str:
return self.code
class GlobalPermissions(models.Model, PureDjangoModel):
class Meta:
managed = False
......@@ -257,6 +268,7 @@ class GlobalPermissions(models.Model, PureDjangoModel):
("view_registrations", _("Can view registrations")),
)
class EventRegistration(ExtensibleModel):
class Meta:
verbose_name = _("Registration")
......@@ -271,21 +283,54 @@ class EventRegistration(ExtensibleModel):
("newsletter", _("From newsletter")),
]
event = models.ForeignKey(TeckidsProject, on_delete=models.CASCADE, verbose_name=_("Event"))
person = models.ForeignKey(Person, on_delete=models.CASCADE, verbose_name=_("Person"))
date_registred = models.DateTimeField(auto_now_add=True, verbose_name=_("Registration date"))
event = models.ForeignKey(
TeckidsProject, on_delete=models.CASCADE, verbose_name=_("Event")
)
person = models.ForeignKey(
Person, on_delete=models.CASCADE, verbose_name=_("Person")
)
date_registred = models.DateTimeField(
auto_now_add=True, verbose_name=_("Registration date")
)
comment = models.TextField(verbose_name=_("Comment / remarks"), blank=True, null=True)
channel = models.CharField(verbose_name=_("Channel"), max_length=255, choices=CHANNEL_CHOICES, blank=True, null=True)
voucher = models.ForeignKey(Voucher, on_delete=models.CASCADE, verbose_name=_("Voucher"), blank=True, null=True)
donation = models.PositiveIntegerField(verbose_name=_("Donation"), blank=True, null=True)
comment = models.TextField(
verbose_name=_("Comment / remarks"), blank=True, null=True
)
channel = models.CharField(
verbose_name=_("Channel"),
max_length=255,
choices=CHANNEL_CHOICES,
blank=True,
null=True,
)
voucher = models.ForeignKey(
Voucher,
on_delete=models.CASCADE,
verbose_name=_("Voucher"),
blank=True,
null=True,
)
donation = models.PositiveIntegerField(
verbose_name=_("Donation"), blank=True, null=True
)
accept_sepa = models.BooleanField(verbose_name=_("SEPA direct debit"))
iban = models.CharField(max_length=255, verbose_name=_("IBAN (for SEPA direct debit)"), blank=True, null=True)
iban = models.CharField(
max_length=255,
verbose_name=_("IBAN (for SEPA direct debit)"),
blank=True,
null=True,
)
accept_terms = models.BooleanField(verbose_name=_("Delcaration of consent by parents"))
accept_data = models.BooleanField(verbose_name=_("Declaration of consent data protection"))
accept_general_terms = models.BooleanField(verbose_name=_("Declatation of consent terms and condition"))
accept_terms = models.BooleanField(
verbose_name=_("Delcaration of consent by parents")
)
accept_data = models.BooleanField(
verbose_name=_("Declaration of consent data protection")
)
accept_general_terms = models.BooleanField(
verbose_name=_("Declatation of consent terms and condition")
)
def __str__(self) -> str:
return f"{self.event}, {self.person.first_name} {self.person.last_name}"
......@@ -5,7 +5,7 @@ from rules import predicate
from aleksis.core.models import Group, Person
from aleksis.core.util.predicates import check_object_permission
from .models import Voucher, SSHKey, PGPKey
from .models import PGPKey, SSHKey, Voucher
User = get_user_model()
......@@ -25,12 +25,14 @@ def see_owned_groups_members(user: User, person: Person) -> bool:
return Person.member_of.filter(id__in=groups_list).exists()
@predicate
def is_own_voucher(user: User, voucher: Voucher) -> bool:
"""Predicate which checks if the voucher belongs to the user."""
return voucher.person == user.person
@predicate
def is_own_ssh_key(user: User, ssh_key: SSHKey) -> bool:
"""Predicate which checks if the ssh_key belongs to the user."""
......
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