Added admin groups and delete users events. Also fixed missing creation of /admin group in nextcloud.
parent
90ef56bbdf
commit
cc1d33efef
|
@ -114,50 +114,56 @@ class Admin():
|
|||
|
||||
try:
|
||||
log.warning('MOODLE: Adding default group admin')
|
||||
self.moodle.add_system_cohort('admin','system admins')
|
||||
self.moodle.add_system_cohort('/admin','system admins')
|
||||
log.warning('MOODLE: OK')
|
||||
except:
|
||||
log.warning('MOODLE: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('MOODLE: Adding default group manager')
|
||||
self.moodle.add_system_cohort('manager','system managers')
|
||||
self.moodle.add_system_cohort('/manager','system managers')
|
||||
log.warning('MOODLE: OK')
|
||||
except:
|
||||
log.warning('MOODLE: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('MOODLE: Adding default group teacher')
|
||||
self.moodle.add_system_cohort('teacher','system teacher')
|
||||
self.moodle.add_system_cohort('/teacher','system teacher')
|
||||
log.warning('MOODLE: OK')
|
||||
except:
|
||||
log.warning('MOODLE: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('MOODLE: Adding default group student')
|
||||
self.moodle.add_system_cohort('student','system student')
|
||||
self.moodle.add_system_cohort('/student','system student')
|
||||
log.warning('MOODLE: OK')
|
||||
except:
|
||||
log.warning('MOODLE: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('NEXTCLOUD: Adding default group admin')
|
||||
self.nextcloud.add_group('/admin')
|
||||
log.warning('NEXTCLOUD: OK')
|
||||
except ProviderItemExists:
|
||||
log.warning('NEXTCLOUD: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('NEXTCLOUD: Adding default group manager')
|
||||
self.nextcloud.add_group('manager')
|
||||
self.nextcloud.add_group('/manager')
|
||||
log.warning('NEXTCLOUD: OK')
|
||||
except ProviderItemExists:
|
||||
log.warning('NEXTCLOUD: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('NEXTCLOUD: Adding default group teacher')
|
||||
self.nextcloud.add_group('teacher')
|
||||
self.nextcloud.add_group('/teacher')
|
||||
log.warning('NEXTCLOUD: OK')
|
||||
except ProviderItemExists:
|
||||
log.warning('NEXTCLOUD: Seems to be there already')
|
||||
|
||||
try:
|
||||
log.warning('NEXTCLOUD: Adding default group student')
|
||||
self.nextcloud.add_group('student')
|
||||
self.nextcloud.add_group('/student')
|
||||
log.warning('NEXTCLOUD: OK')
|
||||
except ProviderItemExists:
|
||||
log.warning('NEXTCLOUD: Seems to be there already')
|
||||
|
@ -200,7 +206,7 @@ class Admin():
|
|||
|
||||
try:
|
||||
log.warning('NEXTCLOUD: Adding user ddadmin and adding to group admin')
|
||||
self.nextcloud.add_user(dduser,ddpassword,group='admin',email=ddmail,displayname='DD Admin')
|
||||
self.nextcloud.add_user(dduser,ddpassword,group='/admin',email=ddmail,displayname='DD Admin')
|
||||
log.warning('NEXTCLOUD: OK')
|
||||
except ProviderItemExists:
|
||||
log.warning('NEXTCLOUD: Seems to be there already')
|
||||
|
@ -360,7 +366,7 @@ class Admin():
|
|||
mgroups=[] if mgroups is None else mgroups
|
||||
ngroups=[] if ngroups is None else ngroups
|
||||
|
||||
kgroups_names=[g['name'] for g in kgroups]
|
||||
kgroups_names=[g['path'] for g in kgroups]
|
||||
mgroups_names=[g['name'] for g in mgroups]
|
||||
ngroups_names=ngroups
|
||||
|
||||
|
@ -369,7 +375,7 @@ class Admin():
|
|||
groups=[]
|
||||
for name in all_groups_names:
|
||||
thegroup={}
|
||||
keycloak_exists=[g for g in kgroups if g['name'] == name]
|
||||
keycloak_exists=[g for g in kgroups if g['path'] == name]
|
||||
if len(keycloak_exists):
|
||||
thegroup=keycloak_exists[0]
|
||||
thegroup['keycloak']=True
|
||||
|
@ -784,10 +790,15 @@ class Admin():
|
|||
|
||||
def delete_user(self,userid):
|
||||
log.warning('deleting user moodle, nextcloud keycloak')
|
||||
ev=Events('Deleting user','Deleting from moodle')
|
||||
self.delete_moodle_user(userid)
|
||||
ev.update_text('Deleting from nextcloud')
|
||||
self.delete_nextcloud_user(userid)
|
||||
ev.update_text('Deleting from keycloak')
|
||||
self.delete_keycloak_user(userid)
|
||||
ev.update_text('Syncing data from applications...')
|
||||
self.resync_data()
|
||||
ev.update_text('User deleted')
|
||||
return True
|
||||
|
||||
def get_user(self,userid):
|
||||
|
|
|
@ -90,41 +90,10 @@ $(document).ready(function() {
|
|||
"width": "10px",
|
||||
"defaultContent": '<button class="btn btn-xs btn-info" type="button" data-placement="top" ><i class="fa fa-plus"></i></button>'
|
||||
},
|
||||
{ "data": "id", "width": "10px" },
|
||||
{ "data": "keycloak", "width": "10px" },
|
||||
{ "data": "moodle", "width": "10px" },
|
||||
{ "data": "nextcloud", "width": "10px" },
|
||||
{ "data": "name", "width": "10px" },
|
||||
{ "data": "path", "width": "10px" },
|
||||
],
|
||||
"order": [[3, 'asc']],
|
||||
"columnDefs": [ {
|
||||
"targets": 2,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
if(full.keycloak){
|
||||
return '<i class="fa fa-check" style="color:lightgreen"></i>'
|
||||
}else{
|
||||
return '<i class="fa fa-close" style="color:darkred"></i>'
|
||||
};
|
||||
}},
|
||||
{
|
||||
"targets": 3,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
if(full.moodle){
|
||||
return '<i class="fa fa-check" style="color:lightgreen"></i>'
|
||||
}else{
|
||||
return '<i class="fa fa-close" style="color:darkred"></i>'
|
||||
};
|
||||
}},
|
||||
{
|
||||
"targets": 4,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
if(full.nextcloud){
|
||||
return '<i class="fa fa-check" style="color:lightgreen"></i>'
|
||||
}else{
|
||||
return '<i class="fa fa-close" style="color:darkred"></i>'
|
||||
};
|
||||
}},
|
||||
]
|
||||
"order": [[2, 'asc']],
|
||||
// "columnDefs": [ ]
|
||||
} );
|
||||
})
|
|
@ -0,0 +1,130 @@
|
|||
|
||||
$(document).on('shown.bs.modal', '#modalAddDesktop', function () {
|
||||
modal_add_desktops.columns.adjust().draw();
|
||||
});
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$('.btn-global-resync').on('click', function () {
|
||||
$.ajax({
|
||||
type: "GET",
|
||||
url:"api/resync",
|
||||
success: function(data)
|
||||
{
|
||||
table.ajax.reload();
|
||||
// $("#modalImport").modal('hide');
|
||||
// users_table.ajax.reload();
|
||||
// groups_table.ajax.reload();
|
||||
},
|
||||
error: function(data)
|
||||
{
|
||||
alert('Something went wrong on our side...')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Open new group modal
|
||||
$('.btn-new').on('click', function () {
|
||||
$('#modalAddGroup').modal({
|
||||
backdrop: 'static',
|
||||
keyboard: false
|
||||
}).modal('show');
|
||||
});
|
||||
|
||||
// Send new group form
|
||||
$('#modalAddGroup #send').on('click', function () {
|
||||
var form = $('#modalAddGroupForm');
|
||||
formdata = form.serializeObject()
|
||||
console.log('NEW GROUP')
|
||||
console.log(formdata)
|
||||
// $.ajax({
|
||||
// type: "POST",
|
||||
// "url": "/groups_list",
|
||||
// success: function(data)
|
||||
// {
|
||||
// console.log('SUCCESS')
|
||||
// // $("#modalAddGroup").modal('hide');
|
||||
// },
|
||||
// error: function(data)
|
||||
// {
|
||||
// alert('Something went wrong on our side...')
|
||||
// }
|
||||
// });
|
||||
});
|
||||
|
||||
$('.btn-delete_keycloak').on('click', function () {
|
||||
$.ajax({
|
||||
type: "DELETE",
|
||||
url:"/api/groups/keycloak",
|
||||
success: function(data)
|
||||
{
|
||||
console.log('SUCCESS')
|
||||
// $("#modalImport").modal('hide');
|
||||
// users_table.ajax.reload();
|
||||
// groups_table.ajax.reload();
|
||||
},
|
||||
error: function(data)
|
||||
{
|
||||
alert('Something went wrong on our side...')
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
//DataTable Main renderer
|
||||
var table = $('#groups').DataTable({
|
||||
"ajax": {
|
||||
"url": "/api/groups",
|
||||
"dataSrc": ""
|
||||
},
|
||||
"language": {
|
||||
"loadingRecords": '<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i><span class="sr-only">Loading...</span>',
|
||||
"emptyTable": "<h1>You don't have any group created yet.</h1><br><h2>Create one using the +Add new button on top right of this page.</h2>"
|
||||
},
|
||||
"rowId": "id",
|
||||
"deferRender": true,
|
||||
"columns": [
|
||||
{
|
||||
"className": 'details-control',
|
||||
"orderable": false,
|
||||
"data": null,
|
||||
"width": "10px",
|
||||
"defaultContent": '<button class="btn btn-xs btn-info" type="button" data-placement="top" ><i class="fa fa-plus"></i></button>'
|
||||
},
|
||||
{ "data": "id", "width": "10px" },
|
||||
{ "data": "keycloak", "width": "10px" },
|
||||
{ "data": "moodle", "width": "10px" },
|
||||
{ "data": "nextcloud", "width": "10px" },
|
||||
{ "data": "name", "width": "10px" },
|
||||
{ "data": "path", "width": "10px" },
|
||||
],
|
||||
"order": [[3, 'asc']],
|
||||
"columnDefs": [ {
|
||||
"targets": 2,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
if(full.keycloak){
|
||||
return '<i class="fa fa-check" style="color:lightgreen"></i>'
|
||||
}else{
|
||||
return '<i class="fa fa-close" style="color:darkred"></i>'
|
||||
};
|
||||
}},
|
||||
{
|
||||
"targets": 3,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
if(full.moodle){
|
||||
return '<i class="fa fa-check" style="color:lightgreen"></i>'
|
||||
}else{
|
||||
return '<i class="fa fa-close" style="color:darkred"></i>'
|
||||
};
|
||||
}},
|
||||
{
|
||||
"targets": 4,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
if(full.nextcloud){
|
||||
return '<i class="fa fa-check" style="color:lightgreen"></i>'
|
||||
}else{
|
||||
return '<i class="fa fa-close" style="color:darkred"></i>'
|
||||
};
|
||||
}},
|
||||
]
|
||||
} );
|
||||
})
|
|
@ -222,7 +222,7 @@ $(document).ready(function() {
|
|||
"columnDefs": [ {
|
||||
"targets": 1,
|
||||
"render": function ( data, type, full, meta ) {
|
||||
return '<object data="/static/img/missing.jpg" type="image/jpg" width="25" height="25"><img src="/avatar/'+full.id+'" title="'+full.id+'" width="25" height="25"></object>'
|
||||
return '<img src="/avatar/'+full.id+'" title="'+full.id+'" width="25" height="25">'
|
||||
}},
|
||||
{
|
||||
"targets": 6,
|
||||
|
|
|
@ -27,10 +27,6 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Id</th>
|
||||
<th>Keycloak</th>
|
||||
<th>Moodle</th>
|
||||
<th>Nextcloud</th>
|
||||
<th>Name</th>
|
||||
<th>Path</th>
|
||||
</tr>
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
<!-- extend base layout -->
|
||||
{% extends "base.html" %}
|
||||
{% block css %}
|
||||
<!-- Ion.RangeSlider -->
|
||||
<link href="/vendors/normalize-css/normalize.css" rel="stylesheet">
|
||||
<!-- Switchery -->
|
||||
<link href="/vendors/switchery/dist/switchery.min.css" rel="stylesheet">
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-12 col-sm-12 col-xs-12">
|
||||
<div class="x_panel">
|
||||
<div class="x_title">
|
||||
<h3><i class="fa fa-users"></i> Groups</h3>
|
||||
<ul class="nav navbar-right panel_toolbox">
|
||||
<li>
|
||||
<a class="btn-new"><span style="color: #5499c7; "><i class="fa fa-plus"></i> Add new</span></a>
|
||||
<!-- <a class="btn-delete_keycloak"><span style="color: #c75454; "><i class="fa fa-cross"></i> Delete all keycloak</span></a> -->
|
||||
</li>
|
||||
</ul>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
<div class="x_content">
|
||||
<p class="text-muted font-13 m-b-30"></p>
|
||||
<table id="groups" class="table" width="100%">
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Id</th>
|
||||
<th>Keycloak</th>
|
||||
<th>Moodle</th>
|
||||
<th>Nextcloud</th>
|
||||
<th>Name</th>
|
||||
<th>Path</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include 'pages/modals/groups_modals.html' %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block pagescript %}
|
||||
<!-- Ion.RangeSlider -->
|
||||
<script src="/vendors/ion.rangeSlider/js/ion.rangeSlider.min.js"></script>
|
||||
<!-- iCheck -->
|
||||
<script src="/vendors/iCheck/icheck.min.js"></script>
|
||||
<!-- Switchery -->
|
||||
<script src="/vendors/switchery/dist/switchery.min.js"></script>
|
||||
<!-- Desktops sse & modals -->
|
||||
<script src="/static/js/sysadmin/groups.js"></script>
|
||||
{% endblock %}
|
|
@ -21,6 +21,7 @@
|
|||
<h3>System Admin</h3>
|
||||
<div class="clearfix"></div>
|
||||
<li><a href="/sysadmin/users"><i class="fa fa-user"></i> SysAdminUsers</span></a></li>
|
||||
<li><a href="/sysadmin/groups"><i class="fa fa-user"></i> SysAdminGroups</span></a></li>
|
||||
<li><a href="/sysadmin/external"><i class="fa fa-external-link"></i> External</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
|
|
@ -72,7 +72,13 @@ def avatar(userid):
|
|||
@login_required
|
||||
def web_sysadmin_users():
|
||||
return render_template('pages/sysadmin/users.html', title="SysAdmin Users", nav="SysAdminUsers")
|
||||
|
||||
@app.route('/sysadmin/groups')
|
||||
@login_required
|
||||
def web_sysadmin_groups():
|
||||
return render_template('pages/sysadmin/groups.html', title="SysAdmin Groups", nav="SysAdminGroups")
|
||||
|
||||
|
||||
@app.route('/sysadmin/external')
|
||||
@login_required
|
||||
## SysAdmin role
|
||||
|
|
Loading…
Reference in New Issue