96 lines
2.3 KiB
Python
96 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import annotations
|
|
|
|
from crispy_forms.layout import Submit
|
|
from django import forms
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .base import Form
|
|
|
|
|
|
class AssociationForm(Form):
|
|
pass
|
|
|
|
|
|
class ConfirmationForm(AssociationForm):
|
|
canhazconfirm = forms.CharField(
|
|
label='',
|
|
required=True,
|
|
widget=forms.HiddenInput,
|
|
)
|
|
title = forms.CharField(
|
|
label=_('Title'),
|
|
required=False,
|
|
disabled=True,
|
|
show_hidden_initial=True,
|
|
)
|
|
url = forms.CharField(
|
|
label=_('URL'),
|
|
required=False,
|
|
disabled=True,
|
|
show_hidden_initial=True,
|
|
)
|
|
|
|
def get_layout_fields(self) -> list[str]:
|
|
return [
|
|
'canhazconfirm',
|
|
'title',
|
|
'url',
|
|
]
|
|
|
|
def get_submit_button(self) -> Submit:
|
|
return Submit('submit', _('Confirm'), css_class='btn btn-primary')
|
|
|
|
|
|
class EditForm(AssociationForm):
|
|
url = forms.CharField(
|
|
label=_('URL'),
|
|
required=False,
|
|
disabled=True,
|
|
show_hidden_initial=True,
|
|
)
|
|
target_title = forms.CharField(
|
|
label=_('Title'),
|
|
required=False,
|
|
)
|
|
target_description = forms.CharField(
|
|
label=_('Description'),
|
|
required=False,
|
|
widget=forms.Textarea,
|
|
)
|
|
|
|
def get_layout_fields(self) -> list[str]:
|
|
return [
|
|
'url',
|
|
'target_title',
|
|
'target_description',
|
|
]
|
|
|
|
def clean(self):
|
|
cleaned_data = super().clean()
|
|
|
|
result = {}
|
|
|
|
if cleaned_data['target_title']:
|
|
result['target_title'] = cleaned_data['target_title']
|
|
|
|
if cleaned_data['target_description']:
|
|
result['target_description'] = cleaned_data['target_description']
|
|
|
|
return result
|
|
|
|
|
|
class RefreshForm(ConfirmationForm):
|
|
def get_submit_button(self) -> Submit:
|
|
return Submit('submit', _('Refresh'), css_class='btn btn-warning')
|
|
|
|
|
|
class ArchiveForm(ConfirmationForm):
|
|
def get_submit_button(self) -> Submit:
|
|
return Submit('submit', _('Archive'), css_class='btn btn-danger')
|
|
|
|
|
|
class DeleteForm(ConfirmationForm):
|
|
def get_submit_button(self) -> Submit:
|
|
return Submit('submit', _('Delete'), css_class='btn btn-danger')
|