fix api hr mobile
This commit is contained in:
parent
12814a654c
commit
d038e301d6
|
|
@ -335,7 +335,9 @@ class AttendanceController(http.Controller):
|
|||
if now > last:
|
||||
diff = now - last
|
||||
diff = diff.seconds / 60
|
||||
auto = request.env.user.company_id.auto_checkout if request.env.user.company_id.auto_checkout > 0 else 5
|
||||
zone = http.request.env['attendance.zone'].search([('employee_ids', 'in', employee.id)])
|
||||
zone_general = http.request.env['attendance.zone'].search([('general', '=', True)])
|
||||
auto = zone.auto_checkout or zone_general.auto_checkout or request.env.user.company_id.auto_checkout or 20
|
||||
if diff >= auto:
|
||||
attendance = http.request.env['attendance.attendance'].create({
|
||||
'employee_id': employee.id,
|
||||
|
|
|
|||
|
|
@ -25,7 +25,10 @@ class JwtAccessToken(models.Model):
|
|||
token.is_expired = datetime.now() > token.expires
|
||||
|
||||
def access_token_cron(self):
|
||||
self.search([("is_expired", "=", True)]).unlink()
|
||||
# self.search([("is_expired", "=", True)]).unlink()
|
||||
current_time = datetime.now()
|
||||
expired_tokens = self.search([('expires', '<', current_time)])
|
||||
expired_tokens.unlink()
|
||||
return True
|
||||
|
||||
def set_env(self,env):
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ class AttendanceZone(models.Model):
|
|||
loc_ch_dist = fields.Integer('Location Change Distance - Meter', default=100)
|
||||
srv_ch_tmout = fields.Integer('Services Change Timeout - Minutes', default=5)
|
||||
|
||||
auto_checkout = fields.Integer(string="Auto Checkout After" ,default=10)
|
||||
|
||||
@api.constrains('start','end')
|
||||
def start_end(self):
|
||||
for rec in self:
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ class HrEmployee(models.Model):
|
|||
device_id = fields.Char(string="Employee Device ")
|
||||
fcm_token = fields.Char(string='FCM Token')
|
||||
attendance_log_ids = fields.One2many('attendance.log','employee_id',string="Attendance Log")
|
||||
|
||||
message_sent = fields.Boolean(string="Message Sent", default=False)
|
||||
def user_push_notification(self, notification):
|
||||
url = "https://fcm.googleapis.com/fcm/send"
|
||||
header = {
|
||||
|
|
|
|||
|
|
@ -97,3 +97,22 @@ class Users(models.Model):
|
|||
groups.append("group_department_manager")
|
||||
|
||||
return groups
|
||||
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
res = super(Users, self).create(vals)
|
||||
if 'password' in vals or vals.get('active') is False:
|
||||
self._invalidate_tokens(res)
|
||||
return res
|
||||
|
||||
def write(self, vals):
|
||||
result = super(Users, self).write(vals)
|
||||
if 'password' in vals or 'active' in vals and not vals['active']:
|
||||
self._invalidate_tokens(self)
|
||||
return result
|
||||
|
||||
def _invalidate_tokens(self, users):
|
||||
token_model = self.env['jwt_provider.access_token']
|
||||
for user in users:
|
||||
token_model.search([('user_id', '=', user.id)]).unlink()
|
||||
|
|
|
|||
|
|
@ -192,9 +192,17 @@ class Validator:
|
|||
_logger.error(traceback.format_exc())
|
||||
|
||||
except (jwt.InvalidTokenError, Exception) as e:
|
||||
result['code'] = 497
|
||||
result['message'] = 'Token invalid or expired'
|
||||
_logger.error(traceback.format_exc())
|
||||
record = request.env['jwt_provider.access_token'].sudo().search([
|
||||
('token', '=', token)
|
||||
])
|
||||
if not record:
|
||||
result['message'] = 'Token not found'
|
||||
result['code'] = 497
|
||||
return result
|
||||
else:
|
||||
result['code'] = 498
|
||||
result['message'] = 'Token invalid'
|
||||
_logger.error(traceback.format_exc())
|
||||
return result
|
||||
|
||||
def refresh_token(self, token):
|
||||
|
|
@ -237,9 +245,17 @@ class Validator:
|
|||
_logger.error(traceback.format_exc())
|
||||
|
||||
except (jwt.InvalidTokenError, Exception) as e:
|
||||
result['code'] = 497
|
||||
result['message'] = 'Token invalid'
|
||||
_logger.error(traceback.format_exc())
|
||||
record = request.env['jwt_provider.access_token'].sudo().search([
|
||||
('token', '=', token)
|
||||
])
|
||||
if not record:
|
||||
result['message'] = 'Token not found'
|
||||
result['code'] = 497
|
||||
return result
|
||||
else:
|
||||
result['code'] = 498
|
||||
result['message'] = 'Token invalid'
|
||||
_logger.error(traceback.format_exc())
|
||||
return result
|
||||
|
||||
|
||||
|
|
@ -284,9 +300,17 @@ class Validator:
|
|||
return result
|
||||
|
||||
except (jwt.InvalidTokenError, Exception) as e:
|
||||
result['code'] = 497
|
||||
result['message'] = 'Token invalid'
|
||||
_logger.error(traceback.format_exc())
|
||||
record = request.env['jwt_provider.access_token'].sudo().search([
|
||||
('token', '=', token)
|
||||
])
|
||||
if not record:
|
||||
result['message'] = 'Token not found'
|
||||
result['code'] = 497
|
||||
return result
|
||||
else:
|
||||
result['code'] = 498
|
||||
result['message'] = 'Token invalid'
|
||||
_logger.error(traceback.format_exc())
|
||||
return result
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@
|
|||
</h2>
|
||||
</div>
|
||||
<group col="4" colspan="2">
|
||||
<field name="latitude" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="latitude" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="longitude" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="zone" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="allowed_range" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="zone" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="allowed_range" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="active_check" readonly="1" force_save="1" />
|
||||
</group>
|
||||
<group>
|
||||
|
|
@ -29,8 +29,9 @@
|
|||
|
||||
<group>
|
||||
<field name="loc_ch_intv" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}" class="oe_inline"/>
|
||||
<field name="loc_ch_dist" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="srv_ch_tmout" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="loc_ch_dist" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="srv_ch_tmout" attrs="{'required':[('specific','=',True)],'invisible':[('specific','=',False)]}"/>
|
||||
<field name="auto_checkout" />
|
||||
</group>
|
||||
|
||||
</group>
|
||||
|
|
@ -70,11 +71,7 @@
|
|||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<!-- <menuitem-->
|
||||
<menuitem id="menu_attendance_zone"
|
||||
name="Attendance Zone"
|
||||
parent="attendances.menu_hr_attendance_configurations"
|
||||
sequence="3"
|
||||
action="attendance_zone_action"/>
|
||||
<menuitem id="menu_attendance_zone" name="Attendance Zone" parent="attendances.menu_hr_attendance_configurations" sequence="3" action="attendance_zone_action"/>
|
||||
|
||||
|
||||
<!-- config-->
|
||||
|
|
|
|||
|
|
@ -25,7 +25,10 @@ class JwtAccessToken(models.Model):
|
|||
token.is_expired = datetime.now() > token.expires
|
||||
|
||||
def access_token_cron(self):
|
||||
self.search([("is_expired", "=", True)]).unlink()
|
||||
# self.search([("is_expired", "=", True)]).unlink()
|
||||
current_time = datetime.now()
|
||||
expired_tokens = self.search([('expires', '<', current_time)])
|
||||
expired_tokens.unlink()
|
||||
return True
|
||||
|
||||
def set_env(self,env):
|
||||
|
|
|
|||
Loading…
Reference in New Issue