svn commit: samba-web r295 - in trunk: . scripts
deryck at samba.org
deryck at samba.org
Tue Aug 31 04:57:59 GMT 2004
Author: deryck
Date: 2004-08-31 04:57:59 +0000 (Tue, 31 Aug 2004)
New Revision: 295
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba-web&path=/trunk&rev=295&nolog=1
Log:
This is a script I've been working on for handling
the updates to news.samba.org. As it's my first bit
of coding, I add it here, so jerry, tpot, (and anyone
else who feels inclined) can take a look. Once we
start using it, I'll remove it from samba-web.
tpot, jerry -- I've tested this in several situations
and it works fine for me. But does it look okay to
you guys? I'm thinking, of course, that it will run
as a cron job to build the news web pages.
Thanks for looking it over. Cheers,
--deryck
Added:
trunk/scripts/
trunk/scripts/updateNews.py
Changeset:
Added: trunk/scripts/updateNews.py
===================================================================
--- trunk/scripts/updateNews.py 2004-08-30 16:52:53 UTC (rev 294)
+++ trunk/scripts/updateNews.py 2004-08-31 04:57:59 UTC (rev 295)
@@ -0,0 +1,147 @@
+#! /usr/bin/python
+
+#
+# A script for handling files on news.samba.org.
+#
+# This script reads the news directory and creates an index.html
+# file for news.samba.org. It also creates a permanent archive for
+# each topic by writing an index.html file in each sub directory.
+#
+# Before this can be run, a calendar directory must be created. The
+# calendar updates from the team dir should be moved to the new
+# calendar dir, so calendar updates are not read as news items.
+#
+
+import os, time
+from stat import *
+
+top_dir = '/srv/www/htdocs/news' # set to news directory path
+not_news = ['.svn', 'images', 'style', 'calendar', 'index.html']
+
+
+# Get list of news directories. Then, pair up dir name with dir files.
+
+os.chdir(top_dir)
+top_dir_files = os.listdir(os.curdir)
+
+topics = []
+for x in top_dir_files:
+ if x in not_news: continue
+ if os.path.isdir(x):
+ topics.append(x)
+topics.sort()
+
+topics_files = {}
+for x in topics:
+ topics_files[x] = os.listdir(x)
+
+
+# Loop through each directory, find all stories, and create main index.html
+
+all_stories = {}
+
+for x in topics:
+ topic = x
+ filelist = os.listdir(topic)
+ os.chdir(topic)
+
+ topic_stories = {}
+
+ for x in filelist:
+ if x in not_news: continue
+ f = open(x, 'r')
+ f_lines = f.readlines()
+ story = "".join(f_lines) + '<div class="reference">Link: <a href="/samba/news/' + topic + '/#' + x[:-5] + '">' + topic + '/</a></div>\n\n'
+ f_stats = os.stat(x)
+ f_date = time.strftime("%d %B %Y", time.localtime(f_stats[ST_MTIME]))
+ # group stories on the same date under that one date
+ if f_date in topic_stories:
+ topic_stories[f_date] += story
+ else:
+ topic_stories[f_date] = story
+
+ for x in topic_stories:
+ h2date = x
+ # again, group stories from same date under that date
+ if h2date in all_stories:
+ all_stories[h2date] += topic_stories[h2date]
+ else:
+ all_stories[h2date] = topic_stories[h2date]
+
+ os.chdir(top_dir)
+
+index = open('index.html', 'w')
+index.write('<!--#include virtual="/samba/news/header.html" -->\n')
+index.write('<title>news.samba.org</title>\n')
+index.write('<!--#include virtual="/samba/news/header2.html" -->\n\n')
+index.close()
+
+post_dates = all_stories.keys()
+post_dates.sort()
+post_dates.reverse()
+
+for x in post_dates:
+ h2date = x
+ news_text = all_stories[h2date]
+ index = open('index.html', 'a')
+ index.write('<h2>' + h2date + '</h2>\n\n')
+ index.write(news_text)
+ index.close()
+
+index = open('index.html', 'a')
+index.write('<!--#include virtual="/samba/news/footer.html" -->\n\n')
+index.close
+
+
+# Define function that creates index.html for each directory.
+
+def archive(dir, files):
+ topic = dir
+ os.chdir(topic)
+ filelist = files
+
+ stories_by_date = {}
+
+ for x in filelist:
+ if x in not_news: continue
+ f = open(x, 'r')
+ f_lines = f.readlines()
+ f_stats = os.stat(x)
+ f_date = time.strftime("%d %B %Y", time.localtime(f_stats[ST_MTIME]))
+ # group stories from same date under that one date
+ if f_date in stories_by_date:
+ stories_by_date[f_date].append("".join(f_lines))
+ else:
+ stories_by_date[f_date] = f_lines
+
+ index = open('index.html', 'w')
+ index.write('<!--#include virtual="/samba/news/header.html" -->\n')
+ index.write('<title>' + topic + '/' + ' on news.samba.org</title>\n')
+ index.write('<!--#include virtual="/samba/news/header2.html" -->\n\n')
+ index.write('<h1>' + topic + ' archive on news.samba.org</h1>\n\n')
+ index.write('<p>All stories for the ' + topic + ' topic are archived here</p>\n\n')
+ index.close()
+
+ post_dates = stories_by_date.keys()
+ post_dates.sort()
+ post_dates.reverse()
+
+ for x in post_dates:
+ h2date = x
+ news_text = "".join(stories_by_date[h2date])
+ index = open('index.html', 'a')
+ index.write('<h2>' + h2date + '</h2>\n\n')
+ index.write(news_text)
+ index.close()
+
+ index = open('index.html', 'a')
+ index.write('<!--#include virtual="/samba/news/footer.html" -->\n\n')
+ index.close
+
+ os.chdir(top_dir)
+
+
+# Loop through each subdirectory, using function to create each index.html.
+
+for x in topics_files:
+ archive(x, topics_files[x])
Property changes on: trunk/scripts/updateNews.py
___________________________________________________________________
Name: svn:executable
+ *
More information about the samba-cvs
mailing list