#!/usr/bin/python

import couchdb

class Couch(object):
    def __init__(self,url,db):
        self._url = url
        self._dbname = db
        self._server = couchdb.Server(url)

    def auth(self):
        import getpass
        self._server.resource.credentials = (getpass.getuser(),getpass.getpass())

    def upload(self,doc,att=[]):
        db = self._server[self._dbname]
        if '_id' in doc:
            olddoc = db.get(doc['_id'])
            if olddoc:
                doc['_rev'] = olddoc['_rev']
        _id = db.create(doc)
        for name,content in att:
            doc = db.get(_id)
            db.put_attachment(doc,content,name)
        return _id

def test(url,dbname):
    couch = Couch(url,dbname)
    docA = {
        'name' : 'A'
    }
    print(couch.upload(docA,[('code.py',open(__file__,'r'))]))
    docB = {
        'name' : 'B',
        '_id' : 'named'
    }
    print(couch.upload(docB))
    docC = {
        'name' : 'C',
        '_id' : '_design/test'
    }
    couch.auth()
    print(couch.upload(docC,[('code.py',open(__file__,'r'))]))

if __name__ == '__main__':
    print("load")
    test('http://localhost:5984/','test')
