diff options
-rw-r--r-- | README.md | 6 | ||||
-rw-r--r-- | app/__init__.py | 3 | ||||
-rw-r--r-- | app/models.py | 31 | ||||
-rw-r--r-- | app/templates/packages.html | 2 | ||||
-rw-r--r-- | app/views/__init__.py | 4 | ||||
-rw-r--r-- | app/views/packages.py | 14 | ||||
-rw-r--r-- | setup.py | 1 |
7 files changed, 45 insertions, 16 deletions
@@ -9,7 +9,7 @@ First create a Python virtual env: then use pip: - pip install -r requirements.txt + pip3 install -r requirements.txt ## Running @@ -20,11 +20,11 @@ the current session: Reset the database like so: - python setup.py -d + python3 setup.py -d Then run the server: - python rundebug.py + python3 rundebug.py Then view in your web browser: diff --git a/app/__init__.py b/app/__init__.py index 6692e23..5f1fb68 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -11,4 +11,5 @@ menu.Menu(app=app) markdown.Markdown(app, extensions=['fenced_code']) github = GitHub(app) -import models, views +from . import models +from .views import * diff --git a/app/models.py b/app/models.py index ec961f3..177e4c8 100644 --- a/app/models.py +++ b/app/models.py @@ -4,6 +4,7 @@ from app import app from datetime import datetime from sqlalchemy.orm import validates from flask_user import login_required, UserManager, UserMixin, SQLAlchemyAdapter +import enum # Initialise database db = SQLAlchemy(app) @@ -57,20 +58,34 @@ class UserRoles(db.Model): user_id = db.Column(db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE')) role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE')) +class PackageType(enum.Enum): + MOD = "Mod" + GAME = "Game" + TXP = "Texture Pack" + + def getTitle(self): + if self == PackageType.MOD: + return "Mod" + elif self == PackageType.GAME: + return "Game" + else: + return "TXP" + class Package(db.Model): - id = db.Column(db.Integer, primary_key=True) + id = db.Column(db.Integer, primary_key=True) # Basic details - author_id = db.Column(db.Integer, db.ForeignKey('user.id')) - name = db.Column(db.String(100), nullable=False) - title = db.Column(db.String(100), nullable=False) - desc = db.Column(db.Text, nullable=True) + author_id = db.Column(db.Integer, db.ForeignKey('user.id')) + name = db.Column(db.String(100), nullable=False) + title = db.Column(db.String(100), nullable=False) + desc = db.Column(db.Text, nullable=True) + type = db.Column(db.Enum(PackageType)) # Downloads - repo = db.Column(db.String(200), nullable=True) - website = db.Column(db.String(200), nullable=True) + repo = db.Column(db.String(200), nullable=True) + website = db.Column(db.String(200), nullable=True) issueTracker = db.Column(db.String(200), nullable=True) - forums = db.Column(db.String(200), nullable=False) + forums = db.Column(db.String(200), nullable=False) # Setup Flask-User db_adapter = SQLAlchemyAdapter(db, User) # Register the User model diff --git a/app/templates/packages.html b/app/templates/packages.html index 6caf3f0..269ac06 100644 --- a/app/templates/packages.html +++ b/app/templates/packages.html @@ -7,7 +7,7 @@ {% block content %} <ul> {% for p in packages %} - <li><a href="{{ url_for('package_page', type='mod', author=p.author.username, name=p.name) }}"> + <li><a href="{{ url_for('package_page', type=p.type.getTitle()|lower, author=p.author.username, name=p.name) }}"> {{ p.title }} by {{ p.author.display_name }} </a></li> {% else %} diff --git a/app/views/__init__.py b/app/views/__init__.py index 1c126c1..ed90875 100644 --- a/app/views/__init__.py +++ b/app/views/__init__.py @@ -14,9 +14,9 @@ cache = SimpleCache() def send_static(path): return send_from_directory('static', path) -import users, githublogin, mods - @app.route('/') @menu.register_menu(app, '.', 'Home') def home_page(): return render_template('index.html') + +from . import users, githublogin, packages diff --git a/app/views/packages.py b/app/views/packages.py index 10b3689..73c9edd 100644 --- a/app/views/packages.py +++ b/app/views/packages.py @@ -7,9 +7,21 @@ from app.models import * @app.route('/mods/') @menu.register_menu(app, '.mods', 'Mods') def mods_page(): - packages = Package.query.all() + packages = Package.query.filter_by(type=PackageType.MOD).all() return render_template('packages.html', title="Mods", packages=packages) +@app.route('/games/') +@menu.register_menu(app, '.games', 'Games') +def games_page(): + packages = Package.query.filter_by(type=PackageType.GAME).all() + return render_template('packages.html', title="Games", packages=packages) + +@app.route('/texturepacks/') +@menu.register_menu(app, '.txp', 'Texture Packs') +def txp_page(): + packages = Package.query.filter_by(type=PackageType.TXP).all() + return render_template('packages.html', title="Texture Packs", packages=packages) + @app.route("/<type>s/<author>/<name>/") def package_page(type, author, name): package = Package.query.filter_by(name=name).first() @@ -19,6 +19,7 @@ if not os.path.isfile("db.sqlite"): mod1 = Package() mod1.name = "awards" mod1.title = "Awards" + mod1.type = PackageType.MOD mod1.author = ruben mod1.description = "Adds achievements and an API to register new ones." mod1.repo = "https://github.com/rubenwardy/awards" |