dp_changelogs wuth reboot
parent
1752eebd03
commit
682ae668bd
|
|
@ -12,5 +12,4 @@
|
|||
<field name="code">model.cron_get_changelog()
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
from subprocess import check_output
|
||||
import pytz
|
||||
import os
|
||||
|
||||
from odoo import models, fields, api, tools
|
||||
|
||||
|
|
@ -20,35 +21,65 @@ class ChangeLog(models.Model):
|
|||
tz_name = self.env.context.get('tz') or tools.config.get('timezone')
|
||||
date_string = fields.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
date_string = fields.Datetime.to_string(
|
||||
pytz.timezone('UTC').localize(fields.Datetime.from_string(date_string), is_dst=None).astimezone(
|
||||
pytz.timezone('UTC').localize(fields.Datetime.from_string(date_string),
|
||||
is_dst=None).astimezone(
|
||||
pytz.timezone(tz_name)))
|
||||
return 'Changelog ' + date_string[:-3]
|
||||
|
||||
name = fields.Char('Name', required=True, default=_get_changelog_name)
|
||||
date = fields.Date('Datum', required=True, default=lambda *a: fields.datetime.now())
|
||||
date = fields.Datetime('Timestamp', required=True, default=lambda *a: fields.datetime.now())
|
||||
commit = fields.Char('Commit')
|
||||
changelogs = fields.Text('Changelogs')
|
||||
ppid = fields.Char('letzte ppid')
|
||||
|
||||
@api.model
|
||||
def cron_get_changelog(self):
|
||||
vals = self._get_changelogs_vals()
|
||||
changelog = self.create(vals)
|
||||
changelog = False
|
||||
if vals:
|
||||
changelog = self.create(vals)
|
||||
return changelog
|
||||
|
||||
@api.model
|
||||
def _get_changelogs_vals(self):
|
||||
commit = check_output(["git", "log", "--pretty=oneline", "-1"])
|
||||
commit1 = self.search([], limit=1)
|
||||
last_commit = self.search([], limit=1)
|
||||
com2 = commit.decode("utf-8")
|
||||
com2 = com2.split(' ')[0]
|
||||
new_logs = b''
|
||||
if commit1:
|
||||
com1 = commit1.commit
|
||||
if last_commit:
|
||||
com1 = last_commit.commit
|
||||
changelogs = check_output(["git", "log", "--pretty=oneline", com1 + "..." + com2])
|
||||
new_logs = b''
|
||||
for changelog in changelogs.splitlines():
|
||||
new_logs += b' '.join(changelog.split(b' ')[1:]) + b'\n'
|
||||
return {
|
||||
'commit': com2,
|
||||
'changelogs': new_logs
|
||||
}
|
||||
if new_logs == b'':
|
||||
vals = {}
|
||||
else:
|
||||
vals = {
|
||||
'commit': com2,
|
||||
'changelogs': new_logs,
|
||||
'ppid': last_commit.ppid
|
||||
}
|
||||
return vals
|
||||
|
||||
@api.model
|
||||
def _get_reboot_vals(self):
|
||||
last_commit = self.search([], limit=1)
|
||||
if last_commit and last_commit.ppid != str(os.getppid()):
|
||||
vals = {
|
||||
'commit': last_commit.commit,
|
||||
'changelogs': 'Reboot',
|
||||
'ppid': str(os.getppid())
|
||||
}
|
||||
return vals
|
||||
|
||||
@api.model_cr
|
||||
def _register_hook(self):
|
||||
try:
|
||||
self.cron_get_changelog()
|
||||
vals = self._get_reboot_vals()
|
||||
if vals:
|
||||
self.create(vals)
|
||||
except:
|
||||
# falls git nicht vorhanden ist wird sicher eine Fehler ausgegeben.
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
<field name="name"/>
|
||||
<field name="date"/>
|
||||
<field name="commit"/>
|
||||
<field name="ppid"/>
|
||||
</group>
|
||||
<group name="changelogs">
|
||||
<field name="changelogs"/>
|
||||
|
|
@ -27,6 +28,7 @@
|
|||
<field name="name"/>
|
||||
<field name="date"/>
|
||||
<field name="commit"/>
|
||||
<field name="ppid"/>
|
||||
<field name="changelogs"/>
|
||||
</tree>
|
||||
</field>
|
||||
|
|
|
|||
Loading…
Reference in New Issue