Example #1
0
def setup_module(module):
    "Read the settings file only once."
    global server
    try:
        settings = couchdb2.read_settings("test_settings.json")
        server = couchdb2.Server(username=settings["USERNAME"],
                                 password=settings["PASSWORD"])
    except IOError:
        server = couchdb2.Server()
def couchdb_conex():
    server = couchdb2.Server(href='http://couchdb:5984/',
                             username='******',
                             password='******',
                             use_session=True,
                             ca_file=None)
    db = server.create('test')

    doc1 = {'_id': 'myid', 'name': 'mydoc', 'level': 4}
    db.put(doc1)
    doc = db['myid']
    assert doc == doc1

    doc2 = {'name': 'another', 'level': 0}
    db.put(doc2)
    print(doc2)

    db.put_design(
        'mydesign',
        {"views": {
            "name": {
                "map": "function (doc) {emit(doc.name, null);}"
            }
        }})
    result = db.view('mydesign', 'name', key='another', include_docs=True)
    assert len(result) == 1
    print(result[0].doc)
Example #3
0
def get_dbserver(app=None):
    "Get the connection to the CouchDB database server."
    if app is None:
        app = flask.current_app
    return couchdb2.Server(href=app.config["COUCHDB_URL"],
                           username=app.config["COUCHDB_USERNAME"],
                           password=app.config["COUCHDB_PASSWORD"])
Example #4
0
def test_server():
    global server
    data = server()
    assert "version" in data
    assert "vendor" in data
    assert server.version
    if server.version >= "2.0":
        assert server.up()
    # Cannot connect to nonsense address
    with pytest.raises(IOError):
        couchdb2.Server("http://localhost:123456/").version
    if server.version >= "2.0":
        data = server.get_config()
        assert "vendor" in data
        assert "log" in data
        data = server.get_cluster_setup()
        assert "state" in data
        data = server.get_membership()
        assert "all_nodes" in data
        assert "cluster_nodes" in data
        data = server.get_scheduler_jobs()
        assert "jobs" in data
        data = server.get_node_stats()
        assert "couchdb" in data
        assert "httpd" in data["couchdb"]
        data = server.get_node_system()
        assert "uptime" in data
        assert "memory" in data
    data = server.get_active_tasks()
    assert isinstance(data, type([]))
Example #5
0
def heatMapOrigin(request):
    if request.method == "GET":
        list = []
        try:
            server1 = couchdb2.Server(address)
            db = server1['tweets']

            result = db.view('/abc',
                             'testView2',
                             group=True,
                             group_level=2,
                             reduce=True)
            sum = 0
            for row in result:
                item = {'location': row.key, 'count': row.value}
                sum += row.value
                list.append(item)
            cache = open('backend/cache/heatMapOrigin.json', 'w')
            json.dump(list, cache)
            cache.close()
        except BaseException:
            print("error in connecting to the database")
            cache = open('backend/cache/heatMapOrigin.json', 'r')
            list = json.load(cache)
            cache.close()
        finally:
            return render(request, 'test.html', {'data': list})
Example #6
0
def get_dbserver():
    "Return the CouchDB2 handle for the CouchDB server."
    kwargs = dict(href=settings["DATABASE_SERVER"])
    if settings.get("DATABASE_ACCOUNT") and settings.get("DATABASE_PASSWORD"):
        kwargs["username"] = settings["DATABASE_ACCOUNT"]
        kwargs["password"] = settings["DATABASE_PASSWORD"]
    return couchdb2.Server(**kwargs)
Example #7
0
def get_db(app=None):
    "Get a connection to the database."
    if app is None:
        app = flask.current_app
    server = couchdb2.Server(
        href=app.config["COUCHDB_URL"],
        username=app.config["COUCHDB_USERNAME"],
        password=app.config["COUCHDB_PASSWORD"],
    )
    return server[app.config["COUCHDB_DBNAME"]]
Example #8
0
def heatByState(request):
    if request.method == "GET":
        stateCount = {
            'vic': 0,
            'nsw': 0,
            'sa': 0,
            'qsl': 0,
            'wa': 0,
            'tas': 0,
            'nt': 0,
            'act': 0
        }
        try:
            statLocation = StateLocation()
            server1 = couchdb2.Server(address)
            db = server1['tweets']
            result = db.view('/abc',
                             'testView2',
                             group=True,
                             group_level=2,
                             reduce=True)
            for row in result:
                item = {'location': row.key, 'count': row.value}
                if statLocation.inVIC(item['location']):
                    stateCount['vic'] += item['count']
                elif statLocation.inNSW(item['location']):
                    stateCount['nsw'] += item['count']
                elif statLocation.inSA(item['location']):
                    stateCount['sa'] += item['count']
                elif statLocation.inQSL(item['location']):
                    stateCount['qsl'] += item['count']
                elif statLocation.inWA(item['location']):
                    stateCount['wa'] += item['count']
                elif statLocation.inTas(item['location']):
                    stateCount['tas'] += item['count']
                elif statLocation.inNT(item['location']):
                    stateCount['nt'] += item['count']
                elif statLocation.inCT(item['location']):
                    stateCount['ct'] += item['count']
            for key in stateCount:
                stateCount[key] = stateCount[key] / 1000
            cache = open('backend/cache/stateCountCache.json', 'w')
            json.dump(stateCount, cache)
            cache.close()
        except BaseException:
            print("error in connecting to the database")
            cache = open('backend/cache/stateCountCache.json', 'r')
            stateCount = json.load(cache)
            cache.close()
        finally:
            return render(request, 'heatMapByState.html', {
                'data': stateCount,
                'aurin': readPopulation()
            })
Example #9
0
def language(request):
    if request.method == 'GET':
        languageState = {}
        languageOrigin = []
        try:
            server1 = couchdb2.Server(address)
            db = server1['tweets']
            result = db.view('/abc',
                             'language',
                             group=True,
                             group_level=2,
                             reduce=True)
            en = {}
            languageOrigin = []
            for row in result:
                if row.key[0] == "en":
                    en[tuple(row.key[1])] = row.value
                else:
                    if tuple(row.key[1]) in en:
                        enCount = en.get(tuple(row.key[1]))
                        item = {
                            'location': row.key[1],
                            'count': row.value / (row.value + enCount)
                        }
                        languageOrigin.append(item)
                    else:
                        item = {'location': row.key[1], 'count': 1}
                        languageOrigin.append(item)
            for item in languageOrigin:
                item['count'] = round(item['count'], 4)
            languageState = languageByState(result)

            cache1 = open('backend/cache/languageOrigin.json', 'w')
            json.dump(languageOrigin, cache1)
            cache1.close()
            cache2 = open('backend/cache/languageState.json', 'w')
            json.dump(languageState, cache2)
            cache2.close()
        except BaseException:
            print("error in connecting to the database")
            cache1 = open('backend/cache/languageOrigin.json', 'r')
            languageOrigin = json.load(cache1)
            cache1.close()
            cache2 = open('backend/cache/languageState.json', 'r')
            languageState = json.load(cache2)
            cache2.close()
        finally:
            return render(
                request, 'language.html', {
                    'data': languageOrigin,
                    "aurin": heatByStateAurin(),
                    'rate': readLanguageByState(),
                    'languageStateRate': languageState
                })
Example #10
0
 def setUp(self):
     self.settings = {
         "SERVER": "http://localhost:5984",
         "DATABASE": "test",
         "USERNAME": None,
         "PASSWORD": None,
     }
     try:
         self.settings = couchdb2.read_settings("test_settings.json",
                                                self.settings)
     except IOError:
         pass
     self.server = couchdb2.Server(username=self.settings["USERNAME"],
                                   password=self.settings["PASSWORD"])
Example #11
0
def pong(request):
    if request.method == "GET":
        server1 = couchdb2.Server(address)
        db = server1['tweets']
        list = []
        result = db.view('/abc',
                         'testView2',
                         group=True,
                         group_level=2,
                         reduce=True)
        sum = 0
        for row in result:
            item = {'location': row.key, 'count': row.value}
            sum += row.value
            list.append(item)

        return JsonResponse({"message": list})
