Skip to content

add modulo aws analytics #415

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: 13.0
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions aws_s3_analytics/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
19 changes: 19 additions & 0 deletions aws_s3_analytics/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{ # pylint: disable=C8101,C8103,C7902
"name": "AWS S3 analytics",
"description": """Análise dos buckets de backup.""",
"author": "Trustcode",
"category": "Productivity",
"version": "13.0.0.1",
"contributors": [""],
"depends": ['mail'],
"data": [
"views/buckets.xml",
"views/res_company.xml",
"security/ir.model.access.csv",
"data/cron.xml",
"data/decimal_data.xml",
],
"installable": True,
"application": True,
"auto-install": False,
}
14 changes: 14 additions & 0 deletions aws_s3_analytics/data/cron.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0"?>
<odoo>
<record id="ir_cron_create_bucket" model="ir.cron" forcecreate="True">
<field name="name">Cron Update Buckets</field>
<field name="interval_number">1</field>
<field name="interval_type">hours</field>
<field name="state">code</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall" />
<field name="model_id" ref="aws_s3_analytics.model_aws_s3_analytics"/>
<field name="code">model.list_buckets()</field>
</record>

</odoo>
9 changes: 9 additions & 0 deletions aws_s3_analytics/data/decimal_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="decimal_disk_usage" model="decimal.precision">
<field name="name">Disk usage</field>
<field name="digits" eval="3"/>
</record>
</data>
</odoo>
2 changes: 2 additions & 0 deletions aws_s3_analytics/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from . import buckets
from . import res_company
54 changes: 54 additions & 0 deletions aws_s3_analytics/models/buckets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import datetime
from odoo import fields, models

try:
from boto3 import session
from boto3 import resource
from boto3 import client
except ImportError:
_logger.error('Cannot import Boto3', exc_info=True)


class AwsS3Analytics(models.Model):
_name = 'aws.s3.analytics'
_description = 'AWS S3 Analytics'
_rec_name = 'bucket_name'

bucket_name = fields.Char(string="Bucket", readonly=True)
object_line_ids = fields.One2many('object.lines', 'relation_id', string='Object Lines', readonly=True)

def list_buckets(self):

session = boto3.Session(
aws_access_key_id=(self.env.company.aws_access_key_id_o),
aws_secret_access_key=(self.env.company.aws_secret_access_key_o),
)
s3 = session.resource('s3')
lista = []

for bucket in s3.buckets.all():
lista.append(bucket)

self.create_bucket(lista)

def create_bucket(self, lista):
for i in lista:
name_dir = i.name

vals = {
"bucket_name": name_dir,
}

self.create(vals)
self.env.cr.commit()


class ObjectLines(models.Model):
_name = 'object.lines'
_description = 'Object lines'

bucket_name_id = fields.Many2one('aws.s3.analytics', string='Bucket')
bucket_object = fields.Char(string="Objeto")
last_modified = fields.Datetime('Ultima modificação do Obj')
disk_usage = fields.Float(string="Uso de disco", digits='Disk usage')
relation_id = fields.Many2one('aws.s3.analytics', string='IDS')
9 changes: 9 additions & 0 deletions aws_s3_analytics/models/res_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from odoo import fields, models


class ResCompany(models.Model):
_inherit = "res.company"

aws_access_key_id_o = fields.Char(string="Aws Token")
aws_secret_access_key_o = fields.Char(string="Aws Secret Key")

3 changes: 3 additions & 0 deletions aws_s3_analytics/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_aws_s3_analytics,access.aws.s3.analytics,model_aws_s3_analytics,account.group_account_readonly,1,0,0,1
access_object_lines,access.object.lines,model_object_lines,account.group_account_readonly,1,1,1,1
Binary file added aws_s3_analytics/static/description/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
77 changes: 77 additions & 0 deletions aws_s3_analytics/views/buckets.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>

<odoo>

<record id="bucket_action" model="ir.actions.act_window">
<field name="name">Bucket view</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">aws.s3.analytics</field>
<field name="view_mode">kanban,form,graph</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Aguarde enquanto sincronizamos com a AWS!
</p>
</field>
</record>

<menuitem id="aws_s3_analytics_menu_root"
name="S3 Analytics"
web_icon="aws_s3_analytics,static/description/icon.png"
sequence="7"/>

<menuitem id="s3_buckets_menu"
name="Buckets"
parent="aws_s3_analytics_menu_root"
action="bucket_action"
sequence="2"/>

<record id="view_bucket_form" model="ir.ui.view">
<field name="name">aws.s3.analytics.form</field>
<field name="model">aws.s3.analytics</field>
<field name="arch" type="xml">
<form>
<group>
<field name="bucket_name"/>
</group>
<group>
<field name="object_line_ids">
<tree>
<field name="bucket_name_id" invisible="1"/>
<field name="bucket_object"/>
<field name="last_modified"/>
<field name="disk_usage"/>
<field name="relation_id" invisible="1"/>
</tree>
</field>
</group>
</form>
</field>
</record>

<record model="ir.ui.view" id="view_bucket_kanban">
<field name="name">aws.s3.analytics.kanban</field>
<field name="model">aws.s3.analytics</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile" sample="1">
<field name="bucket_name"/>
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_card oe_kanban_global_click">
<div class="oe_kanban_details">
<ul>
<li>
<h3>
<field name="bucket_name"/>
</h3>
</li>
</ul>

</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>

</odoo>
18 changes: 18 additions & 0 deletions aws_s3_analytics/views/res_company.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<odoo>
<odoo>
<record id="aws_integration_company_view" model="ir.ui.view">
<field name="model">res.company</field>
<field name="inherit_id" ref="base.view_company_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">
<page name="AWS S3 Integration" string="AWS S3 Integration">
<group name="AWS Credencials" string="AWS S3 Integration ">
<field name="aws_access_key_id_o"></field>
<field name="aws_secret_access_key_o"></field>
</group>
</page>
</xpath>
</field>
</record>
</odoo>
</odoo>