Browse Source

Добавил форму для option82

devel
bashmak 9 years ago
parent
commit
daacb33700
  1. 27
      abonapp/formfields.py
  2. 14
      abonapp/forms.py
  3. 24
      abonapp/templates/abonapp/editAbon.html
  4. 2
      abonapp/templates/abonapp/group_list.html
  5. 1
      abonapp/urls_abon.py
  6. 24
      abonapp/views.py

27
abonapp/formfields.py

@ -1,17 +1,24 @@
from django.forms import Field
from django.forms import CharField
from django.forms.widgets import TextInput
from django.core.validators import RegexValidator, _lazy_re_compile
from django.forms.fields import EMPTY_VALUES
#"From Django 1.8: The django.forms.util module has been renamed. Use django.forms.utils instead."
try:
from django.forms.utils import ValidationError
except ImportError:
from django.forms.util import ValidationError
from django.forms.utils import ValidationError
from django.utils.translation import ugettext_lazy as _
from netaddr import EUI, AddrFormatError
class MACAddressField(Field):
mac_address_validator = RegexValidator(
_lazy_re_compile(r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$'),
message=_('Enter a valid integer.'),
code='invalid',
)
class MACAddressField(CharField):
widget = TextInput
default_validators = [mac_address_validator]
default_error_messages = {
'invalid': 'Enter a valid MAC Address.',
'invalid': _('Enter a valid MAC Address.'),
}
def clean(self, value):
@ -27,5 +34,3 @@ class MACAddressField(Field):
except (ValueError, TypeError, AddrFormatError):
raise ValidationError(self.error_messages['invalid'])
return value

14
abonapp/forms.py

@ -5,6 +5,7 @@ from django.contrib.auth.hashers import make_password
from random import choice
from string import digits, ascii_lowercase
from . import models
from .formfields import MACAddressField
def generate_random_username(length=6, chars=digits, split=2, delimiter=''):
@ -74,6 +75,19 @@ class AbonForm(forms.ModelForm):
return acc
class Opt82Form(forms.ModelForm):
mac = MACAddressField(widget=forms.TextInput(attrs={'class': 'form-control', 'pattern': r'^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$', 'required': ''}))
class Meta:
model = models.Opt82
fields = '__all__'
widgets = {
'port': forms.NumberInput(attrs={'class': 'form-control', 'required': ''})
}
#def save(self, commit=True):
# super().save(commit=commit)
class AbonGroupForm(forms.ModelForm):
class Meta:
model = models.AbonGroup

24
abonapp/templates/abonapp/editAbon.html

@ -111,12 +111,30 @@
<h3 class="panel-title">{% trans 'Technical information' %}</h3>
</div>
<div class="panel-body">
<form role="form" class="form-horizontal" action="#" method="post">{% csrf_token %}
<form role="form" class="form-horizontal" action="{% url 'abonapp:opt82' abon_group.pk abon.pk %}" method="post">{% csrf_token %}
<div class="form-group-sm">
<label for="id_ip" class="col-sm-2 control-label">{% trans 'Ip Address' %}</label>
<label for="id_ip" class="col-sm-2 control-label">{% trans 'Mac Address' %}</label>
<div class="col-sm-10">
<input type="text" value="{{ ip|default:'' }}" class="form-control" name="ip" placeholder="192.168.0.101" pattern="^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$"/>
{{ tech_form.mac }}{{ tech_form.mac.errors }}
</div>
</div>
<div class="form-group-sm">
<label for="id_ip" class="col-sm-2 control-label">{% trans 'Port' %}</label>
<div class="col-sm-10">
{{ tech_form.port }}{{ tech_form.port.errors }}
</div>
</div>
<div class="form-group-sm">
<div class="col-sm-offset-2 col-sm-10 btn-group btn-group-sm">
<button type="submit" class="btn btn-primary btn-sm">
<span class="glyphicon glyphicon-save"></span> {% trans 'Save' %}
</button>
<button type="reset" class="btn btn-default btn-sm">
<span class="glyphicon glyphicon-refresh"></span> {% trans 'Reset' %}
</button>
</div>
</div>

2
abonapp/templates/abonapp/group_list.html

@ -45,7 +45,7 @@
{% endif %}
<a href="{% url 'abonapp:ch_group_tariff' gr.pk %}" class="btn btn-sm btn-default"
title="{% trans 'User groups' %}">
<span class="glyphicon glyphicon-subscript"></span>
<span class="glyphicon glyphicon-cog"></span>
</a>
</td>
</tr>

1
abonapp/urls_abon.py

@ -19,6 +19,7 @@ urlpatterns = [
url(r'^(?P<uid>\d+)/passport_view$', views.passport_view, name='passport_view'),
url(r'^(?P<uid>\d+)/complete_service(?P<srvid>\d+)$', views.complete_service, name='compl_srv'),
url(r'^(?P<uid>\d+)/activate_service(?P<srvid>\d+)$', views.activate_service, name='activate_service'),
url(r'^(?P<uid>\d+)/opt82$', views.opt82, name='opt82'),
url(r'^(?P<uid>\d+)/unsubscribe_service(?P<srvid>\d+)$', views.unsubscribe_service,
name='unsubscribe_service'),

24
abonapp/views.py

@ -276,7 +276,8 @@ def abonhome(request, gid, uid):
'form': frm or forms.AbonForm(instance=abon, initial={'password': passw}),
'abon': abon,
'abon_group': abon_group,
'ip': abon.ip_address
'ip': abon.ip_address,
'tech_form': forms.Opt82Form(instance=abon.opt82)
})
else:
return render(request, 'abonapp/viewAbon.html', {
@ -287,6 +288,27 @@ def abonhome(request, gid, uid):
})
@login_required
@mydefs.only_admins
def opt82(request, gid, uid):
try:
abon = models.Abon.objects.get(pk=uid)
if request.method == 'POST':
if abon.opt82 is None:
frm = forms.Opt82Form(request.POST)
else:
frm = forms.Opt82Form(request.POST, instance=abon.opt82)
if frm.is_valid():
abon.opt82 = frm.save()
abon.save(update_fields=['opt82'])
else:
messages.error(request, _('fix form errors'))
except models.Abon.DoesNotExist:
messages.error(request, _('User does not exist'))
return redirect('abonapp:abon_home', gid=gid, uid=uid)
@mydefs.require_ssl
def terminal_pay(request):
from .pay_systems import allpay

Loading…
Cancel
Save