Compare commits

...

2 Commits

Author SHA1 Message Date
Luca a8ba987102 feat(settings): limit applicable session types
continuous-integration/drone/push Build is passing Details
2023-12-14 19:40:51 +01:00
Luca 5ade964ac0 chore: s/pretalx musicrate plugin/pretalx-musicrate/ 2023-12-14 19:36:50 +01:00
9 changed files with 85 additions and 8 deletions

View File

@ -1,4 +1,4 @@
# pretalx musicrate plugin
# pretalx-musicrate
This is a [pretalx] plugin for rating music.

View File

@ -6,10 +6,10 @@ from . import __version__
class PluginApp(AppConfig):
name = "pretalx_musicrate"
verbose_name = "pretalx musicrate plugin"
verbose_name = "pretalx-musicrate"
class PretalxPluginMeta:
name = gettext_lazy("pretalx musicrate plugin")
name = gettext_lazy("pretalx-musicrate")
author = "Luca"
description = gettext_lazy("pretalx plugin for rating music")
visible = True

View File

@ -1,3 +1,5 @@
from django import forms
from django_scopes.forms import SafeModelMultipleChoiceField
from i18nfield.forms import I18nModelForm
from .models import MusicrateSettings
@ -7,8 +9,17 @@ class MusicrateSettingsForm(I18nModelForm):
def __init__(self, *args, event=None, **kwargs):
self.instance, _ = MusicrateSettings.objects.get_or_create(event=event)
super().__init__(*args, **kwargs, instance=self.instance, locales=event.locales)
if not event.submission_types.count():
self.fields.pop("submission_types")
else:
self.fields["submission_types"].queryset = event.submission_types.all()
class Meta:
model = MusicrateSettings
fields = ("some_setting",)
widgets = {}
fields = ("submission_types",)
widgets = {
"submission_types": forms.SelectMultiple(attrs={"class": "select2"}),
}
field_classes = {
"submission_types": SafeModelMultipleChoiceField,
}

View File

@ -0,0 +1,42 @@
# Generated by Django 4.2.8 on 2023-12-14 18:32
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
("submission", "0074_created_updated_everywhere"),
("event", "0035_created_updated_everywhere"),
]
operations = [
migrations.CreateModel(
name="MusicrateSettings",
fields=[
(
"id",
models.AutoField(
auto_created=True, primary_key=True, serialize=False
),
),
(
"event",
models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE,
related_name="pretalx_musicrate_settings",
to="event.event",
),
),
(
"submission_types",
models.ManyToManyField(
related_name="pretalx_musicrate_settings",
to="submission.submissiontype",
),
),
],
),
]

View File

View File

@ -1,4 +1,5 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
class MusicrateSettings(models.Model):
@ -7,4 +8,12 @@ class MusicrateSettings(models.Model):
on_delete=models.CASCADE,
related_name="pretalx_musicrate_settings",
)
some_setting = models.CharField(max_length=10, default="A")
submission_types = models.ManyToManyField(
to="submission.SubmissionType",
related_name="pretalx_musicrate_settings",
help_text=_(
"You can limit pretalx-musicrate to some session types. Leave this field empty to rate all session types."
),
verbose_name=_("Session Types"),
blank=True,
)

View File

@ -9,7 +9,7 @@ def pretalx_musicrate_settings(sender, request, **kwargs):
return []
return [
{
"label": "pretalx musicrate plugin",
"label": "pretalx-musicrate",
"url": reverse(
"plugins:pretalx_musicrate:settings",
kwargs={"event": request.event.slug},

View File

@ -0,0 +1,15 @@
{% extends "orga/base.html" %}
{% load bootstrap4 %}
{% load compress %}
{% load i18n %}
{% load static %}
{% block content %}
<h2>{% translate "pretalx-musicrate settings" %}</h2>
<form method="post">
{% csrf_token %}
{% bootstrap_form_errors form %}
{% bootstrap_field form.submission_types layout='event' %}
{% include "orga/includes/submit_row.html" %}
</form>
{% endblock %}

View File

@ -25,6 +25,6 @@ class MusicrateSettingsView(PermissionRequired, FormView):
def form_valid(self, form):
form.save()
messages.success(
self.request, _("The pretalx musicrate plugin settings were updated.")
self.request, _("The pretalx-musicrate settings were updated.")
)
return super().form_valid(form)