about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wqflask/wqflask/__init__.py2
-rw-r--r--wqflask/wqflask/markdown_routes.py54
-rw-r--r--wqflask/wqflask/templates/base.html1
-rw-r--r--wqflask/wqflask/templates/blogs.html12
-rw-r--r--wqflask/wqflask/templates/blogs_list.html52
-rwxr-xr-xwqflask/wqflask/templates/index_page.html25
6 files changed, 145 insertions, 1 deletions
diff --git a/wqflask/wqflask/__init__.py b/wqflask/wqflask/__init__.py
index a2bf3085..bf5e094b 100644
--- a/wqflask/wqflask/__init__.py
+++ b/wqflask/wqflask/__init__.py
@@ -12,6 +12,7 @@ from wqflask.markdown_routes import links_blueprint
 from wqflask.markdown_routes import policies_blueprint
 from wqflask.markdown_routes import environments_blueprint
 from wqflask.markdown_routes import facilities_blueprint
+from wqflask.markdown_routes import blogs_blueprint
 
 app = Flask(__name__)
 
@@ -29,6 +30,7 @@ app.register_blueprint(links_blueprint, url_prefix="/links")
 app.register_blueprint(policies_blueprint, url_prefix="/policies")
 app.register_blueprint(environments_blueprint, url_prefix="/environments")
 app.register_blueprint(facilities_blueprint, url_prefix="/facilities")
+app.register_blueprint(blogs_blueprint, url_prefix="/blogs")
 
 
 @app.before_request
diff --git a/wqflask/wqflask/markdown_routes.py b/wqflask/wqflask/markdown_routes.py
index c27ff143..b81bfb55 100644
--- a/wqflask/wqflask/markdown_routes.py
+++ b/wqflask/wqflask/markdown_routes.py
@@ -2,17 +2,21 @@
 
 Render pages from github, or if they are unavailable, look for it else where
 """
+
 import requests
 import markdown
 import os
 import sys
 
-from bs4 import BeautifulSoup
+from bs4 import BeautifulSoup  # type: ignore
 
 from flask import send_from_directory
 from flask import Blueprint
 from flask import render_template
 
+from typing import Dict
+from typing import List
+
 glossary_blueprint = Blueprint('glossary_blueprint', __name__)
 references_blueprint = Blueprint("references_blueprint", __name__)
 environments_blueprint = Blueprint("environments_blueprint", __name__)
@@ -20,6 +24,8 @@ links_blueprint = Blueprint("links_blueprint", __name__)
 policies_blueprint = Blueprint("policies_blueprint", __name__)
 facilities_blueprint = Blueprint("facilities_blueprint", __name__)
 
+blogs_blueprint = Blueprint("blogs_blueprint", __name__)
+
 
 def render_markdown(file_name, is_remote_file=True):
     """Try to fetch the file name from Github and if that fails, try to
@@ -55,6 +61,40 @@ def get_file_from_python_search_path(pathname_suffix):
         return None
 
 
