import os from flask_login import current_user from flask import flash from sqlalchemy.exc import ( DataError, DatabaseError, InterfaceError, InvalidRequestError, ) from usermodel import User from distribusimodel import Distribusis from distribusisinfo import DistribusisInfo from app import db class UserHelper: def is_zip_uploaded(distribusiname): userfolder = os.path.join("stash", distribusiname) if os.path.exists(userfolder): zipfilename = "{}.zip".format(distribusiname) if os.path.exists(os.path.join(userfolder, zipfilename)): print("folder with zipfile found, file uploaded") return True print("distribusi folder has no zipfile") return False def is_distribusi_live(distribusiname): userfolder = os.path.join("stash", distribusiname) if os.path.exists(userfolder): zipfilename = "{}.zip".format(distribusiname) if os.path.exists(os.path.join(userfolder, zipfilename)): print("folder with zipfile found, file uploaded") return False if len(os.listdir(userfolder)) > 0: return True print("distribusi folder is empty") return False def is_css_selected(distribusiname): userfolder = os.path.join("themes/userthemes", distribusiname) if os.path.exists(userfolder): for file in os.listdir(userfolder): if file.endswith(".css"): return True print("distribusi folder has no css file") return False def has_distribusi(): user = User.query.filter_by(email=current_user.email).first() distribusi = Distribusis.query.filter_by(userid=user.id).first() if distribusi is None: print("no distribusi found") return False return True def current_distribusi(): user = User.query.filter_by(email=current_user.email).first() if user.currentdistribusi is None: return "None" return user.currentdistribusi def reset_user_state(): """reset user state upon visiting index, so that distribusi workflow can be done correctly""" if not current_user.is_authenticated: return try: user = User.query.filter_by(email=current_user.email).first() user.currentdistribusi = None db.session.commit() except (InvalidRequestError, DataError, InterfaceError, DatabaseError): db.session.rollback() flash("An error occured !", "danger") def distribusi_limit_reached(): user = User.query.filter_by(email=current_user.email).first() distribusiamount = len(DistribusisInfo.getuserdistribusis(user.email)) if user.tutor and distribusiamount > 14: print("tutor already has 15 distribusis") return True if not user.tutor and distribusiamount > 4: print("user already has 5 distribusis") return True return False