Merge branch 'feature/periodic_upgrade' into 'develop'
Now the first column of table at control page is checkbox See merge request 2020-2021/online/s101/group-02/access_controller!60
This commit is contained in:
commit
8e5fdc6ad6
@ -8,6 +8,7 @@
|
||||
|
||||
{% block extra_css %}
|
||||
<link rel="stylesheet" href="{% static 'main/css/work.css' %}"/>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block extra_scripts %}
|
||||
@ -21,7 +22,7 @@
|
||||
<div class="container-md">
|
||||
|
||||
<div class="new-section">
|
||||
<p class="row page-description">Свободных Мест: {{ licences_remaining }}</p>
|
||||
<p class="row page-description" id="licences_remaining">Свободных Мест:</p>
|
||||
</div>
|
||||
|
||||
{% block form %}
|
||||
@ -37,10 +38,16 @@
|
||||
<table class="table table-dark light-table">
|
||||
|
||||
<thead>
|
||||
<th>
|
||||
<input
|
||||
type="checkbox"
|
||||
class="form-check-input"
|
||||
id="head-checkbox"
|
||||
/>
|
||||
</th>
|
||||
<th>Name</th>
|
||||
<th>Email</th>
|
||||
<th>Role</th>
|
||||
<th>Checked</th>
|
||||
</thead>
|
||||
<tbody id="tbody"></tbody>
|
||||
|
||||
|
@ -300,30 +300,6 @@ class AdminPageView(LoginRequiredMixin, PermissionRequiredMixin, SuccessMessageM
|
||||
make_light_agent(user, self.request.user)
|
||||
log(user, self.request.user.userprofile)
|
||||
|
||||
def get_context_data(self, **kwargs) -> dict:
|
||||
"""
|
||||
Функция формирования контента страницы администратора (с проверкой прав доступа)
|
||||
"""
|
||||
|
||||
# context = super().get_context_data(**kwargs)
|
||||
|
||||
# context['licences_remaining'] = max(0, ZENDESK_MAX_AGENTS - context['engineers'])
|
||||
# return context
|
||||
|
||||
context = setup_context(control_lit=True)
|
||||
context.update(super().get_context_data(**kwargs))
|
||||
users = get_list_or_404(
|
||||
UserProfile, role='agent')
|
||||
context['engineers'], context['light_agents'] = count_users(get_users_list())
|
||||
context.update({
|
||||
'users': users,
|
||||
'ZENDESK_ROLES': ZENDESK_ROLES,
|
||||
'engineers': context['engineers'],
|
||||
'light_agents': context['light_agents'],
|
||||
'licences_remaining': max(0, ZENDESK_MAX_AGENTS - context['engineers']),
|
||||
})
|
||||
return context # TODO: need to get profile page url
|
||||
|
||||
|
||||
class CustomLoginView(LoginView):
|
||||
"""
|
||||
@ -349,7 +325,8 @@ class UsersViewSet(viewsets.ReadOnlyModelViewSet):
|
||||
'users': serializer.data,
|
||||
'engineers': count[0],
|
||||
'light_agents': count[1],
|
||||
"zendesk_users": self.get_zendesk_users(self.choose_users(users.values, profiles))
|
||||
'zendesk_users': self.get_zendesk_users(self.choose_users(users.values, profiles)),
|
||||
'max_agents': ZENDESK_MAX_AGENTS
|
||||
}
|
||||
return Response(res)
|
||||
|
||||
|
@ -1,15 +1,18 @@
|
||||
"use strict";
|
||||
|
||||
function head_checkbox() {
|
||||
let head_checkbox = document.getElementById("head-checkbox");
|
||||
head_checkbox.addEventListener("click", () => {
|
||||
let checkboxes = document.getElementsByName("users");
|
||||
for (let checkbox of checkboxes) checkbox.click();
|
||||
});
|
||||
}
|
||||
|
||||
// React
|
||||
class ModelUserTableRow extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<tr className={"table-dark"}>
|
||||
<td>
|
||||
<a href="#">{this.props.user.name}</a>
|
||||
</td>
|
||||
<td>{this.props.user.user.email}</td>
|
||||
<td>{this.props.user.zendesk_role}</td>
|
||||
<td>
|
||||
<input
|
||||
type="checkbox"
|
||||
@ -18,6 +21,11 @@ class ModelUserTableRow extends React.Component {
|
||||
name="users"
|
||||
/>
|
||||
</td>
|
||||
<td>
|
||||
<a href="#">{this.props.user.name}</a>
|
||||
</td>
|
||||
<td>{this.props.user.user.email}</td>
|
||||
<td>{this.props.user.zendesk_role}</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
@ -38,12 +46,12 @@ class ZendeskUserTableRow extends React.Component {
|
||||
render() {
|
||||
return (
|
||||
<tr className={"table-secondary"}>
|
||||
<td></td>
|
||||
<td>
|
||||
<a href="#">{this.props.user.name}</a>
|
||||
</td>
|
||||
<td>{this.props.user.email}</td>
|
||||
<td>{this.props.user.zendesk_role}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
@ -68,9 +76,22 @@ class TableBody extends React.Component {
|
||||
engineers: 0,
|
||||
light_agents: 0,
|
||||
zendesk_users: [],
|
||||
max_agents: 3,
|
||||
};
|
||||
}
|
||||
|
||||
change_elemnts_html() {
|
||||
let elements = document.querySelectorAll(".info-quantity-value");
|
||||
let licences = document.getElementById("licences_remaining");
|
||||
elements[0].innerHTML = this.state.engineers;
|
||||
elements[1].innerHTML = this.state.light_agents;
|
||||
let max_licences = Math.max(
|
||||
this.state.max_agents - this.state.engineers,
|
||||
0
|
||||
);
|
||||
licences.innerHTML = "Свободных мест: " + max_licences;
|
||||
}
|
||||
|
||||
async get_users() {
|
||||
await axios.get("/api/users").then((response) => {
|
||||
this.setState({
|
||||
@ -78,11 +99,10 @@ class TableBody extends React.Component {
|
||||
engineers: response.data.engineers,
|
||||
light_agents: response.data.light_agents,
|
||||
zendesk_users: response.data.zendesk_users,
|
||||
max_agents: response.data.max_agents,
|
||||
});
|
||||
let elements = document.querySelectorAll(".info-quantity-value");
|
||||
elements[0].innerHTML = this.state.engineers;
|
||||
elements[1].innerHTML = this.state.light_agents;
|
||||
});
|
||||
this.change_elemnts_html();
|
||||
}
|
||||
|
||||
delete_pretext() {
|
||||
@ -111,3 +131,4 @@ class TableBody extends React.Component {
|
||||
}
|
||||
|
||||
ReactDOM.render(<TableBody />, document.getElementById("tbody"));
|
||||
head_checkbox();
|
||||
|
Loading…
x
Reference in New Issue
Block a user