Browse Source

Working on page generation

JoostSijm 6 years ago
parent
commit
e2b72caad7
2 changed files with 23 additions and 3 deletions
  1. 6 0
      app/models.py
  2. 17 3
      app/modules/backend/app.py

+ 6 - 0
app/models.py

@@ -3,6 +3,7 @@
 All models for module
 """
 
+from urllib.parse import quote
 from datetime import datetime
 # from sqlalchemy.ext.hybrid import hybrid_method, hybrid_property
 import markdown
@@ -55,6 +56,11 @@ class Page(db.Model):
         """Render page source"""
         return Markup(markdown.markdown(self.source))
 
+
+    def url(self):
+        """Generate URL for page"""
+        return quote(self.title.lower())
+
     user_id = db.Column(
         db.Integer,
         db.ForeignKey("user.id")

+ 17 - 3
app/modules/backend/app.py

@@ -30,11 +30,11 @@ def login():
                 flash('You were successfully logged in.', 'success')
                 if request.args.get("next") is not None:
                     return redirect(request.args.get("next"))
-                return redirect(url_for('index'))
+                return redirect(url_for('backend.index'))
             flash('Incorrect password.', 'danger')
         else:
             flash('User not found.', 'danger')
-        return redirect(url_for('login'))
+        return redirect(url_for('backend.login'))
     return render_template('user/login.j2')
 
 
@@ -93,7 +93,7 @@ def logout():
     """Logout function for users"""
     logout_user()
     flash('Successfully logged out.', 'success')
-    return redirect(url_for('login'))
+    return redirect(url_for('backend.login'))
 
 
 @BLUEPRINT.route('/')
@@ -157,3 +157,17 @@ def view_page(page_id):
     """Display page"""
     page = Page.query.get(page_id)
     return render_template('page/view.j2', page=page)
+
+
+@BLUEPRINT.route('/render')
+@register_menu(BLUEPRINT, 'render', 'Render')
+@login_required
+def render():
+    """Render pages to file"""
+    pages = Page.query.all()
+    for page in pages:
+        with open('app/modules/static/pages/%s.html' % page.url(), 'w') as file:
+            file.write(page.content())
+
+    flash('Successfully rendered pages.', 'success')
+    return redirect(url_for('backend.index'))