Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
raise ValueError('Aggregator name needs to be defined.')
if not agg_params:
raise ValueError('Aggregator parameters have to be defined.')
if view_id:
view = View.query.get(view_id)
else:
view = None
agg_json = json.dumps(agg_params)
aggregation = Aggregation.get_or_create(
name=name, description=description, agg_type=agg_name,
parameters=agg_json, chart_type=chart_type, user=None,
sketch=self.sql_sketch, view=view)
db_session.add(aggregation)
db_session.commit()
return aggregation
chart_type = form.chart_type.data
view_id = form.view_id.data
# Create the aggregation in the database
aggregation = Aggregation(
name=name,
description=description,
agg_type=agg_type,
parameters=parameters,
chart_type=chart_type,
user=current_user,
sketch=sketch,
view=view_id
)
db_session.add(aggregation)
db_session.commit()
return aggregation
# Grant the user read permission on the mapping object and set status.
# If user is None the timeline becomes visible to all users.
search_index.grant_permission(user=user, permission='read')
# In case we have a user grant additional permissions.
if user:
search_index.grant_permission(user=user, permission='write')
search_index.grant_permission(user=user, permission='delete')
# Let the Timesketch UI know that the timeline is processing.
search_index.set_status('processing')
# Save the mapping object to the Timesketch database.
timesketch_db_session.add(search_index)
timesketch_db_session.commit()
logger.debug('Adding events to Timesketch.')
if not isinstance(index_name, six.text_type):
index_name = codecs.decode(index_name, 'utf-8')
# Create the search index in the Timesketch database
searchindex = SearchIndex.get_or_create(
name=timeline_name,
description=timeline_name,
user=current_user,
index_name=index_name)
searchindex.grant_permission(permission='read', user=current_user)
searchindex.grant_permission(permission='write', user=current_user)
searchindex.grant_permission(
permission='delete', user=current_user)
searchindex.set_status('processing')
db_session.add(searchindex)
db_session.commit()
timeline = None
if sketch and sketch.has_permission(current_user, 'write'):
timeline = Timeline(
name=searchindex.name,
description=searchindex.description,
sketch=sketch,
user=current_user,
searchindex=searchindex)
sketch.timelines.append(timeline)
db_session.add(timeline)
db_session.commit()
# Return Timeline if it was created.
# pylint: disable=no-else-return
if timeline:
def run(self, username, password):
"""Creates the user."""
if not password:
password = self.get_password_from_prompt()
user = User(username=username, name=username)
user.set_password(plaintext=password)
try:
db_session.add(user)
db_session.commit()
sys.stdout.write('User {0:s} created\n'.format(username))
except IntegrityError:
sys.stderr.write(
'The username ({0:s}) is already taken, '
'try another one.\n'.format(username))
sketch = Sketch.query.get_with_acl(sketch_id)
sketch_timeline = Timeline.query.filter(Timeline.id == timeline_id,
Timeline.sketch == sketch).first()
graphs_enabled = current_app.config['GRAPH_BACKEND_ENABLED']
if not sketch_timeline:
abort(HTTP_STATUS_CODE_NOT_FOUND)
if timeline_form.validate_on_submit():
if not sketch.has_permission(current_user, 'write'):
abort(HTTP_STATUS_CODE_FORBIDDEN)
sketch_timeline.name = timeline_form.name.data
sketch_timeline.description = timeline_form.description.data
sketch_timeline.color = timeline_form.color.data
db_session.add(sketch_timeline)
db_session.commit()
return redirect(
url_for(
'sketch_views.timeline',
sketch_id=sketch.id,
timeline_id=sketch_timeline.id))
return render_template(
'sketch/timeline.html',
sketch=sketch,
timeline=sketch_timeline,
timeline_form=timeline_form,
graphs_enabled=graphs_enabled)
timelines = Timeline.query.filter_by(searchindex=searchindex).all()
# Set status
searchindex.set_status(status)
for timeline in timelines:
timeline.set_status(status)
db_session.add(timeline)
# Update description if there was a failure in ingestion
if error_msg and status == 'fail':
# TODO: Don't overload the description field.
searchindex.description = error_msg
# Commit changes to database
db_session.add(searchindex)
db_session.commit()