]> git.lizzy.rs Git - cheatdb.git/commitdiff
Add package types
authorrubenwardy <rw@rubenwardy.com>
Tue, 20 Mar 2018 00:44:47 +0000 (00:44 +0000)
committerrubenwardy <rw@rubenwardy.com>
Tue, 20 Mar 2018 00:44:47 +0000 (00:44 +0000)
README.md
app/__init__.py
app/models.py
app/templates/packages.html
app/views/__init__.py
app/views/packages.py
setup.py

index 7cf27c5fc886ef2540956d8a80d9197bc8810d54..78133f1a977b64ec8762eb0a5e7a28462f5e6ade 100644 (file)
--- 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:
 
index 6692e23c138fef50efede318e81c6dfb34993544..5f1fb68cdb134ac670ddbac62e24bfcb331b7758 100644 (file)
@@ -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 *
index ec961f3d01310a7b4de03b8607563ac926f82e11..177e4c863bffe8ccb234483735fc7dcfa9d457b7 100644 (file)
@@ -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
index 6caf3f00cb90b9e1ae304308fdb52c95b4fa1480..269ac069a251c93c9800fa68978925c449a90fcb 100644 (file)
@@ -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 %}
index 1c126c1e3a3531a388c90a019a1eb516a2b475a3..ed90875ef1ffe85d220e102887d53684f7363572 100644 (file)
@@ -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
index 10b3689a111a2c76b5b2086f13da043ce0836ae9..73c9edd065036a23ba24993f39090907de555599 100644 (file)
@@ -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()
index e98965d4f7c60861ee5f1f8c4e967ca931bf9f7b..a606c4fa81054f3fdf267eb2f66ae0b905f53bf5 100644 (file)
--- 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"