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)
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)
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']]
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)
def mongo_q(request, dataset): coll = _db()[dataset] s = 'TODO' return s