+def get_blogs(user: str = "genenetwork",
+              repo_name: str = "gn-docs") -> dict:
+
+    blogs: Dict[int, List] = {}
+    github_url = f"https://api.github.com/repos/{user}/{repo_name}/git/trees/master?recursive=1"
+
+    repo_tree = requests.get(github_url).json()["tree"]
+
+    for data in repo_tree:
+        path_name = data["path"]
+        if path_name.startswith("blog") and path_name.endswith(".md"):
+            split_path = path_name.split("/")[1:]
+            try:
+                year, title, file_name = split_path
+            except Exception as e:
+                year, file_name = split_path
+                title = ""
+
+            subtitle = os.path.splitext(file_name)[0]
+
+            blog = {
+                "title": title,
+                "subtitle": subtitle,
+                "full_path": path_name
+            }
+
+            if year in blogs:
+                blogs[int(year)].append(blog)
+            else:
+                blogs[int(year)] = [blog]
+
+    return dict(sorted(blogs.items(), key=lambda x: x[0], reverse=True))
+
+
 @glossary_blueprint.route('/')
 def glossary():
     return render_template(
@@ -124,3 +164,15 @@ def policies():
 @facilities_blueprint.route("/")
 def facilities():
     return render_template("facilities.html", rendered_markdown=render_markdown("general/help/facilities.md")), 200
+
+
+@blogs_blueprint.route("/<path:blog_path>")
+def display_blog(blog_path):
+    return render_template("blogs.html", rendered_markdown=render_markdown(blog_path))
+
+
+@blogs_blueprint.route("/")
+def blogs_list():
+    blogs = get_blogs()
+
+    return render_template("blogs_list.html", blogs=blogs)
diff --git a/wqflask/wqflask/templates/base.html b/wqflask/wqflask/templates/base.html
index e6f22deb..ddb1d272 100644
--- a/wqflask/wqflask/templates/base.html
+++ b/wqflask/wqflask/templates/base.html
@@ -69,6 +69,7 @@
                             <ul class="dropdown-menu">
                               <li><a href="{{ url_for('references_blueprint.references') }}">References</a></li>
                               <li><a href="/tutorials">Tutorials/Primers</a></li>
+                              <li><a href="{{ url_for('blogs_blueprint.blogs_list') }}">Blogs</a></li>
                               <li><a href="{{ url_for('glossary_blueprint.glossary') }}">Glossary of Term</a></li>
                               <li><a href="http://gn1.genenetwork.org/faq.html">FAQ</a></li>
                               <li><a href="{{ url_for('policies_blueprint.policies') }}">Policies</a></li>
diff --git a/wqflask/wqflask/templates/blogs.html b/wqflask/wqflask/templates/blogs.html
new file mode 100644
index 00000000..314eb733
--- /dev/null
+++ b/wqflask/wqflask/templates/blogs.html
@@ -0,0 +1,12 @@
+{% extends "base.html" %}
+{% block title %}Blogs {% endblock %}
+{% block css %}
+<link rel="stylesheet" type="text/css" href="/static/new/css/markdown.css" />
+{% endblock %}
+{% block content %}
+<div class="github-btn-container">
+</div>
+<div id="markdown" class="container">
+    {{ rendered_markdown|safe }}
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/wqflask/wqflask/templates/blogs_list.html b/wqflask/wqflask/templates/blogs_list.html
new file mode 100644
index 00000000..6bad4628
--- /dev/null
+++ b/wqflask/wqflask/templates/blogs_list.html
@@ -0,0 +1,52 @@
+{% extends "base.html" %}
+{% block title %}Blogs {% endblock %}
+{% block css %}
+<style type="text/css">
+.container {
+    height: 100vh;
+}
+
+.blog_year {
+    font-weight: bold;
+    font-size: 48px;
+    padding: 12px 10px;
+}
+
+.blog_title {
+    padding: 10px 15px;
+
+}
+
+
+
+.blog_title a {
+    font-size: 1.3em;
+    padding-left: 10px;
+    letter-spacing: 0.07em;
+    text-decoration: underline;
+}
+</style>
+<link rel="stylesheet" type="text/css" href="/static/new/css/markdown.css" />
+{% endblock %}
+{% block content %}
+<div id="markdown" class="container">
+    <div>
+        {% for year, year_blogs in blogs.items() %}
+        <div class="blog_year">
+            <h3>{{year}}</h3>
+        </div>
+        {%for blog in year_blogs%}
+        <div>
+            <div class="blog_title">
+                <ul>
+                    <li>
+                        <a href="{{ url_for('blogs_blueprint.display_blog',blog_path = blog.full_path)}}">{{blog['subtitle']}}</a>
+                    </li>
+                </ul>
+            </div>
+        </div>
+        {% endfor %}
+        {%endfor%}
+    </div>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/wqflask/wqflask/templates/index_page.html b/wqflask/wqflask/templates/index_page.html
index 338c8e2f..7b103305 100755
--- a/wqflask/wqflask/templates/index_page.html
+++ b/wqflask/wqflask/templates/index_page.html
@@ -3,6 +3,31 @@
 {% block css %}
 <style TYPE="text/css">
   p.interact { display: none; }
+
+
+  
+
+  .tweet  {
+
+   padding:5px;
+   color:#000;
+
+  }
+
+  .media {
+    padding-bottom:10px;
+    border-bottom: 1px solid #c8ccc9;
+  }
+
+  .media img {
+
+    width: 95%;
+    height: 100%;
+    border-radius: 5px;
+    /*transform: scale(1.1); image small?*/
+    border:1px solid #c8ccc9;
+
+  }
 </style>
 {% endblock %}
 {% block content %}