import os import shutil from flask import flash from flask_login import current_user from sqlalchemy.exc import ( DataError, DatabaseError, InterfaceError, InvalidRequestError, ) from usermodel import User from distribusimodel import Distribusis from forms.selectorform import SelectorForm from statuspengguna.helper import HasDistribusi from app import db def SelectNewDistribusi(): print("make a new distribusi") selectorform = SelectorForm() SelectCurrentDistribusi("new") return selectorform def SelectUpdateDistribusi(distribusiname): print(f"Update this distribusi {distribusiname}") selectorform = SelectorForm() SelectCurrentDistribusi(distribusiname) return selectorform def DeleteDistribusi(distribusiname): print(f"delete this distribusi {distribusiname}") selectorform = SelectorForm() try: user = User.query.filter_by(email=current_user.email).first() distribusi = Distribusis.query.filter_by( distribusiname=distribusiname ).first() if distribusi.userid is user.id: db.session.delete(distribusi) db.session.commit() userfolder = os.path.join("stash", distribusi.distribusiname) shutil.rmtree(userfolder) cssfolder = os.path.join( "themes/userthemes", distribusi.distribusiname ) shutil.rmtree(cssfolder) except (InvalidRequestError, DataError, InterfaceError, DatabaseError): db.session.rollback() selectorform.distribusis.errors.append("Unknown error occured!") flash("An error occured !", "danger") return selectorform def SelectCurrentDistribusi(distribusiname): if not current_user.is_authenticated: return user = User.query.filter_by(email=current_user.email).first() try: user.currentdistribusi = distribusiname db.session.commit() except (InvalidRequestError, DataError, InterfaceError, DatabaseError): db.session.rollback() flash("An error occured !", "danger") def DistribusiSelected(): user = User.query.filter_by(email=current_user.email).first() if user.currentdistribusi is None: return False return True def SelectorVisible(): has_distribusi = HasDistribusi() distribusi_selected = DistribusiSelected() if distribusi_selected: return False if not has_distribusi: return False return True