feat: add assignee form
This commit is contained in:
parent
122c120eae
commit
f3b5473cd3
|
@ -1,8 +1,9 @@
|
||||||
from django import forms
|
from django import forms
|
||||||
from django_scopes.forms import SafeModelChoiceField, SafeModelMultipleChoiceField
|
from django_scopes.forms import SafeModelChoiceField, SafeModelMultipleChoiceField
|
||||||
from i18nfield.forms import I18nModelForm
|
from i18nfield.forms import I18nModelForm
|
||||||
|
from pretalx.person.models import User
|
||||||
|
|
||||||
from .models import MusicrateSettings, Rating
|
from .models import Assignee, MusicrateSettings, Rating
|
||||||
|
|
||||||
|
|
||||||
class MusicrateSettingsForm(I18nModelForm):
|
class MusicrateSettingsForm(I18nModelForm):
|
||||||
|
@ -56,3 +57,23 @@ class RatingForm(forms.ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Rating
|
model = Rating
|
||||||
fields = ("rating",)
|
fields = ("rating",)
|
||||||
|
|
||||||
|
|
||||||
|
class AssigneeForm(forms.ModelForm):
|
||||||
|
def __init__(self, *args, submission=None, **kwargs):
|
||||||
|
try:
|
||||||
|
self.instance = Assignee.objects.get(submission=submission)
|
||||||
|
except Assignee.DoesNotExist:
|
||||||
|
self.instance = Assignee(submission=submission)
|
||||||
|
super().__init__(*args, instance=self.instance, **kwargs)
|
||||||
|
self.fields["user"].queryset = User.objects.none().union(
|
||||||
|
*(
|
||||||
|
t.members.all()
|
||||||
|
for t in submission.event.teams.filter(can_change_submissions=True)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Assignee
|
||||||
|
fields = ("user",)
|
||||||
|
widgets = {"user": forms.Select(attrs={"class": "select2"})}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
{% extends "orga/base.html" %}
|
||||||
|
{% load bootstrap4 %}
|
||||||
|
{% load i18n %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h2>{% blocktranslate with title=submission.title %}Assignee for {{ quotation_open }}{{ title }}{{ quotation_close }}{% endblocktranslate %}</h2>
|
||||||
|
<form method="post">
|
||||||
|
{% csrf_token %}
|
||||||
|
{% bootstrap_form_errors form %}
|
||||||
|
{% bootstrap_field form.user layout='event' %}
|
||||||
|
<div class="submit-group panel">
|
||||||
|
<span></span>
|
||||||
|
<span>
|
||||||
|
<button type="submit" class="btn btn-success btn-lg">
|
||||||
|
<i class="fa fa-check"></i>
|
||||||
|
{% translate "Save" %}
|
||||||
|
</button>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
{% endblock %}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
from django.urls import include, path
|
from django.urls import include, path
|
||||||
|
|
||||||
from .views import (
|
from .views import (
|
||||||
|
AssigneeView,
|
||||||
ExportView,
|
ExportView,
|
||||||
JoinView,
|
JoinView,
|
||||||
MayAdvanceView,
|
MayAdvanceView,
|
||||||
|
@ -12,14 +13,26 @@ from .views import (
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path(
|
path(
|
||||||
"orga/event/<slug:event>/settings/p/pretalx_musicrate/",
|
"orga/event/<slug:event>/",
|
||||||
include(
|
include(
|
||||||
[
|
[
|
||||||
path("", MusicrateSettingsView.as_view(), name="settings.musicrate"),
|
path(
|
||||||
|
"settings/p/pretalx_musicrate/",
|
||||||
|
MusicrateSettingsView.as_view(),
|
||||||
|
name="settings.musicrate",
|
||||||
|
),
|
||||||
|
path(
|
||||||
|
"p/pretalx_musicrate/",
|
||||||
|
include(
|
||||||
|
[
|
||||||
|
path("<code>/", AssigneeView.as_view(), name="assignee"),
|
||||||
path("export/", ExportView.as_view(), name="export"),
|
path("export/", ExportView.as_view(), name="export"),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
),
|
||||||
path(
|
path(
|
||||||
"<slug:event>/p/pretalx_musicrate/",
|
"<slug:event>/p/pretalx_musicrate/",
|
||||||
include(
|
include(
|
||||||
|
|
|
@ -15,8 +15,9 @@ from django.views.generic import FormView, TemplateView, View
|
||||||
from django.views.generic.detail import SingleObjectMixin
|
from django.views.generic.detail import SingleObjectMixin
|
||||||
from django_context_decorator import context
|
from django_context_decorator import context
|
||||||
from pretalx.common.mixins.views import EventPermissionRequired
|
from pretalx.common.mixins.views import EventPermissionRequired
|
||||||
|
from pretalx.submission.models import Submission
|
||||||
|
|
||||||
from .forms import MusicrateSettingsForm, RatingForm
|
from .forms import AssigneeForm, MusicrateSettingsForm, RatingForm
|
||||||
from .models import Juror, Rating
|
from .models import Juror, Rating
|
||||||
|
|
||||||
youtube_re = re.compile(
|
youtube_re = re.compile(
|
||||||
|
@ -439,3 +440,33 @@ class ExportView(EventPermissionRequired, View):
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
|
class AssigneeView(EventPermissionRequired, FormView, SingleObjectMixin):
|
||||||
|
form_class = AssigneeForm
|
||||||
|
model = Submission
|
||||||
|
permission_required = "orga.change_submissions"
|
||||||
|
slug_field = "code"
|
||||||
|
slug_url_kwarg = "code"
|
||||||
|
template_name = "pretalx_musicrate/assignee.html"
|
||||||
|
|
||||||
|
def get_form_kwargs(self):
|
||||||
|
kwargs = super().get_form_kwargs()
|
||||||
|
kwargs["submission"] = self.object
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
def get_success_url(self):
|
||||||
|
return self.request.path
|
||||||
|
|
||||||
|
def form_valid(self, form):
|
||||||
|
form.save()
|
||||||
|
messages.success(self.request, _("Saved!"))
|
||||||
|
return super().form_valid(form)
|
||||||
|
|
||||||
|
def get(self, *args, **kwargs):
|
||||||
|
self.object = self.get_object()
|
||||||
|
return super().get(*args, **kwargs)
|
||||||
|
|
||||||
|
def post(self, *args, **kwargs):
|
||||||
|
self.object = self.get_object()
|
||||||
|
return super().post(*args, **kwargs)
|
||||||
|
|
Loading…
Reference in New Issue