view commentator/model.py @ 0:1c95a3fa76c1

initial commit of commentator
author k0s <k0scist@gmail.com>
date Sun, 24 Jan 2010 17:39:05 -0500
parents
children 689b9d928dc8
line wrap: on
line source

import os
import pickle

from datetime import datetime
        
class PickleComments(object):
    # TODO: locking
    def __init__(self, database):
        self.database = database
        if not os.path.exists(database):
            f = file(database, 'w')
            pickle.dump({}, f)
            f.close()

    def comment(self, uri, **kw):
        f = file(self.database)
        comments = pickle.load(f)
        f.close()
        comments.setdefault(uri, []).append(kw)
        f = file(self.database, 'w')
        comments = pickle.dump(comments, f)
        f.close()

    def comments(self, uri):
        f = file(self.database)
        comments = pickle.load(f)
        f.close()
        return comments.get(uri, [])

    
try:
    import couchdb

    class CouchComments(object):
        def __init__(self, db):
            self.couch = couchdb.Server()
            if db not in self.couch:
                self.db = self.couch.create(db)
            else:
                self.db = self.couch[db]

        def comment(self, uri, **kw):
            if uri in self.db:
                comments = self.db[uri]['comments']
                comments.append(kw)
                self.db[uri] = { 'comments': comments }
            else:
                self.db[uri] = { 'comments': [ kw ] }

        def comments(self, uri):
            if uri in self.db:
                doc = self.db[uri]
                return doc ['comments']
            return []

except ImportError:
    pass