Пример #1
0
def load_redis_engine():
    redis_url = urlparse.urlparse(settings.REDISTOGO_URL)
    if redis_url.scheme == "redis":
        engine = RedisEngine(host=redis_url.hostname,
                             port=redis_url.port,
                             password=redis_url.password)
        try:
            info = engine.client.info()
            if "db0" in info:
                nb_keys = info["db0"]["keys"]
            else:
                nb_keys = 0
            print "Conn. Redis server, %s keys stored." % nb_keys
            return engine
        except ConnectionError:
            if settings.DEBUG:
                raise ConnectionError("Redis Server is not reachable.")
            else:
                return None
    else:
        if settings.DEBUG:
            raise RedisError("Redis Server '%s' URL is not valid." %
                             settings.REDISTOGO_URL)
        else:
            return None
Пример #2
0
def loadumls():
    engine = RedisEngine(prefix='umls')
    data = pd.read_csv("../umls/[email protected]")
    df = pd.DataFrame(data)
    df_dictarr = df.to_dict('records')
    for item in df_dictarr:
        # print item['value']
        # id, search phrase, data
        engine.store_json(item['value'], item['label'], {
            'label': item['label'],
            'value': item['value']
        })
Пример #3
0
import os
import json
import bson
import pymongo
from pymongo import Connection
import urllib2
from redis_completion import RedisEngine
import urlparse
import redis

url = urlparse.urlparse(
    'redis://:[email protected]:6777')
r = redis.Redis(host=url.hostname, port=url.port, password=url.password)

engine = RedisEngine(host=url.hostname, port=url.port, password=url.password)

connection = Connection(
    'mongodb://*****:*****@alex.mongohq.com:10013/app8222672')
jobs_collection = connection.app8222672.jobs

jobs = []
for job in jobs_collection.find():
    a = job['title']
    a = a.lower()
    for word in a.split():
        jobs.append(word)

print jobs
map(engine.store, jobs)
#print engine.search(query.decode('cp1252'))
Пример #4
0
import urllib2
from redis_completion import RedisEngine
import urlparse
import redis

engine = RedisEngine()
titles = [
    'python programming', 'programming c', 'unit testing python',
    'testing software', 'software design'
]
map(engine.store, titles)

print engine.search('test')
Пример #5
0
from redis_completion import RedisEngine
import pandas as pd
import json
engine = RedisEngine(prefix='umls')


def loadumls():
    engine = RedisEngine(prefix='umls')
    data = pd.read_csv("../umls/[email protected]")
    df = pd.DataFrame(data)
    df_dictarr = df.to_dict('records')
    for item in df_dictarr:
        # print item['value']
        # id, search phrase, data
        engine.store_json(item['value'], item['label'], {
            'label': item['label'],
            'value': item['value']
        })


def search(p):
    return engine.search_json(p)
Пример #6
0
 def get_engine(self):
     return RedisEngine(prefix='testac', db=15)
Пример #7
0
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []

# If false, no module index is generated.
#texinfo_domain_indices = True

# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'

########NEW FILE########
__FILENAME__ = stocks
import urllib2
from redis_completion import RedisEngine

engine = RedisEngine(prefix='stocks')


def load_data():
    url = 'http://media.charlesleifer.com/downloads/misc/NYSE.txt'
    contents = urllib2.urlopen(url).read()
    for row in contents.splitlines()[1:]:
        ticker, company = row.split('\t')
        engine.store_json(ticker, company, {
            'ticker': ticker,
            'company': company
        })  # id, search phrase, data


def search(p, **kwargs):
    return engine.search_json(p, **kwargs)
