feat: added undo of rejected join requests
Also improved the dispaly of timestamp, showing the diff now. Issue #271
This commit is contained in:
@@ -108,3 +108,24 @@ def reject_cohort_join_request(join_request):
|
|||||||
r.status = "Rejected"
|
r.status = "Rejected"
|
||||||
r.save(ignore_permissions=True)
|
r.save(ignore_permissions=True)
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def undo_reject_cohort_join_request(join_request):
|
||||||
|
r = frappe.get_doc("Cohort Join Request", join_request)
|
||||||
|
sg = r and frappe.get_doc("Cohort Subgroup", r.subgroup)
|
||||||
|
# keeping Pending as well to consider the case of duplicate requests
|
||||||
|
if not sg or r.status not in ["Pending", "Rejected"]:
|
||||||
|
return {
|
||||||
|
"ok": False,
|
||||||
|
"error": "Invalid Join Request"
|
||||||
|
}
|
||||||
|
if not sg.is_manager(frappe.session.user):
|
||||||
|
return {
|
||||||
|
"ok": False,
|
||||||
|
"error": "Permission Deined"
|
||||||
|
}
|
||||||
|
|
||||||
|
r.status = "Pending"
|
||||||
|
r.save(ignore_permissions=True)
|
||||||
|
return {"ok": True}
|
||||||
|
|||||||
@@ -60,6 +60,7 @@
|
|||||||
|
|
||||||
{% macro render_join_requests() %}
|
{% macro render_join_requests() %}
|
||||||
{% set join_requests = subgroup.get_join_requests() %}
|
{% set join_requests = subgroup.get_join_requests() %}
|
||||||
|
<h5>Pending Requests</h5>
|
||||||
{% if join_requests %}
|
{% if join_requests %}
|
||||||
<table class="table">
|
<table class="table">
|
||||||
<tr>
|
<tr>
|
||||||
@@ -68,10 +69,10 @@
|
|||||||
<th>Email</th>
|
<th>Email</th>
|
||||||
<th>Actions</th>
|
<th>Actions</th>
|
||||||
</tr>
|
</tr>
|
||||||
{% for r in subgroup.get_join_requests() %}
|
{% for r in join_requests %}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{loop.index}}</td>
|
<td>{{loop.index}}</td>
|
||||||
<td>{{r.creation}}</td>
|
<td class="timestamp">{{r.creation}}</td>
|
||||||
<td>{{r.email}}</td>
|
<td>{{r.email}}</td>
|
||||||
<td
|
<td
|
||||||
data-name="{{r.name}}"
|
data-name="{{r.name}}"
|
||||||
@@ -81,7 +82,33 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</table>
|
</table>
|
||||||
{% else %}
|
{% else %}
|
||||||
<em>There are no pending join requests.</em>
|
<p><em>There are no pending join requests.</em></p>
|
||||||
|
{% endif %}
|
||||||
|
{% set rejected_requests = subgroup.get_join_requests(status="Rejected") %}
|
||||||
|
|
||||||
|
<h5>Rejected Requests</h5>
|
||||||
|
{% if rejected_requests %}
|
||||||
|
<table class="table">
|
||||||
|
<tr>
|
||||||
|
<th>#</th>
|
||||||
|
<th>When</th>
|
||||||
|
<th>Email</th>
|
||||||
|
<th>Actions</th>
|
||||||
|
</tr>
|
||||||
|
{% for r in rejected_requests %}
|
||||||
|
<tr>
|
||||||
|
<td>{{loop.index}}</td>
|
||||||
|
<td class="timestamp">{{r.creation}}</td>
|
||||||
|
<td>{{r.email}}</td>
|
||||||
|
<td
|
||||||
|
data-name="{{r.name}}"
|
||||||
|
data-email="{{r.email}}">
|
||||||
|
<a class="action-undo" href="#">Undo</a></td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
{% else %}
|
||||||
|
<p><em>There are no rejected requests.</em></p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
@@ -116,6 +143,12 @@ $(function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(".timestamp"). each(function() {
|
||||||
|
var t = moment($(this).text());
|
||||||
|
var dt = t.from(moment.now());
|
||||||
|
$(this).text(dt);
|
||||||
|
});
|
||||||
|
|
||||||
$(".action-approve").click(function() {
|
$(".action-approve").click(function() {
|
||||||
var name = $(this).parent().data("name");
|
var name = $(this).parent().data("name");
|
||||||
var email = $(this).parent().data("email");
|
var email = $(this).parent().data("email");
|
||||||
@@ -136,6 +169,14 @@ $(function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$(".action-undo").click(function() {
|
||||||
|
var name = $(this).parent().data("name");
|
||||||
|
var email = $(this).parent().data("email");
|
||||||
|
frappe.confirm(`Are you sure to undo the rejection of <strong>${email}</strong>?`, function() {
|
||||||
|
run_action("school.lms.api.undo_reject_cohort_join_request", name);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
function run_action(method, join_request) {
|
function run_action(method, join_request) {
|
||||||
frappe.call(method, {
|
frappe.call(method, {
|
||||||
join_request: join_request,
|
join_request: join_request,
|
||||||
|
|||||||
Reference in New Issue
Block a user