Ejemplo n.º 1
0
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'    
Ejemplo n.º 2
0
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 
Ejemplo n.º 3
0
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])    
Ejemplo n.º 4
0
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())
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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')
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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')
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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 
Ejemplo n.º 11
0
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])
Ejemplo n.º 12
0
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 
Ejemplo n.º 13
0
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(' ','_'))
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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'] 
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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})
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
    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
Ejemplo n.º 20
0
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
Ejemplo n.º 21
0
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
Ejemplo n.º 22
0
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
Ejemplo n.º 23
0
 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)
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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)
Ejemplo n.º 26
0
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
Ejemplo n.º 27
0
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])
Ejemplo n.º 28
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())
Ejemplo n.º 29
0
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
Ejemplo n.º 30
0
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)
Ejemplo n.º 31
0
 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')