Пример #8
0
def create_app(env='debug'):
    """ TODO:
    if config is None:
        config = os.path.join(app.root_path, 'production.cfg')

    app.config.from_pyfile(config)
    """
    app = Flask(__name__)
    app.config.from_object(__name__)

    app.config.update(SECRET_KEY=os.urandom(20))
    if (env == 'debug'):
        app.debug = True
    if (env == 'prod'):
        app.debug = False

    if app.debug:
        from flaskext.lesscss import lesscss
        lesscss(app)
    app.static_path = '/static'

    # connect to the database
    connection = Connection(
        'mongodb://*****:*****@alex.mongohq.com:10013/app8222672')
    jobs_collection = connection.app8222672.jobs
    users_collection = connection.app8222672.users
    url = urlparse.urlparse(
        'redis://:[email protected]:6777')
    autocomplete_engine = RedisEngine(host=url.hostname,
                                      port=url.port,
                                      password=url.password)

    @app.route('/index/')
    @app.route('/home/')
    @app.route('/')
    def home():
        return render_template('home.html')

    @app.route('/settings/')
    def settings():
        return render_template('settings.html')

    @app.route('/list')
    def list():
        jobs = []
        for job in jobs_collection.find():
            job['id'] = str(job['_id'])
            jobs.append(job)
        return render_template('list.html', jobs=jobs)

    @app.route('/delete/<jobid>')
    def delete(jobid):
        response = jobs_collection.remove({'_id': bson.ObjectId(jobid)})
        if (response == None):
            flash('Job erased')
        else:
            flash('Error occured')
        return redirect(url_for('list'))

    @app.route('/jobs/<jobid>')
    def inside(jobid):
        found_job = jobs_collection.find_one(
            {'_id': bson.ObjectId(oid=str(jobid))})
        found_job['id'] = str(found_job['_id'])
        found_job['objectid'] = str(found_job['_id'])
        found_job['_id'] = str(found_job['_id'])
        return render_template('inside.html', job=found_job)

    @app.route('/edit/<jobid>')
    def edit(jobid):
        return render_template('add.html', job=jobid)

    @app.errorhandler(404)
    def page_not_found(e):
        return render_template('404.html'), 404

    # ==================== REGISTRATION ==================

    @app.route('/logout')
    def logout():
        # remove the username from the session if it's there
        session.pop('logged_in', None)
        return redirect(url_for('home'))

    @app.route('/registration')
    def registration():
        return render_template('registration.html')

    def get_user_id(email):
        return users_collection.find_one({'email': email})

    @app.route('/login', methods=['GET', 'POST'])
    @app.route('/register', methods=['GET', 'POST'])
    def register():
        """Registers the user."""
        error = None
        if request.method == 'POST':
            logged_user = get_user_id(request.form['email'])
            if (logged_user):
                if (request.form['password'] == logged_user['password']):
                    flash('Logged in as ' + logged_user['email'])
                    session['logged_in'] = logged_user['email']
                    return redirect(url_for('home', session=session))
                else:
                    flash('Wrong password!')
                    return redirect(url_for('register'))
            if not request.form['email'] or \
                     '@' not in request.form['email']:
                error = 'You have to enter a valid email address'
            elif not request.form['password']:
                error = 'You have to enter a password'
            elif get_user_id(request.form['email']) is not None:
                error = 'The username is already taken'
            else:
                new_user_id = users_collection.save({
                    'email':
                    request.form['email'],
                    'password':
                    request.form['password'],
                    'status':
                    'awaiting confirm'
                })
                payload = {
                    'from':
                    'Excited User <*****@*****.**>',
                    'to':
                    request.form['email'],
                    'subject':
                    'Quick Hunt account confirmation',
                    'text':
                    'http://quickhunt.herokuapp.com/activate_user/' +
                    str(new_user_id)
                }
                r = requests.post(
                    "https://api.mailgun.net/v2/app8222672.mailgun.org/messages",
                    auth=HTTPBasicAuth('api',
                                       'key-9m9vuzkafbyjqhm9ieq71n0lu9dgf9b9'),
                    data=payload)
                flash(
                    'You were successfully registered. Confirm registration and login.'
                )
                session['logged_in'] = request.form['email']
                flash('logged in successfuly')
                return redirect(url_for('home'))
        #flash('no luck ((' + request.method + error)
        flash('error:' + str(error))
        return render_template('login.html', error=error)

    @app.route('/activate_user/<user_id>')
    def activate_user(user_id):
        """
        Activate user function.
        """
        found_user = users_collection.find_one(
            {'_id': bson.ObjectId(oid=str(user_id))})
        if not found_user:
            return abort(404)
        else:
            if found_user['status'] == 'awaiting_confirm':
                ### Setting the user status active here ###*
                confirm_mail = {
                    'from': 'Quick Hunt <*****@*****.**>',
                    'to': found_user['email'],
                    'subject': 'Quick Hunt account confirmation',
                    'text': 'Subscription confirmed.'
                }
                r = requests.post(
                    "https://api.mailgun.net/v2/app8222672.mailgun.org/messages",
                    auth=HTTPBasicAuth('api',
                                       'key-9m9vuzkafbyjqhm9ieq71n0lu9dgf9b9'),
                    data=confirm_mail)
                flash('user has been activated', 'info')
            elif found_user['status'] == 'active':
                flash('user already activated', 'info')
            return redirect(url_for('content'))

    """ This is the API part of the equation """
    """
    @app.errorhandler(404)
    def not_found(error=None):
        message = {
                'status': 404,
                'message': 'Not Found: ' + request.url,
        }
        resp = jsonify(message)
        resp.status_code = 404

        return resp
    """

    @app.route('/api/search/', methods=['GET'])
    @app.route('/api/search/<query>', methods=['GET'])
    def search(query=None):
        jobs = []
        for job in jobs_collection.find():
            job['_id'] = str(job['_id'])
            jobs.append(job)
        return jsonify({'result': jobs})

    @app.route('/api/jobs/<jobid>', methods=['GET'])
    def get_job(jobid):
        found_job = jobs_collection.find_one(
            {'_id': bson.ObjectId(oid=str(jobid))})
        found_job['id'] = str(found_job['_id'])
        found_job['objectid'] = str(found_job['_id'])
        found_job['_id'] = str(found_job['_id'])
        #if userid in users:
        return jsonify(found_job)
        #else:
        #    return not_found()
        #return undef

    @app.route('/api/jobs/new', methods=['POST'])
    def create_job():
        js = json.dumps(request.data)
        json_data = json.loads(request.data)
        jobs_collection.save(json_data)
        resp = Response(js, status=200, mimetype='application/json')
        return resp

    @app.route('/api/jobs/<jobid>', methods=['PUT'])
    def update_job(jobid):
        js = json.dumps(request.data)
        print 'js:' + str(js)
        json_data = json.loads(request.data)
        json_data['_id'] = bson.ObjectId(json_data['objectid'])
        jobs_collection.save(json_data)
        resp = Response(js, status=200, mimetype='application/json')
        return resp

    @app.route('/api/jobs/<jobid>', methods=['DELETE'])
    def delete_job(jobid):
        response = jobs_collection.remove({'_id': bson.ObjectId(jobid)})
        if (response == None):
            return jsonify({success: 'Success'})
        else:
            return jsonify({error: 'Error'})

    @app.route('/api/autocomplete/', methods=['GET'])
    def autocomplete():
        js = {}
        searchword = request.args.get('q', '')
        if searchword:
            js = json.dumps({'result': autocomplete_engine.search(searchword)})
        else:
            js = {'error': 'invalid argument'}
        return Response(js, status=200, mimetype='application/json')

    @app.route('/api/favorites/add/<jobid>',
               methods=['GET'])  # FIX IT (i mean get)
    def add_to_favorites(jobid):
        me = users_collection.find_one({'email': session['logged_in']})
        if 'favorites' in me:
            me['favorites'].append(jobid)
        else:
            me['favorites'] = [jobid]
        js = users_collection.save(me)
        print js
        resp = Response({'reply': js}, status=200, mimetype='application/json')
        return resp

    @app.route('/api/favorites/delete/<jobid>',
               methods=['DELETE'])  # FIX IT (i mean get)
    def remove_from_favorites(jobid):
        me = users_collection.find_one({'email': session['logged_in']})
        if 'favorites' in me:
            favorites = me['favorites']
            favoretes.remove(jobid)
            me['favorites'] = favorites
        js = users_collection.save(me)
        print js
        resp = Response({'reply': js}, status=200, mimetype='application/json')
        return resp

    return app