()
| 15639 | if _chat_lock_verify_and_unlock(me, "group", gid, pin): |
| 15640 | flash("Group unlocked.") |
| 15641 | else: |
| 15642 | flash("Wrong PIN.") |
| 15643 | return redirect(url_for("group_chat", gid=gid)) |
| 15644 | |
| 15645 | |
| 15646 | @app.route("/groups/<int:gid>/lock/remove", methods=["POST"]) |
| 15647 | @login_required |
| 15648 | def group_lock_remove(gid: int): |
| 15649 | me = current_user() |
| 15650 | if not group_role(gid, me): |
| 15651 | abort(403) |
| 15652 | _chat_lock_remove(me, "group", gid) |
| 15653 | flash("Group PIN removed.") |
| 15654 | return redirect(url_for("group_chat", gid=gid)) |
| 15655 | |
| 15656 | |
| 15657 | @app.route("/groups/<int:gid>/lock/close", methods=["POST"]) |
| 15658 | @login_required |
| 15659 | def group_lock_close(gid: int): |
| 15660 | me = current_user() |
| 15661 | if not group_role(gid, me): |
| 15662 | abort(403) |
| 15663 | _chat_lock_clear_session(me, "group", gid) |
| 15664 | flash("Group locked.") |
| 15665 | return redirect(url_for("group_chat", gid=gid)) |
| 15666 | |
| 15667 | |
| 15668 | @app.route("/groups/<int:gid>/chat") |
| 15669 | @login_required |
| 15670 | def group_chat(gid: int): |
| 15671 | """group_chat. |
| 15672 | |
| 15673 | Chat/group feature helper or route handler. |
| 15674 | |
| 15675 | This docstring was expanded to make future maintenance easier. |
| 15676 | |
| 15677 | Args: |
| 15678 | gid: Parameter. |
| 15679 | |
| 15680 | Returns: |
| 15681 | Varies. |
| 15682 | """ |
| 15683 | me = current_user() |
| 15684 | role = group_role(gid, me) |
| 15685 | if not role: |
| 15686 | abort(403) |
| 15687 | |
| 15688 | conn = db_connect() |
| 15689 | g_row = conn.execute("SELECT * FROM groups WHERE id=?", (gid,)).fetchone() |
| 15690 | if not g_row: |
| 15691 | conn.close() |
| 15692 | abort(404) |
| 15693 | |
| 15694 | mem_rows = conn.execute("SELECT username, role FROM group_members WHERE group_id=? ORDER BY username COLLATE NOCASE", (gid,)).fetchall() |
| 15695 | members = [] |
| 15696 | for r in mem_rows: |
| 15697 | members.append({"username": r["username"], "role": r["role"], "online": is_online(r["username"], current_scope())}) |
| 15698 |
no test coverage detected