Skip to content
Snippets Groups Projects
Commit 49fcf76c authored by Tanner Prestegard's avatar Tanner Prestegard Committed by GraceDB
Browse files

Adding various bug fixes and using new utils

Using new create_versioned_file utility in create_log functions,
adding ability to provide queryset to get_superevent_by_date_id_or_404,
changing a few comments for autogenerated log messages
parent 12b7e532
No related branches found
No related tags found
No related merge requests found
......@@ -4,11 +4,10 @@ from .buildVOEvent import construct_voevent_file
from .models import Superevent, Log, Labelling, EMObservation, EMFootprint, \
VOEvent, Signoff
from .shortcuts import is_superevent
from .models import Superevent, Log, Labelling, EMObservation, EMFootprint
from events.models import Event, EventLog, Tag
from events.models import Event, EventLog, Tag, Label
from events.permission_utils import assign_default_perms
from events.shortcuts import is_event
from core.vfile import VersionedFile
from core.vfile import create_versioned_file
from alerts.superevent_utils import issue_alert_for_superevent_creation, \
issue_alert_for_superevent_log, \
issue_alert_for_superevent_label_creation, \
......@@ -160,10 +159,12 @@ def update_superevent(superevent, updater, issue_alert=True, **kwargs):
def create_log(issuer, comment, event_or_superevent, filename="",
data_file=None, tags=[], issue_alert=False, autogenerated=False):
data_file=None, tags=[], file_version=None, issue_alert=False,
autogenerated=False):
"""
Assume data have already been validated by a form or serializer.
tags should be a list of Tag objects (??)
data_file should be an in-memory file type
"""
# Initial dictionary for log creation
......@@ -172,6 +173,9 @@ def create_log(issuer, comment, event_or_superevent, filename="",
'comment': comment,
'filename': filename,
}
if file_version is not None:
log_dict['file_version'] = file_version
if is_superevent(event_or_superevent):
log_dict['superevent'] = event_or_superevent
LogModel = Log
......@@ -188,17 +192,14 @@ def create_log(issuer, comment, event_or_superevent, filename="",
# Create log object
log = LogModel.objects.create(**log_dict)
# Create data file
# Create versioned file
if data_file:
filepath = os.path.join(event_or_superevent.datadir, filename)
fdest = VersionedFile(filepath, 'w')
for chunk in data_file.chunks():
fdest.write(chunk)
fdest.close()
version = create_versioned_file(filename, event_or_superevent.datadir,
data_file)
# Update file_version
log.file_version = fdest.version
log.save()
log.file_version = version
log.save(update_fields=['file_version'])
# Add tags to log messages
for t in tags:
......@@ -231,7 +232,7 @@ def add_tag_to_log(log, tag, user, add_log_message=True, issue_alert=False):
# Create log message to record tag addition?
log_for_tag_addition = None
if add_log_message:
comment = 'Tagged message {N}: {tag_name}'.format(N=log.N,
comment = 'Tagged message {N}: {tag_name}.'.format(N=log.N,
tag_name=tag.name)
event_or_superevent = get_log_parent(log)
log_for_tag_addition = create_log(user, comment, event_or_superevent,
......@@ -249,8 +250,8 @@ def remove_tag_from_log(log, tag, user, add_log_message=True,
# Create log message to record tag removal?
log_for_tag_removal = None
if add_log_message:
comment = 'Removed tag {tag_name} from message {N}'.format(
N=log.N, tag_name=tag.name),
comment = 'Removed tag {tag_name} from message {N}.'.format(
N=log.N, tag_name=tag.name)
event_or_superevent = get_log_parent(log)
log_for_tag_removal = create_log(user, comment, event_or_superevent,
issue_alert=issue_alert, autogenerated=True)
......@@ -397,13 +398,14 @@ def get_or_create_tags(tag_name_list, display_name_list=[]):
# TODO: add permissions checking?
# TODO: move this somewhere else?
def get_superevent_by_date_id_or_404(request, superevent_id):
def get_superevent_by_date_id_or_404(request, superevent_id, queryset=None):
filter_kwargs = Superevent.get_filter_kwargs_for_date_id_lookup(
superevent_id)
# TODO: filter queryset for user here
queryset = Superevent.objects.all()
if queryset is None:
queryset = Superevent.objects.all()
return get_object_or_404(queryset, **filter_kwargs)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment