You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
14 KiB
250 lines
14 KiB
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
|
|
{% load i18n %}
|
|
{% load guardian_tags %}
|
|
{% block content %}
|
|
|
|
<div class="row">
|
|
<div class="col-sm-6">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">{% trans 'Change subscriber' %}</h3>
|
|
</div>
|
|
<div class="panel-body">
|
|
<form role="form" class="form-horizontal" action="{% url 'abonapp:abon_home' abon_group.pk abon.pk %}" method="post">{% csrf_token %}
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_username" class="col-sm-4 control-label">{% trans 'login' %}</label>
|
|
<div class="col-sm-8">
|
|
{{ form.username }}{{ form.username.errors }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_fio" class="col-sm-4 control-label">{% trans 'fio' %}</label>
|
|
<div class="col-sm-8">
|
|
{{ form.fio }}{{ form.fio.errors }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_telephone" class="col-sm-4 control-label">{% trans 'Telephone' %}</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group input-group-sm">
|
|
{{ form.telephone }}{{ form.telephone.errors }}
|
|
<span class="input-group-btn">
|
|
<a href="sip:{{ form.telephone.value }}" class="btn btn-default" data-toggle="tooltip" title="{% trans 'Call to' %}">
|
|
<span class="glyphicon glyphicon-earphone"></span>
|
|
</a>
|
|
<a href="{% url 'abonapp:telephones' abon_group.pk abon.pk %}" class="btn btn-default btn-modal" data-toggle="tooltip" title="{% trans 'Additional telephones' %}">
|
|
<span class="glyphicon glyphicon-list"></span>
|
|
</a>
|
|
<a href="{% url 'abonapp:telephone_new' abon_group.pk abon.pk %}" class="btn btn-default btn-modal" data-toggle="tooltip" title="{% trans 'Add telephone' %}">
|
|
<span class="glyphicon glyphicon-plus"></span>
|
|
</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm{% if is_bad_ip %} has-error{% endif %}">
|
|
<label for="id_ip" class="col-sm-4 control-label">{% trans 'Ip Address' %}</label>
|
|
<div class="col-sm-8">
|
|
<input type="text" value="{{ ip|default:'' }}" class="form-control" name="ip" placeholder="{% trans 'Not assigned' %}" 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]?)$"{% if abon.is_dynamic_ip %} disabled{% endif %}/>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_street" class="col-sm-4 control-label">{% trans 'Street' %}</label>
|
|
|
|
<div class="col-sm-8">
|
|
{{ form.street }}{{ form.street.errors }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_house" class="col-sm-4 control-label">{% trans 'House' %}</label>
|
|
|
|
<div class="col-sm-8">
|
|
{{ form.house }}{{ form.house.errors }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_is_active" class="col-sm-4 control-label">{% trans 'Is active' %}</label>
|
|
<div class="col-sm-8">
|
|
{{ form.is_active }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_group" class="col-sm-4 control-label">{% trans 'User group' %}</label>
|
|
<div class="col-sm-8">
|
|
{{ form.group }}{{ form.group.errors }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_password" class="col-sm-4 control-label">{% trans 'Password' %}</label>
|
|
<div class="col-sm-8">
|
|
<div class="input-group input-group-sm">
|
|
{{ form.password }}{{ form.password.errors }}
|
|
<span class="input-group-btn">
|
|
<button type="button" class="btn btn-default" onmousedown="document.getElementById('id_password').type='text'" onmouseup="document.getElementById('id_password').type='password'">
|
|
<span class="glyphicon glyphicon-eye-open"></span>
|
|
</button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_description" class="col-sm-4 control-label">{% trans 'Comment' %}</label>
|
|
<div class="col-sm-8">
|
|
{{ form.description }}{{ form.description.errors }}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-4 col-sm-8 btn-group btn-group-sm">
|
|
<button type="submit" class="btn btn-primary btn-sm">
|
|
<span class="glyphicon glyphicon-floppy-disk"></span> {% trans 'Save' %}
|
|
</button>
|
|
{% if perms.taskapp.add_task %}
|
|
<a href="{% url 'taskapp:add' %}?uid={{ abon.username }}" class="btn btn-sm btn-success" title="{% trans 'Add new task' %}">
|
|
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add new task' %}
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
{% if ip and perms.abonapp.can_ping %}
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-4 col-sm-8 btn-group btn-group-sm">
|
|
<a href="{% url 'abonapp:ping' %}" class="btn btn-sm btn-default btn-cmd" title="Ping" data-param="{{ ip }}">
|
|
<span class="glyphicon glyphicon-check"></span> Ping
|
|
</a>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6">
|
|
{% if perms.abonapp.change_abon %}
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">{% trans 'Select the device' %}</h3>
|
|
</div>
|
|
|
|
<div class="panel-body">
|
|
<form role="form" class="form-horizontal" action="{% url 'abonapp:save_user_dev_port' abon_group.pk abon.pk %}" method="post">{% csrf_token %}
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_method" class="col-sm-2 control-label">{% trans 'Device' %}</label>
|
|
<div class="col-sm-10 btn-group btn-group-sm">
|
|
{% if device %}
|
|
<a href="{% url 'devapp:view' abon_group.pk device.pk %}" target="_blank" class="btn btn-sm btn-default" title="{% trans 'Mac Address' %} {{ device.mac_addr }}">
|
|
<span class="glyphicon glyphicon-hdd"></span> {{ device.comment|truncatechars:11 }} {{ device.ip_address }}
|
|
</a>
|
|
<a href="{% url 'abonapp:clear_dev' abon_group.pk abon.pk %}" class="btn btn-sm btn-danger">
|
|
<span class="glyphicon glyphicon-remove-circle"></span> {% trans 'Remove clutch' %}
|
|
</a>
|
|
{% else %}
|
|
<a href="{% url 'abonapp:dev' abon_group.pk abon.pk %}" class="btn btn-success btn-sm btn-modal">
|
|
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add clutch' %}
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
{% if device %}
|
|
<div class="form-group-sm">
|
|
<label for="id_dev_port" class="col-sm-2 control-label">{% trans 'Device port' %}</label>
|
|
<div class="col-sm-10">
|
|
<select id="id_dev_port" class="form-control" name="user_port">
|
|
<option value="0">{% trans 'Not assigned' %}</option>
|
|
{% for port in dev_ports %}
|
|
{% if port == abon.dev_port %}
|
|
<option value="{{ port.pk }}" selected>{{ port.num }}: {{ port.descr }}</option>
|
|
{% else %}
|
|
<option value="{{ port.pk }}">{{ port.num }}: {{ port.descr }}</option>
|
|
{% endif %}
|
|
{% empty %}
|
|
<option value="0">{% trans 'Ports does not exist' %}</option>
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-2 col-sm-10 checkbox">
|
|
<label>
|
|
<input type="checkbox" name="is_dynamic_ip"{% if abon.is_dynamic_ip %} checked{% endif %}> {% trans 'Is dynamic network settings' %}
|
|
</label>
|
|
</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-floppy-disk"></span> {% trans 'Save' %}
|
|
</button>
|
|
<button class="btn btn-default" type="reset" title="Reset">
|
|
<span class="glyphicon glyphicon-repeat"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
{% if perms.abonapp.add_extrafieldsmodel %}
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">{% trans 'Extra fields' %}</h3>
|
|
</div>
|
|
<div class="panel-body">
|
|
<form role="form" class="form-horizontal" action="{% url 'abonapp:extra_field_edit' abon_group.pk abon.pk %}" method="post">{% csrf_token %}
|
|
|
|
{% for ef in abon.extra_fields.all %}
|
|
<div class="form-group-sm">
|
|
<label class="col-sm-2 control-label">{{ ef.title }}</label>
|
|
<div class="col-sm-10">
|
|
|
|
<div class="input-group input-group-sm">
|
|
<input type="text" value="{{ ef.data|default:_('Not assigned') }}" class="form-control" pattern="{{ ef.get_regexp }}" name="ex">
|
|
<input type="hidden" value="{{ ef.pk }}" name="ed">
|
|
<span class="input-group-btn">
|
|
<a href="{% url 'abonapp:extra_field_delete' abon_group.pk abon.pk ef.pk %}" class="btn btn-danger" title="{% trans 'Delete' %}">
|
|
<span class="glyphicon glyphicon-remove"></span>
|
|
</a>
|
|
</span>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
{% empty %}
|
|
<h3>{% trans 'Extra field does not exist' %}</h3>
|
|
{% endfor %}
|
|
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-2 col-sm-10 btn-group btn-group-sm">
|
|
<a href="{% url 'abonapp:extra_field' abon_group.pk abon.pk %}" class="btn btn-success btn-modal" title="{% trans 'Add extra field' %}">
|
|
<span class="glyphicon glyphicon-plus"></span> {% trans 'Add' %}
|
|
</a>
|
|
|
|
<button class="btn btn-primary" type="submit">
|
|
<span class="glyphicon glyphicon-edit"></span> {% trans 'Save' %}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|