Add manage invites page.
This commit is contained in:
parent
48f7fd34a7
commit
70e69f73cb
8 changed files with 122 additions and 4 deletions
|
@ -1,5 +1,8 @@
|
|||
''' usin django model forms '''
|
||||
from django.forms import ModelForm, PasswordInput, HiddenInput
|
||||
import datetime
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.forms import ModelForm, PasswordInput, widgets
|
||||
from django import forms
|
||||
|
||||
from fedireads import models
|
||||
|
@ -115,3 +118,35 @@ class EditionForm(ModelForm):
|
|||
|
||||
class ImportForm(forms.Form):
|
||||
csv_file = forms.FileField()
|
||||
|
||||
class ExpiryWidget(widgets.Select):
|
||||
def value_from_datadict(self, data, files, name):
|
||||
selected_string = super().value_from_datadict(data, files, name)
|
||||
|
||||
if selected_string == 'day':
|
||||
interval = datetime.timedelta(days=1)
|
||||
elif selected_string == 'week':
|
||||
interval = datetime.timedelta(days=7)
|
||||
elif selected_string == 'month':
|
||||
interval = datetime.timedelta(days=31) # Close enough?
|
||||
elif selected_string == 'forever':
|
||||
return None
|
||||
else:
|
||||
return selected_string # "This will raise
|
||||
|
||||
return datetime.datetime.now() + interval
|
||||
|
||||
class CreateInviteForm(ModelForm):
|
||||
class Meta:
|
||||
model = models.SiteInvite
|
||||
exclude = ['code', 'user', 'times_used']
|
||||
widgets = {
|
||||
'expiry': ExpiryWidget(choices=[
|
||||
('day', 'One Day'),
|
||||
('week', 'One Week'),
|
||||
('month', 'One Month'),
|
||||
('forever', 'Does Not Expire')]),
|
||||
'use_limit': widgets.Select(
|
||||
choices=[(i, "%d uses" % (i,)) for i in [1, 5, 10, 25, 50, 100]]
|
||||
+ [(None, 'Unlimited')])
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue