Skip to Content
Menu
This question has been flagged
2 Replies
77750 Views

When i'm trying to do an approve action that modify the hr.attendance fields via a modification request this error shows.I tried to search on the net about this error but the major answer was the format of database not the same with the code but in my case i saw the data of my database but i found the same format is used. Any idea on how can i fix this problem ?


here is my code

here is my code

 @api.multi
def modification_approval(self):     attend_signin_ids = self.env['hr.attendance'].search([('employee_id','=',self.employee_id.id)])
    check_in_date = datetime.datetime.strptime(str(self.time_check_in_1), "%Y-%m-%d %H:%M:%S").date()
    check_out_date = datetime.datetime.strptime(str(self.time_check_out_1), "%Y-%m-%d %H:%M:%S").date()
    for obj in attend_signin_ids:
        attendance_check_in_date = datetime.datetime.strptime(str(obj.check_in), "%Y-%m-%d %H:%M:%S").date()
        attendance_check_out_date = datetime.datetime.strptime(str(obj.check_out), "%Y-%m-%d %H:%M:%S").date()
        if (check_in_date == attendance_check_in_date):
            obj.write({'check_in': self.time_check_in_1,
                       'check_out': self.time_check_out_1})

    return self.write({
        'state': 'approved'
    })

Traceback


Traceback (most recent call last):
File "/opt/openhrms/odoo/http.py", line 651, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/opt/openhrms/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/opt/openhrms/odoo/tools/pycompat.py", line 87, in reraise
raise value
File "/opt/openhrms/odoo/http.py", line 693, in dispatch
result = self._call_function(**self.params)
File "/opt/openhrms/odoo/http.py", line 342, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/openhrms/odoo/service/model.py", line 97, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/openhrms/odoo/http.py", line 335, in checked_call
result = self.endpoint(*a, **kw)
File "/opt/openhrms/odoo/http.py", line 937, in __call__
return self.method(*args, **kw)
File "/opt/openhrms/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/opt/openhrms/addons/web/controllers/main.py", line 938, in call_button
action = self._call_kw(model, method, args, {})
File "/opt/openhrms/addons/web/controllers/main.py", line 926, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/opt/openhrms/odoo/api.py", line 689, in call_kw
return call_kw_multi(method, model, args, kwargs)
File "/opt/openhrms/odoo/api.py", line 680, in call_kw_multi
result = method(recs, *args, **kwargs)
File "/opt/openhrms/addons/sifast_attendance_modification_request/models/hr_attendance_modification_request.py", line 67, in modification_approval
attendance_check_out_date = datetime.datetime.strptime(str(obj.check_out),"%Y-%m-%d %H:%M:%S").date()
File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
(data_string, format))
ValueError: time data 'False' does not match format '%Y-%m-%d %H:%M:%S'


Avatar
Discard
Best Answer

Hi,

Time data 'False' occurs when that field is not date string or it contains null value, So first make sure that field contains value when function is called. you can use any debugger or pycharm to find out when that field getting 'false'.

Avatar
Discard
Best Answer

Hi,

attendance_check_in_date = datetime.datetime.strptime(str(obj.check_in), "%Y-%m-%d %H:%M:%S").date()
attendance_check_out_date = datetime.datetime.strptime(str(obj.check_out), "%Y-%m-%d %H:%M:%S").date()

In the above line of code the value of the obj.check_in or obj,check_out might not contains values. As it does not contain value and when you try to access it or call it, it will return False. So what you have to do is that, use an if statement and check whether it contains value or not.


if obj.check_in:
attendance_check_in_date = datetime.datetime.strptime(str(obj.check_in), "%Y-%m-%d %H:%M:%S").date()
if obj.check_out:
   attendance_check_out_date = datetime.datetime.strptime(str(obj.check_out), "%Y-%m-%d %H:%M:%S").date()


Thanks

Avatar
Discard

thank you,

it`s working with the just date.

How I can calculate duration by date & time

for i in self:

if i.start_date and i.end_date:

s_date=datetime.strptime(str(i.start_date), "%Y-%m-%d %H:%M:%S").date()

e_date=datetime.strptime(str(i.end_date), "%Y-%m-%d %H:%M:%S").date()

if s_date < e_date:

result = (e_date - s_date)

i.duration = result

else:

msg = f'{s_date} Must be older than {e_date}'

raise UserError(msg)

Related Posts Replies Views Activity
2
Feb 24
13179
1
Dec 22
3859
2
Dec 22
12722
2
Jun 22
4684
2
Jun 22
3503