PIVOT 1.1.0
This commit is contained in:
commit
8a53234eb6
161 files changed
+31109
No files matched your search
@@ -0,0 +1,112 @@
|
||||
from flask import Blueprint, request, flash, redirect, url_for, render_template, make_response, jsonify
|
||||
from services.google_service import GoogleAdminService
|
||||
from blueprints.auth import login_required
|
||||
from rechten import recht_vereist
|
||||
import rechten
|
||||
from config import Config
|
||||
from tenancy import per_school
|
||||
from datetime import datetime
|
||||
import io
|
||||
from xhtml2pdf import pisa
|
||||
|
||||
google_bp = Blueprint('google', __name__)
|
||||
google_service = per_school(GoogleAdminService)
|
||||
|
||||
#-------------------------------------------------
|
||||
# Passwoord reset route
|
||||
#-------------------------------------------------
|
||||
@google_bp.route('/reset_pw', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('google_wachtwoord')
|
||||
def reset_pw():
|
||||
email = request.form.get('email')
|
||||
nieuw_wachtwoord = Config.STANDAARD_WACHTWOORD
|
||||
|
||||
if not email:
|
||||
flash("Geen e-mailadres opgegeven.", "error")
|
||||
return redirect(url_for('google.password_reset'))
|
||||
|
||||
success, message = google_service.change_password(email, nieuw_wachtwoord)
|
||||
|
||||
if success:
|
||||
rechten.log(actie=f"PW Reset voor {email}") # tabel Logs (centrale database)
|
||||
flash(f"Wachtwoord voor {email} is gereset naar {nieuw_wachtwoord}", "success")
|
||||
else:
|
||||
flash(f"Google API Fout: {message}", "error")
|
||||
|
||||
return redirect(url_for('google.password_reset'))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Route voor pagina google gebruikers
|
||||
#--------------------------------------------------
|
||||
|
||||
@google_bp.route('/google_account_beheer', methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@recht_vereist('google_wachtwoord', 'google_accounts')
|
||||
def password_reset():
|
||||
results = []
|
||||
query = ""
|
||||
if request.method == 'POST':
|
||||
query = request.form.get('query')
|
||||
results = google_service.search_users(query)
|
||||
return render_template('google_beheer.html', results=results, query=query)
|
||||
|
||||
|
||||
# Logica voor apply password
|
||||
@google_bp.route('/apply_password', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('google_wachtwoord')
|
||||
def apply_password():
|
||||
email = request.form.get('email')
|
||||
new_password = request.form.get('new_password')
|
||||
|
||||
success, message = google_service.change_password(email, new_password)
|
||||
if success:
|
||||
return "OK", 200
|
||||
else:
|
||||
return message, 500
|
||||
|
||||
# Logica voor google account aanmaken
|
||||
@google_bp.route('/aanmaken_google_account', methods=['POST'])
|
||||
@login_required
|
||||
@recht_vereist('google_accounts')
|
||||
def aanmaken_google_account():
|
||||
first_name = request.form.get('first_name')
|
||||
last_name = request.form.get('last_name')
|
||||
password = request.form.get('password')
|
||||
account_type = request.form.get('account_type')
|
||||
|
||||
|
||||
# Gebruik de config vanuit de service
|
||||
target_ou = Config.OU_NIEUWE_LEERKRACHTEN if account_type == "Leerkracht" else f"/{google_service.conf.OU_NEW_STUDENTS}"
|
||||
|
||||
template_html = "pdf_template_leerkracht.html" if account_type == "Leerkracht" else "pdf_template_leerling.html"
|
||||
|
||||
success, result = google_service.create_user(first_name, last_name, password, target_ou)
|
||||
|
||||
if success:
|
||||
context = {
|
||||
'naam': f"{first_name} {last_name}",
|
||||
'email': result,
|
||||
'wachtwoord': password,
|
||||
'datum': datetime.now().strftime("%d/%m/%Y")
|
||||
}
|
||||
html_string = render_template(template_html, **context)
|
||||
pdf_buffer = io.BytesIO()
|
||||
|
||||
# Gebruik pisa om de HTML om te zetten naar PDF
|
||||
pisa_status = pisa.CreatePDF(io.StringIO(html_string), dest=pdf_buffer)
|
||||
|
||||
if pisa_status.err:
|
||||
flash("Fout bij het genereren van PDF", "error")
|
||||
return redirect(url_for('google.password_reset'))
|
||||
|
||||
pdf_buffer.seek(0)
|
||||
response = make_response(pdf_buffer.read())
|
||||
response.headers['Content-Type'] = 'application/pdf'
|
||||
response.headers['Content-Disposition'] = f'inline; filename=account_{first_name}.pdf'
|
||||
return response
|
||||
else:
|
||||
flash(f"Google Fout: {result}", "error")
|
||||
return redirect(url_for('google.password_reset'))
|
||||
|
||||
Reference in new issue
Block a user