Switch to side-by-side view

--- a/ForgeWiki/forgewiki/model/wiki.py
+++ b/ForgeWiki/forgewiki/model/wiki.py
@@ -12,7 +12,7 @@
 from ming.orm.mapped_class import MappedClass
 from ming.orm.property import FieldProperty
 
-from pyforge.model import VersionedArtifact, Snapshot, Message
+from pyforge.model import VersionedArtifact, Snapshot, Message, File
 
 wikiwords = [
     (r'\b([A-Z]\w+[A-Z]+\w+)', r'<a href="../\1/">\1</a>'),
@@ -83,6 +83,10 @@
             type_s='WikiPage',
             text=self.text)
         return result
+
+    @property
+    def attachments(self):
+        return Attachment.by_metadata(page_id=self._id)
     
     @classmethod
     def upsert(cls, title, version=None):
@@ -126,6 +130,26 @@
             return Comment.query.find(dict(page_id=self._id, parent_id=None))
         else:
             return []
+
+class Attachment(File):
+    class __mongometa__:
+        name = 'attachment.files'
+        indexes = [
+            'metadata.filename',
+            'metadata.page_id' ]
+
+    # Override the metadata schema here
+    metadata=FieldProperty(dict(
+            page_id=schema.ObjectId,
+            app_config_id=schema.ObjectId,
+            filename=str))
+
+    @property
+    def page(self):
+        return Page.query.get(_id=self.metadata.page_id)
+
+    def url(self):
+        return self.page.url() + 'attachment/' + self.filename
 
 class Comment(Message):
     class __mongometa__: