jvasile / planeteria Goto Github PK
View Code? Open in Web Editor NEWMultiple Blog Planet Site
Home Page: http://planeteria.org
License: Other
Multiple Blog Planet Site
Home Page: http://planeteria.org
License: Other
It would be nice if Planeteria displayed all the images for the feeds with the same width. Some are way too large and it seems to display them with the actual image size right now. 150 px seems to work nicely. If they're much smaller, we should leave them be since making them bigger could make them look really fuzzy/grainy, depending on the image quality.
atom.xml should validate, and we should have a unit test for this.
I have added three new feeds to the mono planeteria and they have not updated after over 12 hours.
A post from Blogger had text that used <center> tags; on the Planteria feed page, it did not honor the </center> tag, so all the text after the </center> tag continues to be centered.
This is the code from the Blogger post:
<center>(<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: xx-small;">Music<span style="font-size: xx-small;">: </span>I can't get started</span></span>) </center>
Which is displayed like this on her blog:
And the feed on Planeteria.org looked like this:
It seems there is code in the template to do this, but for some reason it's not working.
Update dates in atom.xml should be RFC-3339 datetimes, but they lack the Z offset. And we need a test for this.
The Planet Config section, which allows you to change the Planet's admin contact information, currently looks like this:
I initially misunderstood and thought it was asking for the name & email of the person who making that specific change (me), when really it is asking for the administrator's contact info.
Quick fix: instead of
Your name:
Your email:
change to
Adminstrator name:
Administrator email:
Longer term: consider putting the settings for Administrator contact info on a separate page from the Feeds so that someone doesn't accidentally change that when they only meant to make a change to the feeds.
This may be related to [this issue https://github.com//issues/10] or may not be.
I noticed today that a post from wordpress.com had used <strong> tags but the </strong> tag is not honored so the text continues to be bolded, not only through the end of that entry, but into all the feeds displayed below it!
I checked the HTML code in that feed and the following feed to confirm that it didn't coincidentally have an un-closed <strong> tag at the beginning of the following entry.
The entry where this starts appears like this on Planeteria:
But it looks like this in her own blog:
The HTML code from her blog is:
<p><strong>2nd reading, wherein Paul makes the famous “there are many parts, but one body” analogy</strong></p>
<p><strong></strong>Perhaps this story is new to you;
Notice that there is an empty pair of strong tags, but they are definitely closed (a WYSIWYG artifact). However, all the text that appears afterward is still bold on Planeteria. The HTML of the Planeteria.org page looks like this:
<p><strong>2nd reading, wherein Paul makes the famous “there are many parts, but one body” analogy</strong></p>
<p><strong/>Perhaps this story is new to you;
Here, the empty pair of strong tags have been changed to <strong/> for some reason. The slash is on the wrong side, so understandably the browser thinks it's an open strong tag.
opml.xml should validate, and we should have a unit test for this
From a user:
I can't open the Women In Free Software with my feed reader (NewsFox)
because it claims that the feed isn't well formed. The WC3 Feed
Validation Service complains about an unescaped "&":
This feed does not validate.
line 7, column 24: XML parsing error: :7:24: not
well-formed (invalid token) [help]<name>James Vasile & Aleta Dunne</name>
This was something I (Aleta) recently edited in the Admin Name field under Planet Config. As a short-term solution, I replaced the ampersand with the word "and".
To do: Add escaping to characters in that field.
Currently there's a cron job that updates the planets that updates every 15 mins or so. It would be nice if it could selectively update when a feed is added/changed so there's no wait after a change is made.
This page vendor/withsqlite/withsqlite.py
says it's released under the GNU General Public License, version 3 or later; but the bottom of the main site says the code is under the terms of the AGPLv3.
What is the license that should be used? Let's make it consistent throughout the codebase.
Right now, if I go to
the page title is "Welcome to Planeteria"; it would be nice if the page <title> were, instead, the title of that planet ("Planet Women in Free Software").
We currently publish the newest 50 posts, but that leaves some dormant feeds with nothing represented. We should do 50 + the latest for every feed that isn't represented in the newest 50.
Having a single sign-on makes sense for the admin page.
Planets with multiple administrators could give each administrator a unique login/password
The OPML spec at http://dev.opml.org/spec2.html says:
An OPML file may contain elements and attributes not described on this page, only if
those elements are defined in a namespace, as specified by the W3C.
OPML can also be extended by the addition of new values for the type attribute.
When specifying such an extension, following the example of this specification, say
which attributes are required and which are optional, and explain the roles each of the
attributes plays, how they relate to each other, and what rules they must conform to.
There is a mechanism in the OPML Editor that is based on this form of extension.
Developers should, whenever possible, use capabilities that are already in use by
others, or included in this spec, or recommendations or guidelines.
Our feeds have tags and face (hackergotchi) urls. We should export those in the OPML file planeteria should import from such an OPML file, as per issue #4.
Aside from attracting new subscribers to these planets, this will also provide examples to help potential users better understand how other people use Planeteria.org and how they might use it.
Passwords are currently stored in plain text. Users are warned about this, but we really should obfuscate them.
Add instructions for those who want to add their blog to a planet: What info is needed, how to add only one tag / category of your blog, image requirements. This will save some work for the curator/admin and streamline the process of adding new feeds to a planet.
Allow users to sign up to have posts emailed to them, possibly in gpg-encrypted form.
Creating a new planet from the main page goes to http://planeteria.org/new_planet.py and results in this error:
<type 'exceptions.IOError'> Python 2.7.3rc2: /usr/bin/python
Wed Mar 27 22:10:04 2013
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/var/www/planeteria2/www/new_planet.py in ()
16 cgitb.enable()
17
=> 18 from config import *
19 log = logging.getLogger('planeteria')
20 from util import Msg
config undefined
/var/www/planeteria2/config.py in ()
57 logger = logging.getLogger('planeteria')
58 logger.setLevel(logging.DEBUG)
=> 59 fh = logging.FileHandler(os.path.join(opt['log_dir'], 'planeteria.log'), encoding = "UTF-8")
60 fh.setLevel(logging.DEBUG)
61 fh_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh undefined, logging = None, logging.FileHandler undefined, os = None, os.path undefined, opt = None, encoding undefined
/usr/lib/python2.7/logging/init.py in init(self=<logging.FileHandler object>, filename='/var/www/planeteria2/log/planeteria.log', mode='a', encoding='UTF-8', delay=0)
895 self.stream = None
896 else:
=> 897 StreamHandler.init(self, self._open())
898
899 def close(self):
global StreamHandler = <class 'logging.StreamHandler'>, StreamHandler.init = , self = <logging.FileHandler object>, self._open = <bound method FileHandler._open of <logging.FileHandler object>>
/usr/lib/python2.7/logging/init.py in _open(self=<logging.FileHandler object>)
916 stream = open(self.baseFilename, self.mode)
917 else:
=> 918 stream = codecs.open(self.baseFilename, self.mode, self.encoding)
919 return stream
920
stream undefined, global codecs = <module 'codecs' from '/usr/lib/python2.7/codecs.pyc'>, codecs.open = , self = <logging.FileHandler object>, self.baseFilename = '/var/www/planeteria2/log/planeteria.log', self.mode = 'a', self.encoding = 'UTF-8'
/usr/lib/python2.7/codecs.py in open(filename='/var/www/planeteria2/log/planeteria.log', mode='ab', encoding='UTF-8', errors='strict', buffering=1)
879 # Force opening of the file in binary mode
880 mode = mode + 'b'
=> 881 file = builtin.open(filename, mode, buffering)
882 if encoding is None:
883 return file
builtin file = <type 'file'>, global builtin = <module 'builtin' (built-in)>, builtin.open = , filename = '/var/www/planeteria2/log/planeteria.log', mode = 'ab', buffering = 1
<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '/var/www/planeteria2/log/planeteria.log'
args = (2, 'No such file or directory')
errno = 2
filename = '/var/www/planeteria2/log/planeteria.log'
message = ''
strerror = 'No such file or directory'
We need to automatically test the major functions: planet creation, add/remove feed, edit planet metadata, update planets, generate atom/html/opml files. Maybe twill can help.
An entry title in the WFS feed included a & symbol which did not display properly. It seems like it has been escaped twice.
On Planeteria, it looks like this:
and the HTML generated by Planeteria is here: https://gist.github.com/anteaya/4eb16a7b3374123cb8f7
On the blogger's site, it displays as a single & symbol without the partial escape text.
This was requested for OPW interns to display a photo of themselves as well as the OPW internship logo.
The curator would decide what tags to assign. Users could select a tag or multiple tags to display only those blog posts with that tag.
This has been requested by multiple internship participants.
Another idea that's been suggested as an alternative to tagging is to be able to copy a planet to create a new one and change the subscriptions as desired.
Whenever possible, we should be emitting and accepting standard blocks. Currently, we populate the feeds in the admin interface by prepopulating a javascript function that formats the feed rows in a table. We should instead, grab the opml file, parse it and pass that to the display function.
This issue depends on issue #28.
I noticed when I first put quotes around Skud's name on WFS that the first quote and all the text that appears after it disappears when the Admin page next loads. And as a consequence of that, if you don't add it back, then when you next save changes, it'll save the name without the text after the quotes.
I dug into it a bit today when I was fixing an issue with escaped apostrophes in the name field. It is not fixed by escaping the quotes. Looking at the DOM in Chrome Developer Tools, it seems to be related to the form field code. The value= wraps the string in double quotes, so when it sees double quotes it thinks the string has ended.
In the example below, I typed in the phrase Skud "missile" test and then submitted the change. This is what appeared on the admin page when it next loaded.
The front page of http://planeteria.org/wfs/ currently shows a blog post by me - http://www.harihareswara.net/sumana/2013/02/09/0 - that uses several em tags. As displayed in Planeteria, the text enclosed by em tags isn't italicized or bolded or emphasized in any way.
automated list administration FTW!
This link has instructions.
This will help potential contributors easily find out how to contribute to the project.
The generate function is a giant mishmash of massaging input for generating our various templates. It needs to be broken up into smaller functional pieces that can be unit tested.
I'm using Firefox and MacOSX 10.8.2. I just added a new blog to a feed, and got this error:
<type 'exceptions.AttributeError'> Python 2.7.3rc2: /usr/bin/python
Wed Mar 27 21:11:35 2013
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/var/www/planeteria2/www/feministhackers/admin.py in ()
215 a = Admin(template_vars(planet, Form)).render()
216 sys.stdout.write(a)
217
218 if name == "main":
=> 219 main()
main =
/var/www/planeteria2/www/feministhackers/admin.py in main()
196 if Form.has_key('PlanetName'):
197 orig_pass = planet.password
=> 198 planet = update_config(planet)
199
200 if Form.getvalue('Timestamp') != str(planet.last_config_change):
planet = <planet.Planet instance>, global update_config =
/var/www/planeteria2/www/feministhackers/admin.py in update_config(planet=<planet.Planet instance>)
135 urls_seen = []
136 while (Form.has_key('section%d' % feed_count)):
=> 137 url = Form.getvalue('feedurl%d' % feed_count,'').strip()
138 urls_seen.append(url)
139 if not url:
url undefined, global Form = FieldStorage(None, None, [MiniFieldStorage('Time..._'), MiniFieldStorage('Pass', '_')]), Form.getvalue = <bound method FieldStorage.getvalue of FieldStor...****'), MiniFieldStorage('Pass', '****')])>, feed_count = 0, ).strip undefined
<type 'exceptions.AttributeError'>: 'list' object has no attribute 'strip'
args = ("'list' object has no attribute 'strip'",)
message = "'list' object has no attribute 'strip'"
Feed URL: http://fredjoiner.wordpress.com/feed/atom/
Error
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/var/www/planeteria2/www/allarounddc/admin.py in ()
215 a = Admin(template_vars(planet, Form)).render()
216 sys.stdout.write(a)
217
218 if __name__ == "__main__":
=> 219 main()
main = <function main>
/var/www/planeteria2/www/allarounddc/admin.py in main()
196 if Form.has_key('PlanetName'):
197 orig_pass = planet.password
=> 198 planet = update_config(planet)
199
200 if Form.getvalue('Timestamp') != str(planet.last_config_change):
planet = <planet.Planet instance>, global update_config = <function update_config>
/var/www/planeteria2/www/allarounddc/admin.py in update_config(planet=<planet.Planet instance>)
135 urls_seen = []
136 while (Form.has_key('section%d' % feed_count)):
=> 137 url = Form.getvalue('feedurl%d' % feed_count,'').strip()
138 urls_seen.append(url)
139 if not url:
url undefined, global Form = FieldStorage(None, None, [MiniFieldStorage('Time...d3.jpeg'), MiniFieldStorage('Pass', '[censored]')]), Form.getvalue = <bound method FieldStorage.getvalue of FieldStor...3.jpeg'), MiniFieldStorage('Pass', '[censored]')])>, feed_count = 0, ).strip undefined
<type 'exceptions.AttributeError'>: 'list' object has no attribute 'strip'
args = ("'list' object has no attribute 'strip'",)
message = "'list' object has no attribute 'strip'"
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.