Exemplo n.º 1
0
def company(request, duns):
    db = _db()

#    all_info = { entity : db[entity].find_one({'DUNSNumber': duns}, {'_id':0}) for entity in ENTITIES }
    all_info = _db().companies.find_one({'_id' : duns})
    all_info['Addl'] = OrderedDict(sorted(all_info['Addl'].items()))
    all_info = OrderedDict(sorted(all_info.items()))


    c = { 'co_json' : json.dumps(all_info), 'co': all_info }
    c['rows_json'] = json.dumps([all_info])
    c['canonical_url'] = request.build_absolute_uri()
    c['co_flags'] = [ {'value': f, 'name': convert_case(f)} for f in all_info['Flags']]
    return render(request, 'web/company.html', c)
Exemplo n.º 2
0
def user_company(request, duns):
    db = _db()
    cos = db.user_companies
    with_details = request.GET.get('with') == 'details'

    def append_detail(co):
        if not with_details:
            return co
        deets = db.companies.find_one({'DUNS' : co['DUNS']})
        return dict(co.items() + deets.items())

    user_id = 1
    spec = { 'user_id' : user_id, 'DUNS' : duns }
    proj = { '_id' : 0 }

    if duns == '' and request.method == 'GET':
        return [append_detail(co) for co in cos.find({ 'user_id': user_id }, proj) if co['active']]

    co = cos.find_one(spec, proj)

    if request.method=='POST':
        doc = json.loads(request.raw_post_data)
        if co:
            cos.update(spec, { '$set' : doc })
        else:
            doc = dict(spec.items() + doc.items())
#            spec['active'] = True
            cos.insert(doc)
    elif request.method=='GET':
        pass
    return cos.find_one(spec, proj)
Exemplo n.º 3
0
def search(request):

    MAX_PER_PAGE = 500
#    SEARCH_LIMIT = 1000
    q = request.GET.get('q', '')
    opts = request.GET.getlist('opts')
    page_num = request.GET.get('page', 1)
    try:
        page_num = int(page_num)
    except:
        page_num = 1
    start_offset = (page_num-1) * MAX_PER_PAGE


    db = _db()
    prefs = get_user_prefs(db)

    rows = []
    c = { 'rows' : [], 'totalRows' : 0 }

    proj = {
        '_id' : 0,
        'Addl' : 0,
        'Linkage' : 0,
    }
    fil = {}

    flag_alls = [opt for opt in opts if opt != 'full']
    if len(flag_alls):
        fil['Flags'] = { '$in' : flag_alls }
#        fil['$or'] = [
#            { 'Flags' : { '$in' : [flag] } } for flag in flag_alls
#        ]
#        fil['Flags'] = { '$all' : flag_alls }

    if 'full' not in opts and len(prefs['SICs']):
        sics = prefs['SICs']
        fil['$or'] = [
            { 'Industry.SICs.Code' : re.compile('^' + trim_trailing_zeros(code)) } for code in sics
        ]

    if len(q):
        rows = db.command("text", "companies", search=q, filter=fil, project=proj)
        c['totalRows'] = rows['stats']['nfound']
        rows['results'] = rows['results'][start_offset:start_offset+MAX_PER_PAGE]
        c['rows'] = [dict(r['obj'].items() + {'_score' : r['score']}.items()) for r in rows['results']]
    else:
        rows = db.companies.find(fil, proj).sort('AnnualSalesUSD', -1)
        c['totalRows'] = rows.count()
        rows = rows[start_offset:start_offset+MAX_PER_PAGE]
        c['rows'] = [r for r in rows]

    user_duns = [e['DUNS'] for e in prefs['companies']]
    print [e for  e in prefs['companies']]
Exemplo n.º 4
0
def settings(request):
    db = _db()
    if request.method == 'POST':
        sic = request.POST.getlist('sic')
        db.settings.update({'_id' : 1}, {'SICs' : sic, '_id' : 1}, True)
        print sic
    sics = [r for r in db.sic.find({}, {'_id':0}).sort('code')]
    c = {
        'settings' : db.settings.find_one({'_id' : 1}),
        'sics' : sics
    }
    return render(request, 'web/settings.html', c)
Exemplo n.º 5
0
def mongo_q(request, dataset):
    coll = _db()[dataset]
    s = 'TODO'

    return s