SciPost Code Repository

Skip to content
Snippets Groups Projects
forms.py 2.44 KiB
Newer Older
__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"


from django import forms
from django.contrib.auth.models import User
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
from .models import Queue, Ticket, Followup


class QueueForm(forms.ModelForm):
    class Meta:
        model = Queue
        fields = ['name', 'slug', 'description',
                  'managing_group', 'response_groups',
                  'parent_queue']
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed


class TicketForm(forms.ModelForm):
    class Meta:
        model = Ticket
        fields = ['queue', 'title', 'description',
                  'defined_on', 'defined_by', 'priority', 'publicly_visible',
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
                  'deadline', 'status',
                  'concerning_object_type', 'concerning_object_id']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['title'].widget.attrs.update(
            {'placeholder': '[meaningful, short label, e.g. "Broken link on Publication page"]'})
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
        self.fields['defined_on'].widget = forms.HiddenInput()
        self.fields['defined_on'].disabled = True
        self.fields['defined_by'].widget = forms.HiddenInput()
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
        self.fields['deadline'].widget = forms.HiddenInput()
        self.fields['deadline'].disabled = True
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
        self.fields['status'].widget = forms.HiddenInput()
        self.fields['status'].disabled = True
        self.fields['concerning_object_type'].widget = forms.HiddenInput()
        self.fields['concerning_object_id'].widget = forms.HiddenInput()
        self.fields['concerning_object_id'].disabled = True
class TicketAssignForm(forms.ModelForm):
    class Meta:
        model = Ticket
        fields = ['assigned_to',]

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        group_ids = [k['id'] for k in list(self.instance.queue.response_groups.all().values('id'))]
        group_ids.append(self.instance.queue.managing_group.id)
        self.fields['assigned_to'].queryset = User.objects.filter(groups__id__in=group_ids).distinct()
Jean-Sébastien Caux's avatar
Jean-Sébastien Caux committed
class FollowupForm(forms.ModelForm):
    class Meta:
        model = Followup
        fields = ['ticket', 'text', 'by', 'timestamp', 'action']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['ticket'].widget = forms.HiddenInput()
        self.fields['by'].widget = forms.HiddenInput()
        self.fields['timestamp'].widget = forms.HiddenInput()
        self.fields['action'].widget = forms.HiddenInput()