Example #12
0
def dayAndTime(request):
    if request.method == 'GET':
        day = []
        time = []
        try:
            server1 = couchdb2.Server(address)
            db = server1['tweets']
            result = db.view('/abc',
                             'day',
                             group=True,
                             group_level=1,
                             reduce=True)

            for row in result:
                item = {'day': row.key, 'frequency': row.value}
                day.append(item)

            result = db.view('/abc',
                             'time',
                             group=True,
                             group_level=1,
                             reduce=True)

            for row in result:
                item = {'time': row.key, 'frequency': row.value}
                time.append(item)
            cache1 = open('backend/cache/day.json', 'w')
            json.dump(day, cache1)
            cache1.close()

            cache2 = open('backend/cache/time.json', 'w')
            json.dump(time, cache2)
            cache2.close()
        except BaseException:
            print("error in connecting to database")
            cache1 = open('backend/cache/day.json', 'r')
            day = json.load(cache1)
            cache1.close()

            cache2 = open('backend/cache/time.json', 'r')
            time = json.load(cache2)
            cache2.close()
        finally:
            return render(request, 'daytime.html', {'day': day, 'time': time})
import couchdb2

server = couchdb2.Server(href='http://127.0.0.1:5985/',
                         username='******',
                         password='******',
                         use_session=True,
                         ca_file=None)

db = server.create('test')

doc1 = {'_id': 'myid', 'name': 'mydoc', 'level': 4}
db.put(doc1)
doc = db['myid']
assert doc == doc1

doc2 = {'name': 'another', 'level': 0}
db.put(doc2)
print(doc2)

db.put_design(
    'mydesign',
    {"views": {
        "name": {
            "map": "function (doc) {emit(doc.name, null);}"
        }
    }})
result = db.view('mydesign', 'name', key='another', include_docs=True)
assert len(result) == 1
print(result[0].doc)
volumen()
Example #14
0
 def test_00_no_such_server(self):
     "Check the error when trying to use a non-existent server."
     with self.assertRaises(IOError):
         couchdb2.Server("http://localhost:123456/").version
Example #15
0
from flask import Flask, jsonify
from flask_restful import Api, Resource, reqparse, abort, fields, marshal_with
from flask_sqlalchemy import SQLAlchemy
import couchdb2, json, config
import pandas as pd
from datetime import datetime
from multiprocessing.pool import ThreadPool
        
app = Flask(__name__)
api = Api(app)
server = couchdb2.Server("http://%s:%s@%s:%s" % (config.db_user, config.db_pass, config.db_host, config.db_port))
if server.up(): # if server is up and ready
    x, y = 'CouchDB ('+str(server.version)+') up and running with ('+str(len(server))+') user defined databases. Databases include:', ''
    for dbname in server:
        y = y + ' ' + str(dbname)
    x = x + y
else:
    x = 'CouchDB not reachable'
print('status:', x)

# Check the couchdb server atatus if up and running.
class Home(Resource): 
    def get(self):
        return jsonify({"message": "CyVID API Running"})
        
# Check the couchdb server atatus if up and running.
class CyVID(Resource): 
    def get(self):
        return jsonify({"message": x})

class Authenticate(Resource):
                        default='inkdrop',
                        help='CouchDB2 database to use, default: inkdrop')

    args = parser.parse_args()

    if not args.quiver:
        print('Need a Quiver library to import from!')
        sys.exit(1)

    if not os.path.isdir(args.quiver):
        print('%s is not a directory to import from!' % args.quiver)
        sys.exit(1)

    if args.user:
        server = couchdb2.Server(href=args.server,
                                 username=args.user,
                                 password=args.password,
                                 use_session=True)
    else:
        server = couchdb2.Server(href=args.server, use_session=True)

    # make things for which we don't have a timestamp "created" 3y ago and updated today
    now_ts = datetime.datetime.now().timestamp()
    default_ts = now_ts - 94608000

    db = couchdb2.Database(server, args.database, check=True)

    # read data from Quiver
    tags = []
    ctags = get_couch_tags(db)
    cbooks = get_couch_books(db)