def update(): """Normalize the form POST and setup the json view config object.""" if not auth(authtype='update'): flash('You do not have access to update dashboards.', 'error') return redirect(url_for('jsondash.dashboard')) form_data = request.form c_id = form_data['id'] view_url = url_for('jsondash.view', id=c_id) edit_raw = 'edit-raw' in request.form if edit_raw: try: data = json.loads(form_data.get('config')) data = adapter.reformat_data(data, c_id) except (TypeError, ValueError): flash('Invalid JSON config.', 'error') return redirect(view_url) else: data = dict( name=form_data['name'], modules=adapter._format_modules(form_data), date=dt.now(), id=c_id, ) # Update metadata, but exclude some fields that should never # be overwritten by user, once the view has been created. data.update(**metadata(exclude=['created_by'])) # Possibly override global user, if configured and valid. data.update(**check_global()) # Update db if edit_raw: adapter.update(c_id, data=data, fmt_modules=False) else: adapter.update(c_id, data=data) flash('Updated view "{}"'.format(c_id)) return redirect(view_url)
def update(): """Normalize the form POST and setup the json view config object.""" if auth_enabled(authtype='update'): if not auth_check('update'): flash('You do not have access to update dashboards.', 'error') return redirect(url_for('jsondash.dashboard')) data = request.form c_id = data['id'] view_url = url_for('jsondash.view', id=c_id) if 'edit-raw' in request.form: try: data = json.loads(request.form.get('config')) data = adapter.reformat_data(data, c_id) data.update(**metadata()) # Update db adapter.update(c_id, data=data, fmt_modules=False) except (TypeError, ValueError): flash('Invalid JSON config.', 'error') return redirect(view_url) else: # Update db d = dict( name=data['name'], modules=adapter._format_modules(data), date=dt.now(), id=data['id'], ) d.update(**metadata()) adapter.update(c_id, data=d) flash('Updated view "{}"'.format(c_id)) return redirect(view_url)
def make_fake_dashboard(name='Random chart', max_charts=10): """Generate fake dashboard data with a specific number of random charts.""" charts = ImmutableMultiDict( [make_fake_chart_data() for _ in range(max_charts)]) return dict( name=name, date=dt.now(), modules=db_adapters._format_modules(charts), id=str(uuid1()), )
def create(): """Normalize the form POST and setup the json view config object.""" if auth_enabled(authtype='create'): if not auth_check('create'): flash('You do not have access to create dashboards.', 'error') return redirect(url_for('jsondash.dashboard')) data = request.form d = dict( name=data['name'], modules=adapter._format_modules(data), date=dt.now(), id=str(uuid.uuid1()), ) d.update(**metadata()) # Add to DB adapter.create(data=d) flash('Created new view "{}"'.format(data['name'])) return redirect(url_for('jsondash.dashboard'))
def create(): """Normalize the form POST and setup the json view config object.""" if not auth(authtype='create'): flash('You do not have access to create dashboards.', 'error') return redirect(url_for('jsondash.dashboard')) data = request.form new_id = str(uuid.uuid1()) d = dict( name=data['name'], modules=adapter._format_modules(data), date=dt.now(), id=new_id, ) d.update(**metadata()) # Possibly override global user, if configured and valid. d.update(**check_global()) # Add to DB adapter.create(data=d) flash('Created new view "{}"'.format(data['name'])) return redirect(url_for('jsondash.view', id=new_id))