]>
git.ipfire.org Git - ipfire.org.git/blob - www/webapp/backend/planet.py
5 from accounts
import Accounts
6 from databases
import Databases
8 from misc
import Singleton
10 class PlanetEntry(object):
11 def __init__(self
, entry
):
16 return self
.__entry
.id
20 return self
.__entry
.slug
24 return self
.__entry
.title
28 return self
.__entry
.published
32 return self
.__entry
.updated
36 return self
.__entry
.markdown
40 return self
.render(self
.markdown
, 400)
42 def render(self
, text
, limit
=0):
43 if limit
and len(text
) >= limit
:
44 text
= text
[:limit
] + "..."
45 return textile
.textile(text
)
49 return self
.render(self
.markdown
)
53 return Accounts().search(self
.__entry
.author_id
)
57 __metaclass__
= Singleton
61 return Databases().webapp
63 def get_authors(self
):
65 for author
in self
.db
.query("SELECT DISTINCT author_id FROM planet"):
66 author
= Accounts().search(author
.author_id
)
68 authors
.append(author
)
72 def get_entry_by_slug(self
, slug
):
73 entry
= self
.db
.get("SELECT * FROM planet WHERE slug = %s", slug
)
75 return PlanetEntry(entry
)
77 def _limit_and_offset_query(self
, limit
=None, offset
=None):
82 query
+= "LIMIT %d,%d" % (offset
, limit
)
84 query
+= "LIMIT %d" % limit
88 def get_entries(self
, limit
=3, offset
=None):
89 query
= "SELECT * FROM planet ORDER BY published DESC"
91 # Respect limit and offset
92 query
+= self
._limit
_and
_offset
_query
(limit
=limit
, offset
=offset
)
95 for entry
in self
.db
.query(query
):
96 entries
.append(PlanetEntry(entry
))
100 def get_entries_by_author(self
, author_id
, limit
=None, offset
=None):
101 query
= "SELECT * FROM planet WHERE author_id = '%s'" % author_id
102 query
+= " ORDER BY published DESC"
104 # Respect limit and offset
105 query
+= self
._limit
_and
_offset
_query
(limit
=limit
, offset
=offset
)
108 entries
= self
.db
.query(query
)
110 return [PlanetEntry(e
) for e
in entries
]