Browse Source

Hook up a basic GET route

Getty Ritter 4 years ago
parent
commit
bb170774e8
2 changed files with 13 additions and 4 deletions
  1. 8 2
      lc/model.py
  2. 5 2
      lc/routes.py

+ 8 - 2
lc/model.py

@@ -43,7 +43,10 @@ class Link(Model):
     # is the field entirely private?
     private = peewee.BooleanField()
     # owned by
-    user = peewee.ForeignKeyField(User, backref="all_links")
+    user = peewee.ForeignKeyField(User, backref="links")
+
+    def link_url(self) -> str:
+        return f"/u/{self.user.name}/l/{self.id}"
 
     @staticmethod
     def from_request(user: User, link: r.Link) -> "Link":
@@ -56,7 +59,7 @@ class Link(Model):
             user=user,
         )
         for tag_name in link.tags:
-            t = Tag.find_tag(tag_name)
+            t = Tag.find_tag(user, tag_name)
             HasTag.create(
                 link=l, tag=t,
             )
@@ -72,6 +75,9 @@ class Tag(Model):
     parent = peewee.ForeignKeyField("self", null=True, backref="children")
     user = peewee.ForeignKeyField(User, backref="tags")
 
+    def url(self) -> str:
+        return f"/u/{self.user.name}/t/{self.name}"
+
     @staticmethod
     def find_tag(user: User, tag_name: str):
         if (t := Tag.get_or_none(name=tag_name, user=user)) :

+ 5 - 2
lc/routes.py

@@ -12,7 +12,8 @@ loader = pystache.loader.Loader(extension="mustache", search_dirs=["templates"],
 def render(name, **kwargs):
     """Load and use a Mustache template from the project root"""
     template = loader.load_name(name)
-    return pystache.Renderer().render(template, kwargs)
+    renderer = pystache.Renderer(missing_tags="strict", search_dirs=["templates"])
+    return renderer.render(template, kwargs)
 
 
 @app.route("/")
@@ -30,7 +31,9 @@ def create_user():
 @app.route("/u/<string:user>", methods=["GET", "POST"])
 def get_user(user):
     u = m.User.by_slug(user)
-    return render("main", title=f"user {u.name}", content="stuff")
+    return render(
+        "main", title=f"user {u.name}", content=render("linklist", links=u.links),
+    )
 
 
 @app.route("/u/<string:user>/l", methods=["POST"])