def fmt_elapsed_time(view, context, model, name): date_b = getattr(model, name) date_f = model.date_f if model.status_f == "InProgress": etime = str(dtparser(str(dtime.now())) - dtparser(str(date_f))) else: etime = str(dtparser(str(date_b)) - dtparser(str(date_f))) return Markup('<strong><i>{}</i></strong>'.format(etime))
class EvalsView(MyBaseView): column_list = [ 'id', 'uuid_f', 'client', 'corrid', 'date_f', 'date_b', 'status_f', 'score', 'files_count' ] column_sortable_list = [ 'id', 'uuid_f', 'client', 'corrid', 'date_f', 'date_b', 'status_f', 'score', 'files_count' ] column_details_list = [ 'id', 'client', 'uuid_f', 'corrid', 'date_f', 'date_b', 'score', 'status_f', 'files_count', 'files' ] column_exclude_list = [ '', ] column_export_list = [ 'id', 'client', 'uuid_f', 'corrid', 'date_f', 'date_b', 'score', 'status_f', 'files_count' ] column_export_exclude_list = ['files'] column_formatters_export = dict( score=fmt_render_score, client=lambda v, c, m, p: str(getattr(m, p)), date_f=lambda v, c, m, p: str(getattr(m, p)), date_b=lambda v, c, m, p: str( dtparser(str(m.date_b)) - dtparser(str(m.date_f)))) column_searchable_list = [] column_default_sort = ('date_f', True) column_filters = [ 'uuid_f', 'corrid', 'status_f', 'score', 'client', 'files_count' ] column_formatters = dict(score=macro('render_score'), client=fmt_eclient_details, uuid_f=fmt_eval_details, corrid=fmt_text_boldital, date_b=fmt_elapsed_time, status_f=fmt_text_bold, files_count=fmt_counts, files=macro('render_files_name')) column_labels = dict(id='Id', client_id='Client Id', client='[X.509] Common Name', uuid_f='Evaluation UUID', corrid='Correlation ID', status_f='Status', date_f='Submit Date', date_b='Elapsed Time', score='Is Malicious?', files_count='# of Files', files='List of Files')
def deserialize(d): '''Creates a block object from a dict/json. d: the dict/json containing index, hash, previousHash, timestamp, data, difficulty, nonce as keys Returns: A block object. ''' data = list() for da in d['data']: data.append(transaction.Transaction.deserialize(da)) return block(d['index'], d['hash'], d['previousHash'], dtparser(d['timestamp']), data, d['difficulty'], d['nonce'])
def parse_form_field(value: str, field_type: str): """Parse strings into type according to field_type provided.""" if field_type == 'decimal': return float(value) elif field_type == 'integer': return int(value) elif field_type in ('datetime', 'date'): return dtparser(value).astimezone(timezone.utc) elif field_type == 'geopoint': lat, lon, _, _ = value.split(' ') return {'lat': float(lat), 'lon': float(lon)} else: return value
def marshal_eval(sfile): r_eval = { "id": "", "correlationID": "", "date": "", "elapsedTime": "", "statusDate": "", "status": "InProgress", "malicious": False, "files": [], } # Evaluation r_eval["id"] = sfile["uuid_f"] r_eval["correlationID"] = sfile["corrid"] r_eval["date"] = sfile["date_f"] if sfile["score"] > 5: r_eval["malicious"] = True r_eval["statusDate"] = sfile["date_b"] r_eval["status"] = sfile["status_f"] if r_eval["status"] == "InProgress": eval_keys = ["malicious", "date_b"] for key in eval_keys: r_eval.pop(key, None) r_eval["elapsedTime"] = str(dtime.now() - dtparser(str(sfile.get("date_f")))) dtime_fmt = "%Y-%m-%d %H:%M:%S.%f" r_eval["statusDate"] = dtime.strptime( dtime.now().strftime(dtime_fmt)[:-3], dtime_fmt) elif r_eval["status"] == "Error": r_eval.pop("malicious", None) r_eval["elapsedTime"] = str( dtparser(str(sfile.get("date_b"))) - dtparser(str(sfile.get("date_f")))) else: r_eval["elapsedTime"] = str( dtparser(str(sfile.get("date_b"))) - dtparser(str(sfile.get("date_f")))) return r_eval
def parse_datetime_params(): """Transform into datetime objects used for filtering form responses.""" begin_datetime_str = request.args.get('beginDateTime', '2000-01-01') begin_datetime = dtparser(begin_datetime_str).replace(tzinfo=timezone.utc) end_datetime_str = request.args.get('endDateTime') if end_datetime_str is not None: end_datetime = dtparser(end_datetime_str) else: # 10 years. end_datetime = datetime.now() + timedelta(days=365 * 10) end_datetime = end_datetime.replace(tzinfo=timezone.utc) # strptime function includes hours, minutes, and seconds as 00 by default. # This check is done in case the begin and end datetime values are the same. if end_datetime == begin_datetime: end_datetime = end_datetime + timedelta(days=1) if begin_datetime > end_datetime: raise BadRequest('beginDateTime value must be lower than endDateTime') return begin_datetime, end_datetime
def fltr_elapsedTime(date_f, date_b=None): if date_b is None: date_b = dtime.now() return str(dtparser(str(date_b)) - dtparser(str(date_f)))