[Checkins] SVN: Grokstar/trunk/src/grokstar/ Applied patches of Joachim Schmitz: view list of unpublished entries.

Uli Fouquet uli at gnufix.de
Sat Jul 14 13:07:04 EDT 2007


Log message for revision 77956:
  Applied patches of Joachim Schmitz: view list of unpublished entries.

Changed:
  U   Grokstar/trunk/src/grokstar/blog.py
  U   Grokstar/trunk/src/grokstar/blog_templates/blogindex.pt
  A   Grokstar/trunk/src/grokstar/blog_templates/breadcrumbs.pt
  A   Grokstar/trunk/src/grokstar/blog_templates/draftsindex.pt
  U   Grokstar/trunk/src/grokstar/entry_templates/index.pt
  U   Grokstar/trunk/src/grokstar/traverse.py

-=-
Modified: Grokstar/trunk/src/grokstar/blog.py
===================================================================
--- Grokstar/trunk/src/grokstar/blog.py	2007-07-14 17:06:15 UTC (rev 77955)
+++ Grokstar/trunk/src/grokstar/blog.py	2007-07-14 17:07:03 UTC (rev 77956)
@@ -2,7 +2,8 @@
 from datetime import datetime, timedelta
 
 from zope import schema, interface
-
+from zope.interface import Interface
+from zope.traversing.api import getParents
 from hurry.query.query import Query
 from hurry import query
 from hurry.workflow.interfaces import IWorkflowState
@@ -35,6 +36,32 @@
     workflow_state = index.Field(attribute='getState')
     workflow_id = index.Field(attribute='getId')
 
+
+class Drafts(grok.Model):
+      pass
+
+class DraftsIndex(grok.View):
+    grok.context(Drafts)
+    grok.name('index')
+    
+    def entries(self): 
+        return allEntries(10)
+
+class Breadcrumbs(grok.View):
+    grok.context(Interface)
+    def parents(self):
+        pl = getParents(self.context)
+        return pl
+        obj = self.context
+        while obj is not None:
+            pl.append(obj)
+            if isinstance(obj, grok.Application):
+                break
+            obj = obj.__parent__
+        pl.reverse()
+        return pl
+    
+        
 class Entries(grok.Container):
     pass
 
@@ -65,7 +92,15 @@
     entries = Query().searchResults(
         query.Eq(('entry_catalog', 'workflow_state'),
                   PUBLISHED))
-
     return sorted(
         entries, key=lambda entry: entry.published, reverse=True
         )[:amount]
+
+def allEntries(amount):
+    entries = Query().searchResults(
+        query.In(('entry_catalog', 'workflow_state'),
+                  (CREATED,)))
+
+    return sorted(
+        entries, key=lambda entry: entry.updated, reverse=True
+        )[:amount]

Modified: Grokstar/trunk/src/grokstar/blog_templates/blogindex.pt
===================================================================
--- Grokstar/trunk/src/grokstar/blog_templates/blogindex.pt	2007-07-14 17:06:15 UTC (rev 77955)
+++ Grokstar/trunk/src/grokstar/blog_templates/blogindex.pt	2007-07-14 17:07:03 UTC (rev 77956)
@@ -6,13 +6,13 @@
   <body>
     <h1 tal:content="context/title"/>
     <h2 tal:content="context/tagline"/>
-    <a tal:attributes="href python:view.url('add')">Add Blog Entry</a>
+    <a href="./drafts" tal:attributes="href string:${view/application_url}/drafts">Unplublished Entries</a><br />
+    <a tal:attributes="href python:view.url('add')">Add Blog Entry</a><br />
 
     <div class="entries">
       <tal:block repeat="entry view/entries">
         <tal:block content="structure entry/@@item"/>
       </tal:block>
     </div>
-
   </body>
 </html>

Added: Grokstar/trunk/src/grokstar/blog_templates/breadcrumbs.pt
===================================================================
--- Grokstar/trunk/src/grokstar/blog_templates/breadcrumbs.pt	                        (rev 0)
+++ Grokstar/trunk/src/grokstar/blog_templates/breadcrumbs.pt	2007-07-14 17:07:03 UTC (rev 77956)
@@ -0,0 +1,3 @@
+<span tal:repeat="obj view/parents" tal:omit-tag="">
+  <a href="" tal:attributes="href python: view.url(obj)" tal:content="obj/__name__" />
+</span>

Added: Grokstar/trunk/src/grokstar/blog_templates/draftsindex.pt
===================================================================
--- Grokstar/trunk/src/grokstar/blog_templates/draftsindex.pt	                        (rev 0)
+++ Grokstar/trunk/src/grokstar/blog_templates/draftsindex.pt	2007-07-14 17:07:03 UTC (rev 77956)
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+  <head>
+ </head>
+  <body>
+    <div class="" tal:content="structure context/@@breadcrumbs" />    
+    <a href="../add">Add Blog Entry</a><br />
+    <div class="entries">
+      <tal:block repeat="entry view/entries">
+        <tal:block content="structure entry/@@item"/>
+      </tal:block>
+    </div>
+  </body>
+</html>

Modified: Grokstar/trunk/src/grokstar/entry_templates/index.pt
===================================================================
--- Grokstar/trunk/src/grokstar/entry_templates/index.pt	2007-07-14 17:06:15 UTC (rev 77955)
+++ Grokstar/trunk/src/grokstar/entry_templates/index.pt	2007-07-14 17:07:03 UTC (rev 77956)
@@ -4,6 +4,8 @@
     <title tal:content="context/title"/>
   </head>
   <body>
+    <a href="" tal:attributes="href view/application_url">home</a>
+    <div class="" tal:content="structure context/@@breadcrumbs" />    
     <h1>
       <tal:block content="context/title"/>
       (<span class="published" tal:content="context/published"/>)

Modified: Grokstar/trunk/src/grokstar/traverse.py
===================================================================
--- Grokstar/trunk/src/grokstar/traverse.py	2007-07-14 17:06:15 UTC (rev 77955)
+++ Grokstar/trunk/src/grokstar/traverse.py	2007-07-14 17:07:03 UTC (rev 77956)
@@ -1,11 +1,17 @@
 import grok
-from grokstar.blog import Blog
+from grokstar.blog import Blog,Drafts
 from grokstar.calendar import Year
 
 class BlogTraverser(grok.Traverser):
     grok.context(Blog)
 
     def traverse(self, name):
+        #import pdb;pdb.set_trace()
+        if name == "drafts":
+            drafts =  Drafts()
+            drafts.__name__ = 'drafts'
+            drafts.__parent__ = self.context
+            return drafts
         try:
             year = int(name)
         except ValueError:



More information about the Checkins mailing list