def test_project_update(): project = Project() project.find('test project update') project.project.description = 'project updated' project.save() db = MongoModel(project='internal',collection='project') temp = db.query({'name':'test project update'}) assert temp['description'] == 'project updated'
def test_project_stats(): project = Project() project.find('test project db') entry_id = project.find_entry('test entries') print entry_id print project.project.entry databases = project.get_stats() for database in databases: assert database == entry_id
def setup_project(): data = ( ('project 1','project content 1'), ('project 2','project content 2'), ('project 3','project content 3') ) for d in data: project = Project() project.create(d[0],d[1])
def setup_user_project(): # now create user user = User() user.create('test_user_update_project','test_pass','*****@*****.**') # create project project = Project() project.create('project update','project update content') # associate project user.add_project(project.get_id())
def test_get_all(): project = Project() project.find('scraped') entry_id = project.find_entry('entry') client = webapp.app.test_client() response = client.get('/api/db/%s/%s/' % (project.project.id,entry_id)) result = json.loads(response.data) assert result[0]['a'] == 1
def teardown_project_delete(): user = User() user.login('test_user_delete_api_project','test_pass') project = Project() model = MongoModel(project=user.project,collection=user.collection) model.delete({'_id':ObjectId(user.user.id)}) project.find('project 1') model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'name':'project 1'}) model.conn.drop_database('project_1')
def test_project_view(): test_client = webapp.app.test_client() result = test_client.get('/') project = Project() project.find('project view') assert project.project.id in result.data result = test_client.get('/project/%s/'% project.project.id) assert 'project view' in result.data assert 'data' in result.data
def teardown_test_load_data(): project = Project() project.find('test load data') fs = gridfs.GridFS(project.get_db()) for entry in project.project.input_file: for file_id in project.project.input_file[entry]: fs.delete(ObjectId(file_id)) db = MongoModel(project='internal',collection='project') db.delete({'name':'test load data'}) db.conn.drop_database('test_load_data')
def export_single(project_id, entry_id, export_type): project = Project() project.get(project_id) exporter_list = {"json": JSONExporter, "csv": FlatCSVExporter} if export_type == "json": exporter = JSONExporter(project) elif export_type == "csv": exporter = FlatCSVExporter(project) else: raise "bad exporter" exporter.export(entry_id)
def get_data_upload(project_id,entry_id,file_id): # this will allow download of the file. project = Project() project.get(project_id) metadata = project.get_datafile_metadata(entry_id,file_id) response = make_response(project.get_datafile(file_id).read()) response.headers['Content-Description'] = 'Uploaded File' response.headers['Content-Type'] = 'application/%s' % metadata['filename'].split('.')[-1] response.headers['Content-Length'] = metadata['size'] response.headers['Content-Disposition'] = 'attachment; filename=%s' % metadata['filename'] return response
def delete_data_upload(project_id,entry_id,file_id): project = Project() project.get(project_id) try: project.delete_datafile(entry_id,file_id) status = {'status':'Success','message':'completed'} except: status = {'status':'Failed','message':'error deleting file'} return jsonify([status])
def download_export(project_id,entry_id,export_type): project = Project() project.get(project_id) metadata = project.get_exported_file(entry_id,export_type) file_ = project.get_datafile(str(metadata['file_id'])) response = make_response(file_.read()) response.headers['Content-Description'] = 'Uploaded File' response.headers['Content-Type'] = 'application/%s' % file_.content_type response.headers['Content-Length'] = file_.length response.headers['Content-Disposition'] = 'attachment; filename=%s' % file_.filename return response
def teardown_project(): data = ( ('project 1','project content 1'), ('project 2','project content 2'), ('project 3','project content 3') ) for d in data: project = Project() project.find(d[0]) model = MongoModel(project=project.project_,collection=project.collection_) model.delete({'_id':ObjectId(str(project.project.id))}) model.conn.drop_database(d[0].replace(' ','_'))
def add_entry(project_id): form = EntryForm(csrf_enabled=False) if form.validate_on_submit(): project = Project() project.get(project_id) name = form.name.data description = form.description.data short_name = form.description.data source = form.description.data project.add_entry(name,description,source) return redirect('/project/%s' % project_id) return render_template('entry_create.html',form=form)
def test_project_entries(): project = Project() project.find('test project entries') # add_entries now should have a description and name file # there should be a short name field, for field name # We should have a source entry_id = project.add_entry('test entries','test data','test_entries','test_entries') db = MongoModel(project='internal',collection='project') temp = db.query({'name':'test project entries'}) assert entry_id in temp['stats']
def project_create(): form = ProjectForm(csrf_enabled=False) print "processing form" if form.validate_on_submit(): print 'form submitted' project = Project() project.create(form.name.data,form.description.data) user = current_user user.add_project(str(project.project.id)) return redirect('/project/%s/'% project.project.id) return render_template('project_create.html',form=form)
def test_project_create(): project = Project() test_project_name = 'test project db' test_project_desc = 'test_project_desc' project.create(test_project_name,test_project_desc) assert project.project.name == test_project_name assert project.project.description == test_project_desc assert project.project.entries == [] db = MongoModel(project='internal',collection='project') test_data = db.query({'name':test_project_name}) assert test_data['name'] == test_project_name assert test_data['description'] == test_project_desc db.delete({'name':test_project_name})
def test_get(): mongo = MongoModel(project='scraped',collection='entry') client = webapp.app.test_client() data = mongo.all() id = str(data[0]['_id']) project = Project() project.find('scraped') entry_id = project.find_entry('entry') response = client.get('/api/db/%s/%s/%s/' % (project.project.id,entry_id,id)) result = json.loads(response.data) assert result['a'] == 1
def get(self, project_id, entry, entry_id): project = Project() project.get(project_id) model = project.get_entry_collection(entry) if entry_id: id = objectid.ObjectId(str(entry_id)) result = model.query({"_id": id}) else: result = model.all() data = json.dumps(result, default=bson.json_util.default) resp = Response(data, status=200, mimetype="application/json") resp.headers["Link"] = "http://localhost:5000" return resp
def test_project_file_download(): content = "a,b,c\n1,2,3\n4,5,6" project = Project() project.find('test project download') data = project.project.input_file entry_id = project.find_entry('test entries') files = data[entry_id] valid_flag = False for file_id in files: test_file = project.get_datafile(file_id) test_data = test_file.read() if test_data == content: valid_flag = True assert valid_flag
def test_project_update(): test_client = webapp.app.test_client() result = test_client.post('/login/',data={ 'username':'******', 'password':'******' },follow_redirects=True) project = Project() project.find('project update') project_ui = test_client.post('/project/%s/' % project.project.id,data={ 'description':'project updated', },follow_redirects=True) print project_ui.data assert 'project updated' in project_ui.data assert 'data' in project_ui.data
def test_user_project_join(): user = User() user.login('test_user_list','test_pass') api_key = user.user.auth_token test_client = webapp.app.test_client() project = Project() project.find('project list 3') url = '/api/project/%s/?api_key=%s' % (project.project.id,api_key) data = {'project':'project list 3','action':'join'} result = test_client.put(url,data=json.dumps(data),content_type='application/json') user.login('test_user_list','test_pass') print user.user.project assert str(project.get_id()) in user.user.project
def get(self, *args, **kwargs): if not self.user.admin: self.add_message(u'您没有访问该页面的权限, 请联系管理员') return self.render('failed.html') ps = Project.find(status__no=Project._status_del) users = User.find(status=User._status_ok) return self.render('manager.html', ps=ps, users=users)
def project_entry_create(project_id): form = EntryForm(csrf_enabled=False) edit = False project = Project() project.get(project_id) permission = EditProjectPermission(project_id) if not permission.can(): abort(403) if form.validate_on_submit(): name = form.name.data description = form.description.data source = form.source.data entry_id = project.add_entry(name,description,source) return redirect('/project/%s/' % (project_id)) return render_template('entry_create.html',form=form)
def project_view(project_id): form = ProjectUpdateForm(csrf_enabled=False) project = Project() print project_id project.get(project_id) permission = EditProjectPermission(project_id) edit = False if request.method == 'POST': edit = True if not permission.can(): abort(403) if form.validate_on_submit(): # name is not edited because it bind to the database name project.project.description = form.description.data project.save() return render_template('project_view.html',project=project,form=form,edit=edit,permission=permission)
def test_project_get(): # this do not require user auth data = ( ('project 1','project content 1'), ('project 2','project content 2'), ('project 3','project content 3') ) test_client = webapp.app.test_client() for d in data: project = Project() project.find(d[0]) url = '/api/project/%s/' % (project.project.id) result = test_client.get(url) assert d[0] in result.data assert d[1] in result.data
def test_insert(): user = User() user.login('test_user','test_pass') api_key = user.user.auth_token client = webapp.app.test_client() data = {'a':1} project = Project() project.find('scraped') entry_id = project.find_entry('entry') url = '/api/db/%s/%s/?api_key=%s' % (project.project.id,entry_id,api_key) response = client.post(url,data=json.dumps(data), content_type='application/json') status = json.loads(response.data) assert status['status'] mongo = MongoModel(project='scraped',collection='entry') check = mongo.all() assert check[0]['a'] == 1 mongo.delete(check[0])
def setup_user(): user = User() user.create('test_user','test_pass','*****@*****.**') project = Project() project.create('scraped','scraped') project.add_entry('entry','entry','localhost') user.add_project(project.get_id())
def test_update(): user = User() user.login('test_user_api_update','test_pass') api_key = user.user.auth_token project = Project() project.find('test api update') entry_id = project.find_entry('test api entry') print user.get_project() print project.get_id() mongo = MongoModel(project='test_api_update',collection='test_api_entry') data = mongo.query({'a':1}) print data id = str(data['_id']) updated = {'a':2} url = '/api/db/%s/%s/%s/?api_key=%s' % (project.project.id,entry_id,id,api_key) client = webapp.app.test_client() response = client.put(url, data = json.dumps(updated), content_type='application/json') print response.data status = json.loads(response.data) assert status['status'] updated_data = mongo.query({'_id':objectid.ObjectId(id)}) assert updated_data['a'] == 2
def setup_test_load_data(): project = Project() project.create('test load data',' list entries') content = "a,b,c\n1,2,3\n4,5,6" f = MockFile('test_data.csv',content) entry_id = project.add_entry('test entries','test entries','test_entries','testdata') project.add_datafile(entry_id,f)
def post(self, *args, **kwargs): if not self.user.admin: raise HTTPError(404) m = kwargs.get('m') if m == 'project': data = self.post_data() Project.new( name=data['name'], note=data['note'], status=int(data['status']), ) elif m == 'auth': data = self.post_data() pid, pname = data['project'].split('-') uid, uname = data['user'].split('-') Auth.new( project_id=int(pid), project_name=pname, user_id=int(uid), user_name=uname, ) return self.redirect('/manager')