def ts_to_string(ts):
return datetime.strftime(ts, TIME_FORMAT)
# Generate a random password
python类strftime()的实例源码
def Log(self, eventType, dataList):
'''
Create an entry in the log file. Each entry will look like:
timestamp\tevent\tdata1\tdata2 <etc>\n
where:
timestamp = integer seconds since the UNIX epoch
event = string identifying the event
data1..n = individual data fields, as appropriate for each event type.
To avoid maintenance issues w/r/t enormous log files, the log filename
that's stored in the settings file is passed through datetime.strftime()
so we can expand any format codes found there against the current date/time
and create e.g. a monthly log file.
'''
now = int(time())
today = datetime.fromtimestamp(now)
# if there's no explicit log file path/name, we create one
# that's the current year & month.
fileName = self.settings.logFilePath
if not fileName:
fileName = "%Y-%m.txt"
self.settings.logFilePath = fileName
path = self.GetPath(fileName)
path = today.strftime(path)
with open(path, "a+t") as f:
f.write("{0}\t{1}\t".format(now, eventType))
f.write("\t".join(dataList))
f.write("\n")
def nmap_to_ip_ctime(nmap):
"""take nmap output and return a ctime and ip parsed from it"""
firstlines = nmap.splitlines()[:2]
mo = re.search('scan initiated (.+) as:', firstlines[0])
c_date = datetime.strptime(mo.group(1), '%a %b %d %H:%M:%S %Y')
ctime = int(datetime.strftime(c_date, '%s'))
mo = re.search('Nmap scan report for .* \((.*)\)', firstlines[1])
ip = mo.group(1)
return (ip, ctime)
def __str__(self):
return '{} - {}'.format(
datetime.strftime(self.request_at, '%Y-%m-%d %H:%M:%S'),
datetime.strftime(self.created_at, '%Y-%m-%d %H:%M:%S')
)
def strftime(self, _date, _format):
"""Convert date to string according to format
:param date _date: date to convert
:param str _format: format to use (same as for datetime.strftime)
:return str: converted date
"""
_datetime = datetime.combine(_date, datetime.min.time())
return _datetime.strftime(_format)
def last_end_date(self):
''' The last day when this Task was active'''
if self.end_time:
return self.end_time.strftime('%Y-%m-%d')
return None
def __repr__(self):
if self.start_time:
start_str = '%s' % self.start_time.strftime('%H:%M')
else:
start_str = 'None'
if self.end_time:
end_str = '%s' % self.end_time.strftime('%H:%M')
work_str = '%s' % str(self.work_time).split('.')[0]
else:
end_str = 'None'
work_str = 'in progress'
if self.tid is not None:
return '[%d:%s] - %s| %s (%s -> %s) - %s' % (self.tid,
self.uid,
self.last_end_date,
work_str,
start_str,
end_str,
self.name)
return '[%s] - %s| %s (%s -> %s) - %s' % (self.uid,
self.last_end_date,
work_str,
start_str,
end_str,
self.name)
def work_on(task_id=0, start_time_str=None):
'''Start given task id'''
tasks = get_tasks(condition=lambda x: x.tid == task_id)
tasks = group_task_by(tasks, group='name')
if not tasks:
LOGGER.error("could not find task ID '%s'", task_id)
else:
task = tasks[0]
start_time = None
if start_time_str:
date_str = datetime.strftime(datetime.today(),
'%Y-%m-%d')
start_time = date_str + ' ' + start_time_str
Task(task.name, start_str=start_time).start()
def write(self, vals):
status_history_obj = self.env['hc.care.plan.activity.detail.status.history']
res = super(CarePlanActivityDetail, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status') and status_history_record_ids[0].status != vals.get('status'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
status_history_vals = {
'detail_id': self.id,
'status': vals.get('status'),
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res
def write(self, vals):
status_history_obj = self.env['hc.compartment.definition.status.history']
publication_status_obj = self.env['hc.vs.publication.status']
res = super(CompartmentDefinition, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status_id') and status_history_record_ids[0].status != vals.get('status_id'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
publication_status = publication_status_obj.browse(vals.get('status_id'))
status_history_vals = {
'compartment_definition_id': self.id,
'status': publication_status.name,
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res
def write(self, vals):
status_history_obj = self.env['hc.code.system.status.history']
publication_status_obj = self.env['hc.vs.publication.status']
res = super(CodeSystem, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status_id') and status_history_record_ids[0].status != vals.get('status_id'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
publication_status = publication_status_obj.browse(vals.get('status_id'))
status_history_vals = {
'code_system_id': self.id,
'status': publication_status.name,
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res
def _compute_name(self):
comp_name = '/'
for hc_res_research_subject in self:
if hc_res_research_subject.identifier_id:
comp_name = hc_res_research_subject.identifier_id.name or ''
if hc_res_research_subject.individual_id:
comp_name = comp_name + ", " + hc_res_research_subject.individual_id.name or ''
if hc_res_research_subject.study_id:
comp_name = comp_name + ", " + hc_res_research_subject.study_id.name or ''
if hc_res_research_subject.period_start_date:
comp_name = comp_name + ", " + datetime.strftime(datetime.strptime(hc_res_research_subject.period_start_date, DTF), "%Y-%m-%d")
hc_res_research_subject.name = comp_name
def write(self, vals):
status_history_obj = self.env['hc.research.subject.status.history']
res = super(ResearchSubject, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status') and status_history_record_ids[0].status != vals.get('status'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
status_history_vals = {
'research_subject_id': self.id,
'status': vals.get('status'),
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res
def write(self, vals):
status_history_obj = self.env['hc.appointment.participant.status.history']
res = super(AppointmentParticipant, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status') and status_history_record_ids[0].status != vals.get('status'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
status_history_vals = {
'participant_id': self.id,
'status': vals.get('status'),
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res
def write(self, vals):
status_history_obj = self.env['hc.eligibility.request.status.history']
fm_status_obj = self.env['hc.vs.fm.status']
res = super(EligibilityRequest, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status_id') and status_history_record_ids[0].status != vals.get('status_id'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
fm_status = fm_status_obj.browse(vals.get('status_id'))
status_history_vals = {
'eligibility_request_id': self.id,
'status': fm_status.name,
'start_date': datetime.today()
}
if vals.get('status_id') == 'entered-in-error':
status_id_history_vals.update({'end_date': datetime.today()})
status_history_obj.create(status_history_vals)
return res
def _compute_name(self):
comp_name = '/'
for hc_res_detected_issue in self:
if hc_res_detected_issue.patient_id:
comp_name = hc_res_detected_issue.patient_id.name
if hc_res_detected_issue.patient_id.birth_date:
patient_birth_date = datetime.strftime(datetime.strptime(hc_res_detected_issue.patient_id.birth_date, DF), "%Y-%m-%d")
comp_name = comp_name + "("+ patient_birth_date + "),"
if hc_res_detected_issue.category_id:
comp_name = comp_name + " " + hc_res_detected_issue.category_id.name + "," or ''
if hc_res_detected_issue.date:
patient_date = datetime.strftime(datetime.strptime(hc_res_detected_issue.date, DTF), "%Y-%m-%d")
comp_name = comp_name + " " + patient_date
hc_res_detected_issue.name = comp_name
def write(self, vals):
status_history_obj = self.env['hc.activity.definition.status.history']
publication_status_obj = self.env['hc.vs.publication.status']
res = super(ActivityDefinition, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status_id') and status_history_record_ids[0].status != vals.get('status_id'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
publication_status = publication_status_obj.browse(vals.get('status_id'))
status_history_vals = {
'activity_definition_id': self.id,
'status': publication_status.name,
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res
def write(self, vals):
status_history_obj = self.env['hc.payment.notice.status.history']
fm_status_obj = self.env['hc.vs.fm.status']
res = super(PaymentNotice, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status_id') and status_history_record_ids[0].status != vals.get('status_id'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
fm_status = fm_status_obj.browse(vals.get('status_id'))
status_history_vals = {
'payment_notice_id': self.id,
'status': fm_status.name,
'start_date': datetime.today()
}
if vals.get('status_id') == 'entered-in-error':
status_id_history_vals.update({'end_date': datetime.today()})
status_history_obj.create(status_history_vals)
return res
def _compute_unique_person(self):
comp_unique_person = '/'
for hc_person in self:
if hc_person.name_id:
comp_unique_person = hc_person.name_id.name or ''
if hc_person.gender:
comp_unique_person = comp_unique_person + ", " + hc_person.gender or ''
if hc_person.birth_date:
comp_unique_person = comp_unique_person + ", " + datetime.strftime(datetime.strptime(hc_person.birth_date, DF), "%Y-%m-%d")
hc_person.unique_person = comp_unique_person
def write(self, vals):
status_history_obj = self.env['hc.value.set.status.history']
res = super(ValueSet, self).write(vals)
status_history_record_ids = status_history_obj.search([('end_date','=', False)])
if status_history_record_ids:
if vals.get('status') and status_history_record_ids[0].status != vals.get('status'):
for status_history in status_history_record_ids:
status_history.end_date = datetime.strftime(datetime.today(), DTF)
time_diff = datetime.today() - datetime.strptime(status_history.start_date, DTF)
if time_diff:
days = str(time_diff).split(',')
if days and len(days) > 1:
status_history.time_diff_day = str(days[0])
times = str(days[1]).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
else:
times = str(time_diff).split(':')
if times and times > 1:
status_history.time_diff_hour = str(times[0])
status_history.time_diff_min = str(times[1])
status_history.time_diff_sec = str(times[2])
status_history_vals = {
'value_set_id': self.id,
'status': vals.get('status'),
'start_date': datetime.today()
}
status_history_obj.create(status_history_vals)
return res