aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md6
-rw-r--r--app/__init__.py3
-rw-r--r--app/models.py31
-rw-r--r--app/templates/packages.html2
-rw-r--r--app/views/__init__.py4
-rw-r--r--app/views/packages.py14
-rw-r--r--setup.py1
7 files changed, 45 insertions, 16 deletions
diff --git a/README.md b/README.md
index 7cf27c5..78133f1 100644
--- a/README.md
+++ b/README.md
@@ -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()
diff --git a/setup.py b/setup.py
index e98965d..a606c4f 100644
--- a/setup.py
+++ b/setup.py
@@ -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"