first commit
This commit is contained in:
306
kk_odoo_saas/views/app_views.xml
Executable file
306
kk_odoo_saas/views/app_views.xml
Executable file
@@ -0,0 +1,306 @@
|
||||
<odoo>
|
||||
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Sequences for kk_odoo_saas.app -->
|
||||
<record id="kk_odoo_saas_app_sequence" model="ir.sequence">
|
||||
<field name="name">SaaS App Sequence</field>
|
||||
<field name="code">kk_odoo_saas.app</field>
|
||||
<field name="prefix">saas-app</field>
|
||||
<field name="padding">3</field>
|
||||
<field name="company_id" eval="False"/>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
||||
<data>
|
||||
|
||||
<record id="kk_odoo_saas_app_view_form" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_app_view_form</field>
|
||||
<field name="model">kk_odoo_saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="deploy_app" string="Deploy App" type="object"
|
||||
attrs="{'invisible':[('status','not in',['d', 'del'])]}" class="btn-primary"/>
|
||||
<button name="kk_odoo_saas.action_saas_app_delete_wizard"
|
||||
confirm="Are you sure to DELETE this Deployment? it will DELETE all Data of this App ."
|
||||
string="Delete Deployment" type="action" icon="fa-trash"
|
||||
attrs="{'invisible':[('status','not in',['l', 'm'])]}" class="btn-primary"/>
|
||||
<!-- <button name="update_app" string="Update Deployment" type="object"-->
|
||||
<!-- attrs="{'invisible':[('status','not in',['m'])]}" class="btn-primary"/>-->
|
||||
<button name="deploy_apps_from_git" string="Update Git Code" type="object"
|
||||
attrs="{'invisible':[('is_extra_addon','=',False)]}" class="btn-secondary"/>
|
||||
<button name="del_git_dir" string="Delete Git Code" type="object"
|
||||
attrs="{'invisible':[('is_extra_addon','=',False)]}" class="btn-secondary"/>
|
||||
<button name="restart_odoo_service" string="Restart Odoo Service" type="object"
|
||||
class="btn-secondary" icon="fa-refresh"/>
|
||||
<field name="status" widget="statusbar"/>
|
||||
</header>
|
||||
<header>
|
||||
<button name="action_create_subscription"
|
||||
type="object"
|
||||
string="Create Subscription"
|
||||
attrs="{'invisible': [('subscription_id','!=',False)]}"
|
||||
/>
|
||||
</header>
|
||||
|
||||
<sheet>
|
||||
<div class="oe_button_box" style="justify-content: space-between; display: flex;">
|
||||
<div>
|
||||
|
||||
<button name="action_connect_instance"
|
||||
type="object" icon="fa-rocket"
|
||||
class="oe_stat_button pl-3"
|
||||
string="Connect"
|
||||
attrs="{'invisible': [('status','in',['d','del'])]}"
|
||||
/>
|
||||
<button name="kk_odoo_saas.action_saas_app_update_dkr_img_wizard"
|
||||
string="Update Docker Image" type="action" icon="fa-cloud-upload"
|
||||
attrs="{'invisible':[('status','not in',['l', 'm'])]}" class="oe_stat_button"/>
|
||||
</div>
|
||||
|
||||
|
||||
<button name="action_show_subscription"
|
||||
type="object" icon="fa-file"
|
||||
string="Show Subscription"
|
||||
attrs="{'invisible': [('subscription_id','=',False)]}"
|
||||
class="oe_stat_button"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<group>
|
||||
<group string="App Info">
|
||||
<field name="app_name" readonly="1" force_save="1"/>
|
||||
<field name="name" required="1"/>
|
||||
</group>
|
||||
<group string="K8s Cluster Configuration">
|
||||
<field name="configuration" options="{'no_create': True, 'no_edit': True}" required="1" attrs="{'readonly': [('status', 'in', ['l','m'])]}"/>
|
||||
</group>
|
||||
<group string="Node Configuration">
|
||||
<field name="is_dedicated_node" required="0" attrs="{'readonly': [('status', 'in', ['l','m'])]}" string="Any Specific Node"/>
|
||||
<field name="node_id"
|
||||
attrs="{'readonly': [('status', 'in', ['l','m'])], 'required': [('is_dedicated_node', '=', True)], 'invisible': [('is_dedicated_node', '=', False)]}"
|
||||
options="{'no_create': True}"
|
||||
/>
|
||||
<!-- <field name="node_key"-->
|
||||
<!-- attrs="{'readonly': [('status', 'in', ['l','m'])], 'invisible': [('is_dedicated_node', '=', False)]}"-->
|
||||
<!-- />-->
|
||||
<!-- <field name="node_value"-->
|
||||
<!-- attrs="{'readonly': [('status', 'in', ['l','m'])], 'invisible': [('is_dedicated_node', '=', False)]}"-->
|
||||
<!-- />-->
|
||||
<div>
|
||||
<p>
|
||||
<button name="refresh_node_list"
|
||||
attrs="{'invisible': [('is_dedicated_node', '=', False)]}"
|
||||
type="object" string="Click to Refresh Nodes List."
|
||||
class="oe_link" />
|
||||
</p>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Domain Configuration">
|
||||
|
||||
<div>
|
||||
<field name="sub_domain_name" class="oe_inline"/>.<field name="domain_name" class="oe_inline"/>
|
||||
</div>
|
||||
</group>
|
||||
<group string="Database Server">
|
||||
<field name="db_server_id" options="{'no_create': True, 'no_edit': True}" domain="[('status', '=', 'connected')]" required="1"/>
|
||||
<field name="client_db_name" required="1"/>
|
||||
</group>
|
||||
<group string="Extra Addons from Git">
|
||||
<field name="is_extra_addon" widget="boolean_toggle"/>
|
||||
<field name="extra_addons"
|
||||
attrs="{'invisible': [('is_extra_addon', '=', False)], 'required':[('is_extra_addon', '=', True)]}"/>
|
||||
<field name="is_private_repo" attrs="{'invisible': [('is_extra_addon', '=', False)]}"/>
|
||||
<field name="git_token" password="True"
|
||||
attrs="{'invisible': ['|', ('is_extra_addon', '=', False), ('is_private_repo', '=', False)], 'required':[('is_private_repo', '=', True)]}"/>
|
||||
</group>
|
||||
<group string="App Version (Docker Image)">
|
||||
<field name="docker_image" required="1" attrs="{'readonly': [('status', 'in', ['l','m'])]}"/>
|
||||
</group>
|
||||
<group string="Demo Data">
|
||||
<field name="demo_data" widget="boolean_toggle" attrs="{'readonly': [('status', 'in', ['l','m'])]}"/>
|
||||
</group>
|
||||
|
||||
|
||||
<group string="Odoo Modules">
|
||||
<field name="module_ids" widget="many2many_tags" attrs="{'readonly': [('status', 'in', ['l','m'])]}"/>
|
||||
</group>
|
||||
<group string="App Credentials">
|
||||
<field name="login_email" string="Email / Username"/>
|
||||
<label for="login_pwd" string="Password"/>
|
||||
<!-- <div>-->
|
||||
<field name="login_pwd" password="True" widget="CopyClipboardChar"/>
|
||||
<!-- <button class="oe_inline btn btn-primary" type="object" name="reset_app_password" string="Reset Credentials"/>-->
|
||||
<!-- </div>-->
|
||||
|
||||
<field name="master_login_email"/>
|
||||
<field name="master_login_pwd" password="True" widget="CopyClipboardChar"/>
|
||||
|
||||
</group>
|
||||
|
||||
|
||||
</group>
|
||||
<notebook>
|
||||
<page string="Client Details">
|
||||
<group>
|
||||
<group>
|
||||
<field name="client" force_save="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="country_id" options="{'no_create': True}" attrs="{'readonly': [('status', 'in', ['l','m'])]}"/>
|
||||
<field name="admin_user" context="{'form_view_ref': 'base.view_users_form',}" required="1" attrs="{'readonly': [('status', 'in', ['l','m'])]}"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
</page>
|
||||
<page string="Subscription Details">
|
||||
<group>
|
||||
<group>
|
||||
<field name="subscription_id"/>
|
||||
</group>
|
||||
<group>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
</page>
|
||||
<page name="k8s_logs" string="K8s Logs">
|
||||
<field name="k8s_logs"/>
|
||||
</page>
|
||||
<page name="instance_logs" string="Instance Logs">
|
||||
<button name="get_pod_logs" type="object" string="Download Logs File"/>
|
||||
<button name="action_log_viewer" type="object" string="See Realtime Logs"/>
|
||||
</page>
|
||||
<!-- <page name="redeploy_app" string="Update Docker Image">-->
|
||||
<!-- </page>-->
|
||||
<page name="custom_domains" string="Custom Domains">
|
||||
<field name="custom_domain_ids"/>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
</sheet>
|
||||
<div class="oe_chatter">
|
||||
<field name="message_follower_ids" groups="base.group_user"/>
|
||||
<field name="activity_ids"/>
|
||||
<field name="message_ids"/>
|
||||
</div>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_app_view_kanban" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_app_view_kanban</field>
|
||||
<field name="model">kk_odoo_saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban records_draggable="0">
|
||||
<field name="app_name"/>
|
||||
<field name="name"/>
|
||||
<field name="status"/>
|
||||
<field name="domain_name"/>
|
||||
<field name="sub_domain_name"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click container">
|
||||
<field name="name"/>
|
||||
<br/>
|
||||
<field name="app_name"/>
|
||||
<t t-if="record.status.raw_value in ['l', 'm']">
|
||||
<p>
|
||||
<field name="sub_domain_name"/>
|
||||
<field name="domain_name"/>
|
||||
</p>
|
||||
</t>
|
||||
<div>Custom Domains: </div><field name="custom_domain_ids" widget="many2many_tags"/>
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_app_view_search" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas.app.search</field>
|
||||
<field name="model">kk_odoo_saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Apps">
|
||||
<field name="name" string="Apps"
|
||||
filter_domain="[('name','ilike',self)]"/>
|
||||
<field name="app_name" string="Unique Id"/>
|
||||
<field name="sub_domain_name" string="Domain Name"/>
|
||||
<field name="status" string="State"/>
|
||||
<group expand="0" string="Group By">
|
||||
<filter name="group_status" string="State" domain="[]" context="{'group_by':'status'}"/>
|
||||
<filter name="group_configuration" string="Configuration" domain="[]"
|
||||
context="{'group_by':'configuration'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_app_view_tree" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_app_view_tree</field>
|
||||
<field name="model">kk_odoo_saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="app_name"/>
|
||||
<field name="name"/>
|
||||
<field name="configuration"/>
|
||||
<field name="client"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_app_action" model="ir.actions.act_window">
|
||||
<field name="name">Apps</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">kk_odoo_saas.app</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
<field name="context">{'search_default_group_status': True}</field>
|
||||
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Top menu item -->
|
||||
<menuitem name="SaaS" id="menu_root"
|
||||
web_icon="kk_odoo_saas,static/description/icon.png"
|
||||
sequence="-40"
|
||||
/>
|
||||
|
||||
<!-- actions -->
|
||||
<menuitem name="Apps" id="kk_odoo_saas_apps" parent="menu_root"
|
||||
action="kk_odoo_saas.kk_odoo_saas_app_action"/>
|
||||
|
||||
<menuitem id="menu_kk_odoo_saas_smile_log" parent="menu_root" name="Logs" action="smile_log.act_smile_log"/>
|
||||
|
||||
<menuitem id="menu_kk_odoo_saas_customer" parent="menu_root" name="Customers / Orders"/>
|
||||
<menuitem id="menu_kk_odoo_saas_customer_customers" parent="menu_kk_odoo_saas_customer" name="Customers"
|
||||
action="base.action_partner_customer_form" sequence="10"/>
|
||||
|
||||
<menuitem id="menu_kk_odoo_saas_customer_subscriptions" parent="menu_kk_odoo_saas_customer" name="Subscriptions"
|
||||
action="sale_subscription.sale_subscription_action" sequence="20"/>
|
||||
|
||||
<record id="action_orders_ecommerce" model="ir.actions.act_window">
|
||||
<field name="name">Orders</field>
|
||||
<field name="res_model">sale.order</field>
|
||||
<field name="view_mode">tree,form,kanban,activity</field>
|
||||
<field name="domain">[]</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="search_view_id" ref="website_sale.view_sales_order_filter_ecommerce"/>
|
||||
<field name="help" type="html">
|
||||
<p class="o_view_nocontent_empty_folder">
|
||||
There is no confirmed order from the website
|
||||
</p>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem id="menu_kk_odoo_saas_customer_orders" parent="menu_kk_odoo_saas_customer" name="Orders"
|
||||
action="action_orders_ecommerce" sequence="30"/>
|
||||
|
||||
<menuitem id="menu_kk_odoo_saas_users" parent="menu_kk_odoo_saas_customer" name="Portal Users"
|
||||
action="base.action_res_users" sequence="30"/>
|
||||
|
||||
</data>
|
||||
|
||||
</odoo>
|
||||
10
kk_odoo_saas/views/assets.xml
Executable file
10
kk_odoo_saas/views/assets.xml
Executable file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="assets_backend" name="line assets" inherit_id="web.assets_backend">
|
||||
<xpath expr="." position="inside">
|
||||
<script type="text/javascript" src="/kk_odoo_saas/static/src/js/refresh_button.js"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
|
||||
</odoo>
|
||||
275
kk_odoo_saas/views/config_views.xml
Executable file
275
kk_odoo_saas/views/config_views.xml
Executable file
@@ -0,0 +1,275 @@
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- explicit list view definition -->
|
||||
<record model="ir.ui.view" id="kk_odoo_saas_k8s_config_list">
|
||||
<field name="name">kk_odoo_saas k8s config list</field>
|
||||
<field name="model">kk_odoo_saas.k8s.config</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_config_kanban" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas k8s config kanban</field>
|
||||
<field name="model">kk_odoo_saas.k8s.config</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban>
|
||||
<field name="name"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click container">
|
||||
<field name="name"/>
|
||||
<!-- <t t-raw="record.name"/>-->
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_config_view_form" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_k8s_config_view_form</field>
|
||||
<field name="model">kk_odoo_saas.k8s.config</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<header>
|
||||
<button name="update_cluster_nodes" string="Update Nodes" type="object"/>
|
||||
</header>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name" required="1"/>
|
||||
<field name="config_file" required="1" widget="ace" class="oe_edit_only"/>
|
||||
<field name="domain_name"
|
||||
placeholder=".yourdomain.com | A DNS Should be set and configures as *.yourdomain.com"
|
||||
required="1"/>
|
||||
<field name="namespaces" readonly="1"/>
|
||||
<!-- <button name="check_connectivity" string="Check Connection" type="object"/>-->
|
||||
</group>
|
||||
<group>
|
||||
<button name="check_connectivity" string="Check Connection" type="object"/>
|
||||
</group>
|
||||
<!-- <notebook>-->
|
||||
<!-- <page string="NameSpaces" name="ns">-->
|
||||
|
||||
<!-- </page>-->
|
||||
<!-- <page string="Pods" name="pod">-->
|
||||
|
||||
<!-- </page>-->
|
||||
<!-- <page string="deployments" name="deployment">-->
|
||||
|
||||
<!-- </page>-->
|
||||
<!-- <page string="Ingresses" name="ingress">-->
|
||||
|
||||
<!-- </page>-->
|
||||
<!-- <page string="Service" name="service">-->
|
||||
|
||||
<!-- </page>-->
|
||||
<!-- <page string="PVs" name="pv">-->
|
||||
|
||||
<!-- </page>-->
|
||||
<!-- </notebook>-->
|
||||
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_config_action" model="ir.actions.act_window">
|
||||
<field name="name">K8s Configuration</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">kk_odoo_saas.k8s.config</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="kk_odoo_saas_k8s_docker_images_list">
|
||||
<field name="name">kk_odoo_saas k8s config list</field>
|
||||
<field name="model">kk_odoo_saas.k8s.docker.images</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name"/>
|
||||
<field name="tag"/>
|
||||
<field name="description"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_docker_images_kanban" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas k8s docker images kanban</field>
|
||||
<field name="model">kk_odoo_saas.k8s.docker.images</field>
|
||||
<field name="arch" type="xml">
|
||||
<kanban>
|
||||
<field name="name"/>
|
||||
<field name="tag"/>
|
||||
<field name="description"/>
|
||||
<field name="is_pvt_dkr_repo"/>
|
||||
<templates>
|
||||
<t t-name="kanban-box">
|
||||
<div class="oe_kanban_global_click container">
|
||||
<strong>Image Name:</strong> <field name="name"/>
|
||||
<br/>
|
||||
<strong>Tag Name:</strong> <field name="tag"/>
|
||||
<br/>
|
||||
<strong>Description:</strong> <field name="description"/>
|
||||
<br/>
|
||||
<strong>Is Private Repo?</strong> <field name="is_pvt_dkr_repo"/>
|
||||
<!-- <t t-raw="record.name"/>-->
|
||||
</div>
|
||||
</t>
|
||||
</templates>
|
||||
</kanban>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_docker_images_view_form" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_k8s_docker_images_view_form</field>
|
||||
<field name="model">kk_odoo_saas.k8s.docker.images</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
|
||||
<group>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="tag"/>
|
||||
<field name="gevent_key"/>
|
||||
<field name="description"/>
|
||||
<field name="repo_link"/>
|
||||
<field name="base_version"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="is_pvt_dkr_repo" widget="boolean_toggle"/>
|
||||
<field name="b64_dkr_config" class="oe_edit_only" attrs="{'invisible': [('is_pvt_dkr_repo', '=', False)],
|
||||
'required':[('is_pvt_dkr_repo', '=', True)]}"
|
||||
placeholder="Place your .docker/config.json after encoding it in base64"/>
|
||||
|
||||
</group>
|
||||
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_docker_images_action" model="ir.actions.act_window">
|
||||
<field name="name">Docker Images</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">kk_odoo_saas.k8s.docker.images</field>
|
||||
<field name="view_mode">kanban,list,form</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_node_view_tree" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_k8s_node_view_tree</field>
|
||||
<field name="model">kk_odoo_saas.k8s.node</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Cluster Nodes" create="false">
|
||||
<field name="name"/>
|
||||
<field name="create_date"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_k8s_node_view_form" model="ir.ui.view">
|
||||
<field name="name">kk_odoo_saas_k8s_node_view_form</field>
|
||||
<field name="model">kk_odoo_saas.k8s.node</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Cluster Nodes" create="false">
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="labels" widget="ace"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="annotations" widget="ace"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="taints" widget="ace"/>
|
||||
</group>
|
||||
|
||||
</sheet>
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="yaml_info" widget="ace"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_master_db_server_view_tree" model="ir.ui.view">
|
||||
<field name="name">kk_master_db_server_view_tree</field>
|
||||
<field name="model">kk_odoo_saas.k8s.master_db_creds</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="DB Server Credentials" >
|
||||
<field name="name"/>
|
||||
<field name="server_url"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_master_db_server_view_form" model="ir.ui.view">
|
||||
<field name="name">kk_master_db_server_view_form</field>
|
||||
<field name="model">kk_odoo_saas.k8s.master_db_creds</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="DB Server Credentials">
|
||||
<header>
|
||||
<button name="check_connectivity" string="Check Connectivity" type="object"/>
|
||||
<field name="status" widget="statusbar"/>
|
||||
</header>
|
||||
|
||||
<sheet>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="master_username" />
|
||||
<field name="server_port" />
|
||||
</group>
|
||||
<group>
|
||||
<field name="master_pass" password="True"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="server_url" />
|
||||
</group>
|
||||
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="kk_odoo_saas_k8s_node_action" model="ir.actions.act_window">
|
||||
<field name="name">Cluster Nodes</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">kk_odoo_saas.k8s.node</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<record id="kk_odoo_saas_master_db_creds_action" model="ir.actions.act_window">
|
||||
<field name="name">Master DB Creds</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">kk_odoo_saas.k8s.master_db_creds</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem name="Configuration" id="kk_odoo_saas_configuration_root" parent="menu_root"/>
|
||||
|
||||
<menuitem name="Clusters Configurations" id="kk_odoo_saas_configuration"
|
||||
parent="kk_odoo_saas_configuration_root"
|
||||
action="kk_odoo_saas.kk_odoo_saas_k8s_config_action"/>
|
||||
|
||||
<menuitem name="Docker Images" id="kk_odoo_saas_docker_images" parent="kk_odoo_saas_configuration_root"
|
||||
action="kk_odoo_saas.kk_odoo_saas_k8s_docker_images_action"/>
|
||||
|
||||
<menuitem name="Cluster Nodes" id="kk_odoo_saas_cluster_nodes" parent="kk_odoo_saas_configuration_root"
|
||||
action="kk_odoo_saas.kk_odoo_saas_k8s_node_action"/>
|
||||
|
||||
<menuitem name="Master DB Server" id="kk_odoo_saas_master_db_server" parent="kk_odoo_saas_configuration_root"
|
||||
action="kk_odoo_saas.kk_odoo_saas_master_db_creds_action"/>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
49
kk_odoo_saas/views/logs_viewer.xml
Executable file
49
kk_odoo_saas/views/logs_viewer.xml
Executable file
@@ -0,0 +1,49 @@
|
||||
<odoo>
|
||||
<!-- Header -->
|
||||
<template id="saas_app_log_viewer">
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
|
||||
<title>Logs Viewer</title>
|
||||
|
||||
<link rel="stylesheet" href="/kk_odoo_saas/static/src/css/bootstrap.css"/>
|
||||
<link rel="stylesheet" href="/kk_odoo_saas/static/src/css/font-awesome.css"/>
|
||||
<link rel="stylesheet" href="/kk_odoo_saas/static/src/css/logs-viewer.css"/>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div class="container-fluid o-logs-container">
|
||||
<div class="row">
|
||||
<div class="o-logs col-md-12">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header">
|
||||
<div class="status-bar">
|
||||
<form class="form-inline d-flex justify-content-end" _lpchecked="1">
|
||||
<a class="btn button-pause">
|
||||
<i class="fa fa-pause" aria-hidden="true" style="display: none;"></i>
|
||||
<i class="fa fa-play" aria-hidden="true" style=""></i>
|
||||
<div class="loader"></div>
|
||||
</a>
|
||||
<div class="form-group d-flex">
|
||||
<label for="filter">Filter:</label>
|
||||
<input type="text" class="form-control ml-2" id="filter" placeholder="ERROR"/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script type="text/javascript" src="/kk_odoo_saas/static/src/js/jquery.js"></script>
|
||||
<script type="text/javascript" src="/kk_odoo_saas/static/src/js/logs-viewer.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
</template>
|
||||
|
||||
</odoo>
|
||||
53
kk_odoo_saas/views/res_config_settings_views.xml
Executable file
53
kk_odoo_saas/views/res_config_settings_views.xml
Executable file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<record id="res_config_settings_view_form" model="ir.ui.view">
|
||||
<field name="name">res.config.settings.view.form.inherit.website.apps</field>
|
||||
<field name="model">res.config.settings</field>
|
||||
<field name="inherit_id" ref="website.res_config_settings_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@id='website_settings']" position="after">
|
||||
<h2>SaaS pricing page</h2>
|
||||
<div class="row mt16 o_settings_container" id="apps_general_settings">
|
||||
<div class="col-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="show_packages"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="show_packages" string="Show packages"/>
|
||||
<div class="text-muted">
|
||||
Show packages at "price" page
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="show_apps"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="show_apps" string="Show apps"/>
|
||||
<div class="text-muted">
|
||||
Show applications at "price" page
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="show_buy_now_button"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="show_buy_now_button" string="Show 'Buy now' button"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-md-6 o_setting_box">
|
||||
<div class="o_setting_left_pane">
|
||||
<field name="show_try_trial_button"/>
|
||||
</div>
|
||||
<div class="o_setting_right_pane">
|
||||
<label for="show_try_trial_button" string="Show 'Try trial' button"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
75
kk_odoo_saas/views/saas_app_website.xml
Executable file
75
kk_odoo_saas/views/saas_app_website.xml
Executable file
@@ -0,0 +1,75 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="saas_app_view_form" model="ir.ui.view">
|
||||
<field name="name">saas.app.form</field>
|
||||
<field name="model">saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<field name="icon_image" widget="image" class="oe_avatar o_field_image"/>
|
||||
<group>
|
||||
<field name="name"/>
|
||||
<field name="shortdesc"/>
|
||||
<field name="allow_to_sell"/>
|
||||
<field name="month_price" class="oe_inline" widget='monetary'/>
|
||||
<field name="year_price" class="oe_inline" widget='monetary'/>
|
||||
<field name="currency_id" invisible="1"/>
|
||||
<field name="dependency_ids"/>
|
||||
<field name="product_tmpl_id"/>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="saas_app_search" model="ir.ui.view">
|
||||
<field name="name">saas.app.search</field>
|
||||
<field name="model">saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Search Redirect">
|
||||
<field name="shortdesc"/>
|
||||
<field name="allow_to_sell"/>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="saas_app_view_tree" model="ir.ui.view">
|
||||
<field name="name">saas.app.list</field>
|
||||
<field name="model">saas.app</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Manage Apps">
|
||||
<field name="shortdesc"/>
|
||||
<field name="allow_to_sell"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_saas_app_list" model="ir.actions.act_window">
|
||||
<field name="name">Website Apps</field>
|
||||
<field name="res_model">saas.app</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="saas_app_view_tree"/>
|
||||
<field name="target">current</field>
|
||||
<field name="search_view_id" ref="saas_app_search"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="Website"
|
||||
id="menu_website"
|
||||
parent="kk_odoo_saas.menu_root"
|
||||
/>
|
||||
<menuitem name="Manage Apps"
|
||||
id="menu_website_manage_apps_list"
|
||||
action="action_saas_app_list"
|
||||
parent="menu_website"
|
||||
sequence="40"
|
||||
/>
|
||||
<menuitem name="Dashboard"
|
||||
id="menu_website_dashboard"
|
||||
action="website.backend_dashboard"
|
||||
parent="menu_website"
|
||||
sequence="60"
|
||||
/>
|
||||
</data>
|
||||
</odoo>
|
||||
73
kk_odoo_saas/views/saas_package_views.xml
Executable file
73
kk_odoo_saas/views/saas_package_views.xml
Executable file
@@ -0,0 +1,73 @@
|
||||
<odoo>
|
||||
<record id='saas_package_view_tree' model='ir.ui.view'>
|
||||
<field name="name">saas.package.tree</field>
|
||||
<field name="model">saas.package</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree>
|
||||
<field name="name" string="Package Name"/>
|
||||
<field name="month_price" string="Monthly Price"/>
|
||||
<field name="year_price" string="Yearly Price"/>
|
||||
<field name="month_product_id"/>
|
||||
<field name="year_product_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="saas_package_form_view" model="ir.ui.view">
|
||||
<field name="name">saas.package.form</field>
|
||||
<field name="model">saas.package</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<field name="package_image" widget="image" class="oe_avatar o_field_image"/>
|
||||
<div class="oe_title">
|
||||
<h1>
|
||||
<field name="name" readonly="0" placeholder="Name"/>
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<group>
|
||||
<group>
|
||||
<field name="is_published"/>
|
||||
<field name="docker_image" required="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="month_price"/>
|
||||
<field name="year_price"/>
|
||||
</group>
|
||||
|
||||
<group>
|
||||
<field name="month_product_id"/>
|
||||
<field name="year_product_id"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="module_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="product_tmpl_id" string="Product Template"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="stripe_product_id" password="True"/>
|
||||
<field name="subscription_template" required="True"/>
|
||||
|
||||
</group>
|
||||
</group>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_saas_package_list" model="ir.actions.act_window">
|
||||
<field name="name">Portal Packages</field>
|
||||
<field name="res_model">saas.package</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
|
||||
<menuitem name="Manage Packages"
|
||||
id="menu_website_manage_package_list"
|
||||
action="action_saas_package_list"
|
||||
parent="menu_website"
|
||||
sequence="40"
|
||||
/>
|
||||
|
||||
</odoo>
|
||||
15
kk_odoo_saas/views/sale_subscription.xml
Executable file
15
kk_odoo_saas/views/sale_subscription.xml
Executable file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="sale_subscription_view_form" model="ir.ui.view">
|
||||
<field name="name">sale.subscription.inherit.form.view</field>
|
||||
<field name="model">sale.subscription</field>
|
||||
<field name="inherit_id" ref="sale_subscription.sale_subscription_view_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='partner_id']" position="after">
|
||||
<field name="build_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
66
kk_odoo_saas/views/templates.xml
Executable file
66
kk_odoo_saas/views/templates.xml
Executable file
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template inherit_id="auth_signup.fields" id="additional_fields" name="Auth Signup additional form fields">
|
||||
|
||||
<xpath expr="//div[hasclass('form-group', 'field-name')]" position="after">
|
||||
<t t-if="not only_passwords">
|
||||
<input type="hidden" name="operator_id" t-att-value="operator_id" />
|
||||
|
||||
<div class="loader hid transition">
|
||||
<img src="/kk_odoo_saas/static/src/img/loader.gif" draggable="false">
|
||||
<p class="status">Creating database...</p>
|
||||
</img>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-company_name">
|
||||
<label for="company_name">Company name</label>
|
||||
<input type="text" name="company_name" id="company_name" class="form-control form-control-sm"
|
||||
t-att-value="company_name"
|
||||
required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-database_name">
|
||||
<label for="database_name">Database name</label>
|
||||
<input type="text" name="database_name" id="database_name" class="form-control form-control-sm"
|
||||
t-att-value="database_name"
|
||||
required="required"/>
|
||||
<small id="build-domain-helper">
|
||||
<span class="text-danger build-domain-helper_status build-domain-helper_status-false" style="display: none">Domain is not available</span>
|
||||
<span class="text-success build-domain-helper_status build-domain-helper_status-true" style="display: none">
|
||||
Your domain
|
||||
<span class="domain"></span>
|
||||
</span>
|
||||
<span class="build-domain-helper_status build-domain-helper_status-loading" style="display: none">Detecting is domain available</span>
|
||||
</small>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-phone">
|
||||
<label for="phone">Phone</label>
|
||||
<input type="text" name="phone" id="phone" class="form-control form-control-sm"
|
||||
t-att-value="phone"
|
||||
required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-database_lang">
|
||||
<label for="database_lang">Language</label>
|
||||
<select id="database_lang" name="database_lang" class="form-control" autocomplete="off">
|
||||
<option value=""></option>
|
||||
<t t-foreach="langs" t-as="item">
|
||||
<option t-att-value="item[0]" t-esc="item[1]" t-att-selected="'selected' if database_lang == item[0] else None"/>
|
||||
</t>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-country_code">
|
||||
<label for="country_code">Country</label>
|
||||
<select id="country_code" name="country_code" class="form-control" autocomplete="off">
|
||||
<option value=""></option>
|
||||
<t t-foreach="countries" t-as="item">
|
||||
<option t-att-value="item[0]" t-esc="item[1]" t-att-selected="'selected' if country_code == item[0] else None"/>
|
||||
</t>
|
||||
</select>
|
||||
</div>
|
||||
</t>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user