From 64f83896cbac2e380cdb28a6f0a4172c0dc232e1 Mon Sep 17 00:00:00 2001 From: Junhao Zhou <zhouj70@cardiff.ac.uk> Date: Sat, 29 Apr 2023 14:10:15 +0000 Subject: [PATCH] =?UTF-8?q?=E5=B7=B2=E5=88=A0=E9=99=A4=20templates/add=5Fq?= =?UTF-8?q?uestion.html,=20templates/edit=5Fquestion.html,=20templates/ind?= =?UTF-8?q?ex.html,=20templates/layout.html,=20templates/questions.html,?= =?UTF-8?q?=20README.md,=20app.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 47 --------------------------- app.py | 63 ------------------------------------ templates/add_question.html | 37 --------------------- templates/edit_question.html | 34 ------------------- templates/index.html | 4 --- templates/layout.html | 36 --------------------- templates/questions.html | 35 -------------------- 7 files changed, 256 deletions(-) delete mode 100644 README.md delete mode 100644 app.py delete mode 100644 templates/add_question.html delete mode 100644 templates/edit_question.html delete mode 100644 templates/index.html delete mode 100644 templates/layout.html delete mode 100644 templates/questions.html diff --git a/README.md b/README.md deleted file mode 100644 index 3accb97..0000000 --- a/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Flask - Labs - -This repository covers exercises in Flask labs. - -Click on the relevant tag to access a snapshot of the state of the Blog project at a particular point of the lab tasks completion. - -## Contents: - -| Lab | Functionality | Git Tag | -|------|---------------------------|---------| -| 1.1 | Basic "Hello World!" page | [part 1.1](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_1.1) | -| 1.2 | Basic templating, routes, navigation and styling | [part 1.2](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_1.2) | -| 1.3 | Reorganising the project for Blogging Website | [part 1.3](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_1.3) | -| 2.1 | Blogging Website: database implementation, dynamic home page| [part 2.1](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_2.1) | -| 2.2 | Blogging Website: individual post pages| [part 2.2](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_2.2) | -| 3.1 | Blogging Website: user accounts | [part 3.1](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_3.1) | -| 3.2 | Blogging Website: validation | [part 3.2](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_3.2) | -| 4.0 | Blogging Website: deployment on OpenShift | [part 4.0](https://git.cardiff.ac.uk/scmne/flask-labs/-/tree/part_4.0) | - -## Initial Project Setup Required: - -- activation of virtual environment (see the lab instructions) -- installation of the necessary project dependencies - -### Project Dependencies: - -* to install a particular library: -``` -pip install <LIBRARY> -``` - e.g.: ``` pip install flask ``` - -* to install all dependencies recursively from ```requirements.txt``` file: -```sh -pip install -r requirements.txt -``` - -* to see all installed dependencies in the console: -```console -pip freeze -``` - -* to save the project dependencies in ```requirements.txt``` file: - -```console -pip freeze > requirements.txt -``` diff --git a/app.py b/app.py deleted file mode 100644 index 2c4e1d6..0000000 --- a/app.py +++ /dev/null @@ -1,63 +0,0 @@ -from flask import Flask, render_template, request, redirect, url_for -from flask_sqlalchemy import SQLAlchemy -import os - -app = Flask(__name__) - -DB_URI = os.environ.get('DATABASE_URI') - -if DB_URI is None: - raise ValueError('No database URI set in environment variable DATABASE_URI') - -app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI - -db = SQLAlchemy(app) - -class Questions(db.Model): - id = db.Column(db.Integer, primary_key=True) - question = db.Column(db.String(255), nullable=False) - option1 = db.Column(db.String(255), nullable=False) - option2 = db.Column(db.String(255), nullable=False) - option3 = db.Column(db.String(255), nullable=False) - option4 = db.Column(db.String(255), nullable=False) - answer = db.Column(db.String(255), nullable=False) - feedback = db.Column(db.String(255)) - - def delete(self): - db.session.delete(self) - db.session.commit() - -@app.route('/') -def index(): - return render_template("index.html") - -@app.route('/questions') -def questions(): - questions = Questions.query.all() - return render_template("questions.html", questions=questions) - -@app.route('/add_question', methods=['GET', 'POST']) -def add_question(): - if request.method == 'POST': - question = request.form['question'] - option1 = request.form['option1'] - option2 = request.form['option2'] - option3 = request.form['option3'] - option4 = request.form['option4'] - answer = request.form['answer'] - feedback = request.form['feedback'] - new_question = Questions(question=question, option1=option1, option2=option2, option3=option3, option4=option4, answer=answer, feedback=feedback) - db.session.add(new_question) - db.session.commit() - return redirect(url_for('questions')) - return render_template("add_question.html") - -@app.route('/delete_question/<int:id>', methods=['POST']) -def delete_question(id): - question = Questions.query.get(id) - question.delete() - return redirect(url_for('questions')) - - -if __name__ == '__main__': - app.run(debug=True) diff --git a/templates/add_question.html b/templates/add_question.html deleted file mode 100644 index e5ca0f1..0000000 --- a/templates/add_question.html +++ /dev/null @@ -1,37 +0,0 @@ -{% extends "layout.html" %} -{% block content %} -<div class="container"> - <h1 class="mt-3">Add Question</h1> - <form method="POST" action="{{ url_for('add_question') }}" class="mt-3"> - <div class="form-group"> - <label for="question">Question:</label> - <input type="text" name="question" class="form-control" required> - </div> - <div class="form-group"> - <label for="option1">Option 1:</label> - <input type="text" name="option1" class="form-control" required> - </div> - <div class="form-group"> - <label for="option2">Option 2:</label> - <input type="text" name="option2" class="form-control" required> - </div> - <div class="form-group"> - <label for="option3">Option 3:</label> - <input type="text" name="option3" class="form-control" required> - </div> - <div class="form-group"> - <label for="option4">Option 4:</label> - <input type="text" name="option4" class="form-control" required> - </div> - <div class="form-group"> - <label for="answer">Answer:</label> - <input type="text" name="answer" class="form-control" required> - </div> - <div class="form-group"> - <label for="feedback">Feedback:</label> - <input type="text" name="feedback" class="form-control"> - </div> - <button type="submit" class="btn btn-primary">Add Question</button> - </form> -</div> -{% endblock content %} \ No newline at end of file diff --git a/templates/edit_question.html b/templates/edit_question.html deleted file mode 100644 index 70b07e3..0000000 --- a/templates/edit_question.html +++ /dev/null @@ -1,34 +0,0 @@ -<!DOCTYPE html> -<html> - <head> - <title>Edit Question</title> - <link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}"> - </head> - <body> - <h1>Edit Question</h1> - <form method="POST" action="{{ url_for('edit_question', question_id=question.id) }}"> - <label for="question">Question:</label> - <input type="text" name="question" value="{{ question.question }}" required> - <br> - <label for="option1">Option 1:</label> - <input type="text" name="option1" value="{{ question.option1 }}" required> - <br> - <label for="option2">Option 2:</label> - <input type="text" name="option2" value="{{ question.option2 }}" required> - <br> - <label for="option3">Option 3:</label> - <input type="text" name="option3" value="{{ question.option3 }}" required> - <br> - <label for="option4">Option 4:</label> - <input type="text" name="option4" value="{{ question.option4 }}" required> - <br> - <label for="answer">Answer:</label> - <input type="text" name="answer" value="{{ question.answer }}" required> - <br> - <label for="feedback">Feedback:</label> - <input type="text" name="feedback" value="{{ question.feedback }}"> - <br> - <button type="submit">Update Question</button> - </form> - </body> -</html> diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index ea08f86..0000000 --- a/templates/index.html +++ /dev/null @@ -1,4 +0,0 @@ -{% extends "layout.html" %} -{% block content %} - -{% endblock content %} \ No newline at end of file diff --git a/templates/layout.html b/templates/layout.html deleted file mode 100644 index b99a997..0000000 --- a/templates/layout.html +++ /dev/null @@ -1,36 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <link - rel="stylesheet" - href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" - integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" - crossorigin="anonymous" - /> - <link - rel="stylesheet" - href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" - crossorigin="anonymous" - /> - <meta http-equiv="X-UA-Compatible" content="IE=edge"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Document</title> -</head> -<body> - <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> - - <div class="collapse navbar-collapse" id="navbar"> - <div class="navbar-nav"> - <a href="{{ url_for('index') }}" class="nav-item nav-link">Home</a> - <a href="{{ url_for('questions') }}" class="nav-item nav-link">Delete question</a> - <a href="{{ url_for('add_question') }}" class="nav-item nav-link">Add question</a> -</div> - </div> - </nav> - <div id="content"> - {% block content %} - {% endblock %} - </div> -</body> -</html> \ No newline at end of file diff --git a/templates/questions.html b/templates/questions.html deleted file mode 100644 index e86a34c..0000000 --- a/templates/questions.html +++ /dev/null @@ -1,35 +0,0 @@ -{% extends "layout.html" %} -{% block content %} -<div class="container"> - <table class="table table-bordered"> - <thead> - <tr> - <th>Question</th> - <th>Option 1</th> - <th>Option 2</th> - <th>Option 3</th> - <th>Option 4</th> - <th>Answer</th> - <th>Action</th> - </tr> - </thead> - <tbody> - {% for question in questions %} - <tr> - <td>{{ question.question }}</td> - <td>{{ question.option1 }}</td> - <td>{{ question.option2 }}</td> - <td>{{ question.option3 }}</td> - <td>{{ question.option4 }}</td> - <td>{{ question.answer }}</td> - <td> - <form method="POST" action="{{ url_for('delete_question', id=question.id) }}"> - <button class="btn btn-danger" type="submit">Delete</button> - </form> - </td> - </tr> - {% endfor %} - </tbody> - </table> -</div> -{% endblock content %} \ No newline at end of file -- GitLab