arachnid / bloggart Goto Github PK
View Code? Open in Web Editor NEWA blog application for App Engine
Home Page: http://bloggart-demo.appspot.com/
A blog application for App Engine
Home Page: http://bloggart-demo.appspot.com/
A default favicon.ico is currently missing :)
Add an option to use disqus or Google FriendConnect comment :
http://www.google.com/friendconnect/admin/site/wallgadget?id=02733841791864621137
Just a feature request. At the moment, the atom feeds are for entire blog, tag based atom feeds will be useful to share specific tagged feeds to others. Livejournal amongst other systems had this feature.
BTW, this the project actively maintained?
Atom feed contains draft posts. Obviously, this shouldn't be the case.
I'll look at this when as I find time.
django does silent failure (bad I think or it should be disabled), tornado not so it's easier to check error.
So, I think there is an error here in your atom feed :
{{posts.0.updated|date:"Y-m-d\TH:i:s\Z"}}
because : posts = itertools.islice((x for x in q if x.path), 10)
and posts[0] will fail
TypeError: 'itertools.islice' object is unsubscriptable
It's blank in blog.notdot.net :
I think Djangoforms should be removed for 2 reasons :)
1 - Personaly, (so not very important :p ), I think that djangoforms is overkill for only 3 text fields.
2 - Most important this time : Djangoforms goes against the second rule of bloggart "Good isolation of code and markup. Users shouldn't have to understand the innards of our blogging software if all they want to do is change how the blog looks or is laid out." and particulalry for 2 things :
So I think it could be a nice feature to remove Djangoforms and to use for example jquery to check the forms (mandatory fields) and add a nice alert box (jalert : http://abeautifulsite.net/notebook_files/87/demo/)... and maybe start a little Ajax (for the preview for example,...)
And example of jquery code to validate the form (it has to be checked server side too)
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> <script type="text/javascript"> ``` $(function() { $("input[name=title]").select(); $("form.compose").submit(function() { var required = ["title", "body", "tags"]; var form = $(this).get(0); for (var i = 0; i < required.length; i++) { if (!form[required[i]].value) { $(form[required[i]]).select(); return false; } } return true; }); }); ```If a tag doesn't exist anymore, the static pages are still there with this path : tag/my_deleted_tag.
We can delete this tag after we publish a new post or add a "clean job" that delete all orpheans.
As per subject.
Currently 404 results in a blank page.
We can add a custom Google 404 ?
<script type="text/javascript"> var GOOG_FIXURL_LANG = 'en'; var GOOG_FIXURL_SITE = 'http://www.example.com' </script> <script type="text/javascript" src="http://linkhelp.clients.google.com/tbproxy/lh/wm/fixurl.js"> </script>http://www.google.com/support/webmasters/bin/answer.py?answer=136085
I think the Static handler should support the "Expires" and "Cache-Control" headers.
It could be particularly useful if you want to add an image gallery or something like that. Most of the time, images are cached indefinitely.
The main page of the blog '/' shows a big fat whooops. I checked the settings in config.py and everything seems to be in order. I'm running in the SDK on localhost on Linux. Any tips? Thanks
This morning two new posts showed up in my Google Reader. "Efficient model memcaching" with complete text and correct URL. And "Blogging on App Engine, part 10: Review" without content and an invalid URL pointing to http://blog.notdot.netnone/
obviously custom domains are supported ( e.g. http://blog.notdot.net ) via the gae add domain but how can i login to the blog as an admin with a email address from that domain ( e.g. [email protected] ) instead of my @gmail account
note: yes my domain is a google apps domain ( http://blog.brandonholtsclaw.com )
AttributeError: 'module' object has no attribute 'google_sitemap_ping'
The patch is available here.
Like Analytics, Webmaster tool,... add easy feedburner integration.
I'm not sure how to give you a patch but here is a link to the commit i made for just this change
basicly /default/ becomes /{{config.theme}}/ and /simple/ becomes /{{config.theme}}/ so if a user ( or dev ) changes the name of the theme directory it does not break the appear of the theme
http://github.com/hickups/bloggart/commit/ec1b17be98e681affe159756075e762e64be8c89
Fix the problem is described here:
git clone git://github.com/Arachnid/bloggart.git
git submodule init
git submodule update
"Run" using Google AppEngine Launcher
Visit http://localhost:8080, see 404 error
Visit http://localhost:8080/admin/, see stack trace for an exception thrown in the 'import markdown' line in markup.py:
<type 'exceptions.ImportError'>: No module named markdown
args = ('No module named markdown',)
message = 'No module named markdown'
I've installed Python 2.5.4 from python.org and AppEngine is using this. I've done nothing else, and made no modifications to bloggart. I couldn't see any other instructions so I assumed this was all that was required.
Have I just missed out some important step or is this an actual issue?
I've finished to update bloggartornado with the last changes but I've an error here :
set('/sitemap.xml', rendered, 'application/xml', False)
TypeError: set expected at most 1 arguments, got 4
To fix my version : import static and static.set
Maybe you have the same issue ?
def _regenerate_sitemap():
import static
paths = _get_all_paths()
rendered = render_template('sitemap.xml', {'paths': paths})
static.set('/sitemap.xml', rendered, 'application/xml', False)
When attempting to enqueue upgrade tasks etc based on a user visiting the admin console, gracefully degrade and do nothing if there's a transient error.
If I edit a post, the tabs (HOME / POSTS / NEW POST) should be (HOME / POSTS / EDIT POST)
When a new post is added, it could be nice to "ping" many services. (like pubsubhub I think):
Post counts on the admin page are off by one. Here's a patch to fix it: http://gist.github.com/214940
Note, this patch adds a new column with two actions (view, edit) to the list of posts table too. I've found this very handy :)
It's a big trouble to edit templates currently - after each update a user is required to update a blog entry to make the changes visible.
It'd be quite useful for me to have a config variable turning off the internal caching system. Or how do you debug changes in templates?
In order to avoid "english" labels (title, body, new post,...) and french ("Envoyer" == "Submit" see picture), the submit button should have a "value".
Something like that could be more friendly : "Create the post".
If a tag is renamed, index pages are not regenerated
Add content.tags to the Etag
class ListingContentGenerator(ContentGenerator):
@classmethod
def get_etag(cls, post):
return hashlib.sha1((post.title + post.summary + str(post.tags)).encode('utf-8')).hexdigest()
I just download the app and set it up, but when I launch it and run, it says:
< type 'exceptions.ImportError' > : No module named aetycoon
there is a lib/aetycoon/__init__.py
file, it looks like it's ok, but it crashes when I try to run.
the error happens on static.py
line 14, right where I import aetycoon
.
what could it be?
Ok, so here is as much relevant information as possible since I've only installed bloggart a few minutes ago.
In firefox 3.6 ( linux ) if i goto the /admin/* page i get redirected to login, after successful login i keep getting redirected BACK to the google login. this does not happen in chrome and works as it should.
For people that "only" want to create a theme, I think these django tags are not very friendly and they have to check the code to understand them.
{% ifequal generator_class "IndexContentGenerator" %}
{% ifequal handler_class "AdminHandler" %}
{% ifequal path "/admin/newpost" %}
Maybe this could be replace with nice and easy variable :
{% if index %}
{% if admin %}
{% if new_post %}
etc,...
then it could be nice to create all :
{% if atom %} #atom generator
{% if edit_post %} #edit a post
{% if tag %} #tag generator
etc,....
As i guess there is no way i can put a post in a category and show the category in right sidebar. Would be nice if that is implemented.
In admin templates base.html call {% extend "../base.html" %}. I'm try it with other Django version and its stop working. Seems like it is bad practice and you can't guaranty that it will work. So may be best way is divide admin and user templates or move both to same folder.
I thought I'd give bloggart another go now that the last issue I opened has been fixed. Same steps as before;
git clone git://github.com/Arachnid/bloggart.git
git submodule init
git submodule update
"Run" using Google AppEngine Launcher
Visit http://localhost:8080
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3177, in _HandleRequest
self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3120, in _Dispatch
base_env_dict=env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 515, in Dispatch
base_env_dict=base_env_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2379, in Dispatch
self._module_dict)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2289, in ExecuteCGI
reset_modules = exec_script(handler_path, cgi_path, hook)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2185, in ExecuteOrImportScript
exec module_code in script_module.dict
File "D:\somewhere\bloggart\static.py", line 21, in
ROOT_ONLY_FILES = ['/robots.txt','/' + config.google_site_verification]
TypeError: cannot concatenate 'str' and 'NoneType' objects
I think it was not on the list, so it could be a nice feature : preview a post before posting.
I'm not sure if this is the intended behaviour or not, but I find it very odd and annoying. If I edit an old post (say, to clean up formatting after an import from another blog), any reader subscribed to the Atom feed will report a new unread entry. I don't know if this is an issue with Bloggart or with feed readers and feeds in general; if it's nothing to do with Bloggart please close this issue.
If I delete everything without uploading a new version, then VersionInfo, cse, search will not be recreated. First we have to upload a new version.
CURRENT_VERSION_ID is not changed, so it will raised an error.
def run_deploy_task():
"""Attempts to run the per-version deploy task."""
task_name = 'deploy-%s' % os.environ['CURRENT_VERSION_ID'].replace('.', '-')
try:
deferred.defer(try_post_deploy, _name=task_name, _countdown=10)
except (taskqueue.TaskAlreadyExistsError, taskqueue.TombstonedTaskError), e:
pass
The etags for summary and full post need to be part of the model code. Further, the etag for summary posts needs to be extended to account for tags.
Hi,
Please consider adding an empty init.py file to the project root. Here's why.
I'm using bloggart under a custom prefix ('/blog/'), with a buildout-based application. The easiest way for me to set it up is to use http://github.com/zerok/zerokspot.gitrecipe/ to grab the latest revision from github.
I don't change anything to the code, I just have a custom dict with my own settings and scripts that look like this (pseudocode):
# my_custom_static.py:
from somewhere import my_custom_settings
# mangle sys.path to insert bloggart's directory
# (which is actually a symlink as I use rod.recipe.appengine
# to put things together for me)
import config # this is bloggart config
[setattr(config, *item) for item in my_custom_settings.iteritems()]
# Then do the rest
from static import main # this is your static.py
if __name__ == '__main__':
main()
As you can see, it is quite frustrating and also it's hard not to make filename clashes. If you'd add an init.py to the root, that probably wouldn't change anything for your code if run stand-alone, but my code would be much cleaner as I could use your code like a package, without manging my sys.path.
When we create a POST we should select the TAG in a list.
So it's easier to rename/delete a TAG and to select always the "good" one.
It can avoid to have very very similar tags : example : appengine, gae, google app engine,...
The Admin template (write/edit a post,...) should be i18ned.
Support compress sitemap .xml.gz,....
I'm interested in this code, but couldn't find what license it was released under. I suggest BSD or MIT.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.