From 6e4ae4b41962f727e02ae33125d44119d39a77a0 Mon Sep 17 00:00:00 2001 From: crunk Date: Fri, 18 Feb 2022 14:47:37 +0100 Subject: [PATCH] fixes to academic information, dropdown menus --- verse/distribusimodel.py | 6 +++--- verse/forms/uploadform.py | 15 +++++++++++++-- verse/start.py | 7 +++---- verse/static/css/selector.css | 5 ++++- verse/static/css/style.css | 16 +++++++++++++--- verse/statuspengguna/helper.py | 7 +++++-- verse/templates/distribusiworkflow/upload.html | 10 ++++++---- verse/usermodel.py | 1 + 8 files changed, 48 insertions(+), 19 deletions(-) diff --git a/verse/distribusimodel.py b/verse/distribusimodel.py index e763b29..8b0d60f 100644 --- a/verse/distribusimodel.py +++ b/verse/distribusimodel.py @@ -9,13 +9,13 @@ class Distribusis(db.Model): id = db.Column(db.Integer, primary_key=True) distribusiname = db.Column(db.String(300), nullable=True, unique=True) userid = db.Column(db.Integer, db.ForeignKey("users.id")) - term = db.Column(db.Integer, nullable=False, unique=False) + term = db.Column(db.String(5), nullable=False, unique=False) course = db.Column(db.String(500), nullable=True, unique=False) - + # Academic year eg:2020-2021, so no need for a Datetime object year = db.Column(db.String(9), nullable=True, unique=False) tags = db.Column(db.String(500), nullable=True, unique=False) - visible = db.Column(db.Boolean, server_default="false") + visible = db.Column(db.Boolean, default=False) def __repr__(self): return "" % self.distribusiname diff --git a/verse/forms/uploadform.py b/verse/forms/uploadform.py index 6fb314b..360c154 100644 --- a/verse/forms/uploadform.py +++ b/verse/forms/uploadform.py @@ -21,8 +21,19 @@ class UploadForm(FlaskForm): "Academic year:", validators=[validators.InputRequired(), Length(9, 10)], ) - term = IntegerField( - "Term:", [validators.InputRequired(), NumberRange(min=1, max=4)] + term = SelectField( + "Term:", + validate_choice=True, + coerce=str, + choices=[ + (u'1.2', u'1.2'), + (u'2.3', u'2.3'), + (u'3.1', u'3.1'), + (u'4.1', u'4.1'), + (u'4.2', u'4.2'), + ], + option_widget=None, + validators=[DataRequired()] ) tags = StringField( "Add search tags, comma-separated:", diff --git a/verse/start.py b/verse/start.py index 05a9121..8f4a62b 100644 --- a/verse/start.py +++ b/verse/start.py @@ -84,7 +84,7 @@ def distribusi(): zipfilename = "{}.zip".format(distribusi.distribusiname) userfolder = os.path.join("stash", distribusi.distribusiname) unzipfile = os.path.join(userfolder, zipfilename) - print(unzipfile) + if os.path.exists(unzipfile): with zipfile.ZipFile(unzipfile, "r") as zip_ref: # To do, replace extractall with inspection and extract @@ -100,6 +100,8 @@ def distribusi(): parser = build_argparser() args = parser.parse_args(["-s", cssfile]) distribusify(args, userfolder) + distribusi.visible = True + db.session.commit() return redirect(url_for("index")) template = render_template( "distribusi.html", @@ -162,9 +164,6 @@ def upload(): shutil.copy(copyzipfile, newuserfolder) os.remove(os.path.join(APP.config["UPLOAD_FOLDER"], zipfilename)) files_uploaded = AreFilesUploaded() - else: - print("there is a problem with form validation") - print(uploadform.course.data) template = render_template( "distribusi.html", uploadform=uploadform, diff --git a/verse/static/css/selector.css b/verse/static/css/selector.css index 9faf333..70c8e5b 100644 --- a/verse/static/css/selector.css +++ b/verse/static/css/selector.css @@ -29,7 +29,7 @@ .selector-style:after { top: 50%; - left: 85%; + left: 95%; border: solid; content: " "; height: 0; @@ -50,3 +50,6 @@ select.selector option{ .selector-style select:focus { outline: none; } +.selector-style select option:hover { + background: #60337F; +} diff --git a/verse/static/css/style.css b/verse/static/css/style.css index 9a95e11..c2c902c 100644 --- a/verse/static/css/style.css +++ b/verse/static/css/style.css @@ -21,9 +21,11 @@ div#login form { padding-right: 15%; } -input[type=text], input[type=password], input[type=file]{ - background-color: #2D3039; +input[type=text], input[type=password], input[type=file] { color: white; + width: 18em; + max-width: 18em; + background-color: #2D3039; border: 1px solid #E0B0FF; } @@ -104,6 +106,9 @@ input[type="submit"]:disabled:focus { .error { color: #ff5a5a; } +.delete !important { + color: #ff5a5a; +} /* unvisited link */ @@ -169,8 +174,13 @@ medium dark #60337F -yellow +background dark +#2D3039 + +yellow important #fff600 +red: danger +ff5a5a backgrounds */ diff --git a/verse/statuspengguna/helper.py b/verse/statuspengguna/helper.py index 973ea63..84ce7d8 100644 --- a/verse/statuspengguna/helper.py +++ b/verse/statuspengguna/helper.py @@ -8,7 +8,7 @@ def AreFilesUploaded(): user = User.query.filter_by(email=current_user.email).first() distribusi = Distribusis.query.filter_by(userid=user.id).first() if distribusi is None: - print("distribusi is empty") + print("distribusi folder is empty") return False userfolder = os.path.join("stash", distribusi.distribusiname) if os.path.exists(userfolder): @@ -20,7 +20,10 @@ def HasDistribusi(): user = User.query.filter_by(email=current_user.email).first() distribusi = Distribusis.query.filter_by(userid=user.id).first() if distribusi is None: - print("distribusi is empty") + print("no distribusi found") + return False + if distribusi.visible is False: + print("distribusi not visible") return False return True diff --git a/verse/templates/distribusiworkflow/upload.html b/verse/templates/distribusiworkflow/upload.html index c08f353..a0c5a83 100644 --- a/verse/templates/distribusiworkflow/upload.html +++ b/verse/templates/distribusiworkflow/upload.html @@ -19,10 +19,12 @@
{{ uploadform.term.label }} - {{ uploadform.term }} - {% for message in uploadform.term.errors %} -
{{ message }}
- {% endfor %} +
+ {{ uploadform.term }} + {% for message in uploadform.term.errors %} +
{{ message }}
+ {% endfor %} +
{{ uploadform.course.label }} diff --git a/verse/usermodel.py b/verse/usermodel.py index ba5a5c3..43d489d 100644 --- a/verse/usermodel.py +++ b/verse/usermodel.py @@ -11,6 +11,7 @@ class User(UserMixin, db.Model): email = db.Column(db.String(150), unique=True, nullable=False) password = db.Column(db.String(300), nullable=False, unique=False) currentdistribusi = db.Column(db.String(300), nullable=True, unique=False) + admin = db.Column(db.Boolean, server_default="false") def __repr__(self): return "" % self.email