You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.1 KiB
36 lines
1.1 KiB
# -*- coding: utf-8 -*-
|
|
# Copyright 2015 GRAP - Sylvain LE GAL
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo import _, api, fields, models
|
|
|
|
|
|
class ResAuthenticationAttempt(models.Model):
|
|
_name = 'res.authentication.attempt'
|
|
_order = 'attempt_date desc'
|
|
|
|
_ATTEMPT_RESULT = [
|
|
('successfull', _('Successfull')),
|
|
('failed', _('Failed')),
|
|
('banned', _('Banned')),
|
|
]
|
|
|
|
# Column Section
|
|
attempt_date = fields.Datetime(string='Attempt Date')
|
|
login = fields.Char(string='Tried Login')
|
|
remote = fields.Char(string='Remote ID')
|
|
result = fields.Selection(
|
|
selection=_ATTEMPT_RESULT, string='Authentication Result')
|
|
|
|
# Custom Section
|
|
@api.model
|
|
def search_last_failed(self, remote):
|
|
last_ok = self.search(
|
|
[('result', '=', 'successfull'), ('remote', '=', remote)],
|
|
order='attempt_date desc', limit=1)
|
|
if last_ok:
|
|
return self.search([
|
|
('remote', '=', remote),
|
|
('attempt_date', '>', last_ok.attempt_date)])
|
|
else:
|
|
return self.search([('remote', '=', remote)])
|