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.
239 lines
15 KiB
239 lines
15 KiB
{% extends request.is_ajax|yesno:'nullcont.htm,abonapp/ext.htm' %}
|
|
{% load i18n %}
|
|
{% load bootstrap3 %}
|
|
{% block content %}
|
|
|
|
<div class="row">
|
|
<div class="col-sm-12 col-xs-12 col-md-6">
|
|
<div class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">{% trans 'Change subscriber' %}</h3>
|
|
</div>
|
|
<div class="panel-body">
|
|
<form autocomplete="off" class="form-horizontal" action="{% url 'abonapp:abon_home' group.pk abon.username %}" method="post">{% csrf_token %}
|
|
|
|
{% bootstrap_field form.username label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
{% bootstrap_field form.fio label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
|
|
<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' group.pk abon.username %}" 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' group.pk abon.username %}" 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">
|
|
<div class="input-group input-group-sm">
|
|
<input type="text" value="{{ ip|default:'' }}" class="form-control" name="ip" placeholder="{% trans 'Not assigned' %}" id="ipfield" 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 %}/>
|
|
<span class="input-group-btn">
|
|
<a href="{% url 'abonapp:reset_ip' group.pk abon.username %}" class="btn btn-default btn-cmd" data-toggle="tooltip" title="{% trans 'Reset ip' %}" onclick="$('#ipfield').val('');">
|
|
<span class="glyphicon glyphicon-refresh"></span>
|
|
</a>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% bootstrap_field form.street label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
{% bootstrap_field form.house label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
{% bootstrap_field form.is_active label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
{% bootstrap_field form.group label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
|
|
<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>
|
|
|
|
{% bootstrap_field form.description label_class='col-sm-4' field_class='col-sm-8' form_group_class='form-group-sm' %}
|
|
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-4 col-sm-8 btn-group btn-group-sm">
|
|
|
|
{% trans 'Save' as tx %}
|
|
{% bootstrap_button tx button_type='submit' icon='floppy-disk' button_class='btn-primary' %}
|
|
|
|
{% if perms.taskapp.add_task %}
|
|
<a href="{% url 'taskapp:add' %}?uid={{ abon.username }}" class="btn btn-success" title="{% trans 'Add new task' %}">
|
|
<span class="glyphicon glyphicon-plus"></span> <span class="hidden-xs">{% trans 'Add new task' %}</span>
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-4 col-sm-8 btn-group btn-group-sm">
|
|
{% if ip and perms.abonapp.can_ping %}
|
|
<a href="{% url 'abonapp:ping' %}" class="btn btn-default btn-cmd" title="Ping" data-param="{{ ip }}">
|
|
<span class="glyphicon glyphicon-flash"></span> Ping
|
|
</a>
|
|
{% else %}
|
|
<a href="#" class="btn btn-default disabled">
|
|
<span class="glyphicon glyphicon-flash"></span> {% trans 'No have ip' %}
|
|
</a>
|
|
{% endif %}
|
|
|
|
{% if perms.dialing_app.can_send_sms %}
|
|
<a href="{% url 'dialapp:send_sms' %}?path={{ request.path|urlencode }}&dst={{ form.telephone.value|urlencode }}" class="btn btn-default btn-modal">
|
|
<span class="glyphicon glyphicon-envelope"></span> {% trans 'Send sms' %}
|
|
</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-12 col-xs-12 col-md-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 class="form-horizontal" action="{% url 'abonapp:save_user_dev_port' group.pk abon.username %}" method="post">{% csrf_token %}
|
|
|
|
<div class="form-group-sm">
|
|
<label for="id_method" class="col-sm-4 control-label">{% trans 'Device' %}</label>
|
|
<div class="col-sm-8 btn-group btn-group-sm">
|
|
{% if device %}
|
|
<a href="{% url 'devapp:view' group.pk device.pk %}" target="_blank" class="btn btn-sm btn-default" title="{% trans 'Mac Address' %}: {{ device.mac_addr|default:_('Not assigned') }}">
|
|
<span class="glyphicon glyphicon-hdd"></span> <span class="hidden-md">{{ device.comment|truncatechars:11 }} {{ device.ip_address }}</span>
|
|
</a>
|
|
<a href="{% url 'abonapp:clear_dev' group.pk abon.username %}" class="btn btn-sm btn-danger">
|
|
<span class="glyphicon glyphicon-remove-circle"></span> <span class="hidden-xs hidden-lg">{% trans 'Remove clutch' %}</span>
|
|
</a>
|
|
{% else %}
|
|
<a href="{% url 'abonapp:dev' group.pk abon.username %}" 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-4 control-label">{% trans 'Device port' %}</label>
|
|
<div class="col-sm-8">
|
|
<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 %}
|
|
{% endfor %}
|
|
</select>
|
|
</div>
|
|
</div>
|
|
<div class="form-group-sm">
|
|
<div class="col-sm-offset-4 col-sm-8 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-8 col-sm-offset-4">
|
|
<button type="submit" class="btn btn-primary btn-sm">
|
|
<span class="glyphicon glyphicon-floppy-disk"></span> {% trans 'Save' %}
|
|
</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 class="form-horizontal" action="{% url 'abonapp:extra_field_edit' group.pk abon.username %}" method="post">{% csrf_token %}
|
|
|
|
{% for ef in abon.extra_fields.all %}
|
|
<div class="form-group-sm">
|
|
<label class="col-sm-4 control-label">{{ ef.title }}</label>
|
|
<div class="col-sm-8">
|
|
|
|
<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' group.pk abon.username 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-4 col-sm-8 btn-group btn-group-sm">
|
|
<a href="{% url 'abonapp:extra_field' group.pk abon.username %}" 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 class="panel panel-default">
|
|
<div class="panel-heading">
|
|
<h3 class="panel-title">{% trans 'User flags' %}</h3>
|
|
</div>
|
|
<div class="panel-body">
|
|
{% for user_icon in abon.get_flag_icons %}
|
|
<span class="m-icon {{ user_icon }}"></span>
|
|
{% endfor %}
|
|
</div>
|
|
<div class="panel-footer">
|
|
<div class="btn-group">
|
|
<a href="{% url 'abonapp:markers_edit' group.pk abon.username %}" class="btn btn-default btn-modal">
|
|
<span class="glyphicon glyphicon-edit"></span> {% trans 'Edit' %}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|