2019-12-27 16:51:06 +01:00
|
|
|
from operator import attrgetter
|
|
|
|
|
2019-12-25 10:16:40 +01:00
|
|
|
from django.db import transaction
|
2019-12-27 16:51:06 +01:00
|
|
|
from django.forms import Form, ModelChoiceField, ModelForm
|
2019-12-25 10:16:40 +01:00
|
|
|
from django.utils.translation import ugettext_lazy as _
|
2019-12-24 17:28:41 +01:00
|
|
|
|
|
|
|
from c3nav.mapdata.forms import I18nModelFormMixin
|
2019-12-27 14:13:40 +01:00
|
|
|
from c3nav.mapdata.models.locations import Position
|
2019-12-25 10:16:40 +01:00
|
|
|
from c3nav.mapdata.models.report import Report, ReportUpdate
|
2019-12-24 17:28:41 +01:00
|
|
|
|
|
|
|
|
|
|
|
class ReportIssueForm(I18nModelFormMixin, ModelForm):
|
|
|
|
class Meta:
|
|
|
|
model = Report
|
|
|
|
fields = ['title', 'description']
|
|
|
|
|
|
|
|
|
|
|
|
class ReportMissingLocationForm(I18nModelFormMixin, ModelForm):
|
2019-12-24 18:47:07 +01:00
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.fields['created_groups'].label_from_instance = lambda obj: obj.title
|
|
|
|
|
2019-12-24 17:28:41 +01:00
|
|
|
class Meta:
|
|
|
|
model = Report
|
|
|
|
fields = ['title', 'description', 'created_title', 'created_groups']
|
2019-12-25 10:16:40 +01:00
|
|
|
|
|
|
|
|
|
|
|
class ReportUpdateForm(ModelForm):
|
|
|
|
def __init__(self, request, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.request = request
|
|
|
|
self.fields['open'].label = _('change status')
|
|
|
|
self.fields['open'].widget.choices = (
|
|
|
|
('unknown', _('don\'t change')),
|
|
|
|
('true', _('open')),
|
|
|
|
('false', _('closed')),
|
|
|
|
)
|
|
|
|
|
|
|
|
def save(self):
|
|
|
|
with transaction.atomic():
|
|
|
|
super().save()
|
|
|
|
report = self.instance.report
|
|
|
|
if self.instance.open is not None:
|
|
|
|
report.open = self.instance.open
|
|
|
|
if self.instance.assigned_to:
|
|
|
|
report.assigned_to = self.instance.assigned_to
|
|
|
|
report.save()
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
model = ReportUpdate
|
|
|
|
fields = ['open', 'comment', 'public']
|
2019-12-27 14:13:40 +01:00
|
|
|
|
|
|
|
|
|
|
|
class PositionForm(ModelForm):
|
|
|
|
class Meta:
|
|
|
|
model = Position
|
2019-12-27 18:31:54 +01:00
|
|
|
fields = ['name', 'timeout']
|
2019-12-27 16:51:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
class PositionSetForm(Form):
|
|
|
|
position = ModelChoiceField(Position.objects.none())
|
|
|
|
|
|
|
|
def __init__(self, request, *args, **kwargs):
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
self.fields['position'].queryset = Position.objects.filter(owner=request.user)
|
|
|
|
self.fields['position'].label_from_instance = attrgetter('name')
|