|
1 | 1 | from django import forms
|
| 2 | +from django.contrib.postgres.forms import SimpleArrayField |
2 | 3 | from django.utils.translation import gettext_lazy as _
|
3 | 4 |
|
| 5 | +from ipam.formfields import IPNetworkFormField |
| 6 | +from ipam.validators import prefix_validator |
4 | 7 | from users.models import *
|
5 |
| -from utilities.forms import BootstrapMixin |
6 |
| -from utilities.forms.widgets import BulkEditNullBooleanSelect |
| 8 | +from utilities.forms import BootstrapMixin, BulkEditForm |
| 9 | +from utilities.forms.widgets import BulkEditNullBooleanSelect, DateTimePicker |
7 | 10 |
|
8 | 11 | __all__ = (
|
9 | 12 | 'ObjectPermissionBulkEditForm',
|
10 | 13 | 'UserBulkEditForm',
|
| 14 | + 'TokenBulkEditForm', |
11 | 15 | )
|
12 | 16 |
|
13 | 17 |
|
@@ -70,3 +74,38 @@ class ObjectPermissionBulkEditForm(BootstrapMixin, forms.Form):
|
70 | 74 | (None, ('enabled', 'description')),
|
71 | 75 | )
|
72 | 76 | nullable_fields = ('description',)
|
| 77 | + |
| 78 | + |
| 79 | +class TokenBulkEditForm(BulkEditForm): |
| 80 | + pk = forms.ModelMultipleChoiceField( |
| 81 | + queryset=Token.objects.all(), |
| 82 | + widget=forms.MultipleHiddenInput |
| 83 | + ) |
| 84 | + write_enabled = forms.NullBooleanField( |
| 85 | + required=False, |
| 86 | + widget=BulkEditNullBooleanSelect, |
| 87 | + label=_('Write enabled') |
| 88 | + ) |
| 89 | + description = forms.CharField( |
| 90 | + max_length=200, |
| 91 | + required=False, |
| 92 | + label=_('Description') |
| 93 | + ) |
| 94 | + expires = forms.DateTimeField( |
| 95 | + required=False, |
| 96 | + widget=DateTimePicker(), |
| 97 | + label=_('Expires') |
| 98 | + ) |
| 99 | + allowed_ips = SimpleArrayField( |
| 100 | + base_field=IPNetworkFormField(validators=[prefix_validator]), |
| 101 | + required=False, |
| 102 | + label=_('Allowed IPs') |
| 103 | + ) |
| 104 | + |
| 105 | + model = Token |
| 106 | + fieldsets = ( |
| 107 | + (None, ('write_enabled', 'description', 'expires', 'allowed_ips')), |
| 108 | + ) |
| 109 | + nullable_fields = ( |
| 110 | + 'expires', 'description', 'allowed_ips', |
| 111 | + ) |
0 commit comments