From 2de738d88d86f2941541195d05bc1f68dfaede97 Mon Sep 17 00:00:00 2001 From: Vildan Safin Date: Mon, 24 Feb 2020 19:00:21 +0500 Subject: [PATCH] :bomb: developing process Signed-off-by: Vildan Safin --- .mrbob.ini | 18 ------ saas_apps/README.rst | 8 +-- saas_apps/__manifest__.py | 11 ++-- saas_apps/controllers/main.py | 39 +++++++++++-- saas_apps/images/attention.jpg | Bin 0 -> 69376 bytes saas_apps/models/saas_apps.py | 70 +++++++++++++++++++++++- saas_apps/security/ir.model.access.csv | 4 ++ saas_apps/static/src/css/calculator.css | 9 +++ saas_apps/static/src/img/default.png | Bin 0 -> 25193 bytes saas_apps/static/src/js/apps.js | 22 ++++++++ saas_apps/views/assets.xml | 11 ++++ saas_apps/views/calculator.xml | 70 ++++++++++++++++++++++++ saas_apps/views/manage.xml | 26 +++++++++ saas_apps/views/module_info.xml | 11 ++++ 14 files changed, 266 insertions(+), 33 deletions(-) delete mode 100644 .mrbob.ini create mode 100644 saas_apps/images/attention.jpg create mode 100644 saas_apps/security/ir.model.access.csv create mode 100644 saas_apps/static/src/css/calculator.css create mode 100644 saas_apps/static/src/img/default.png create mode 100644 saas_apps/static/src/js/apps.js create mode 100644 saas_apps/views/assets.xml create mode 100644 saas_apps/views/calculator.xml create mode 100644 saas_apps/views/manage.xml create mode 100644 saas_apps/views/module_info.xml diff --git a/.mrbob.ini b/.mrbob.ini deleted file mode 100644 index c2469e116..000000000 --- a/.mrbob.ini +++ /dev/null @@ -1,18 +0,0 @@ -[variables] -copyright.name = saas apps -copyright.github = saas-addons -addon.version = 12 -addon.technical_category = saas -addon.category = Marketing -addon.dependency = -addon.upstream = odoo-saas-tools -addon.name = SaaS Apps -addon.technical_name = saas_apps -addon.summary = short -addon.description = Loong -odoo.version = 12 -addon.name_camelwords = Saas Apps -copyright.year = 2020 -addon.branch = 12.0 -addon.odoo_sha = feb7c99f47cae55fff77035fe53975ea4a14d624 - diff --git a/saas_apps/README.rst b/saas_apps/README.rst index 660002acc..95c401776 100644 --- a/saas_apps/README.rst +++ b/saas_apps/README.rst @@ -6,18 +6,16 @@ Saas Apps =========== -short +Base module for manage modules in saas. -Loong +Module allows to choose modules that users gona use in their db. Credits ======= Contributors ------------ -* `saas apps `__: - - * :one::zero: init version of the module +* `Vildan Safin `__ Sponsors -------- diff --git a/saas_apps/__manifest__.py b/saas_apps/__manifest__.py index 242bd9be6..96534d7b3 100644 --- a/saas_apps/__manifest__.py +++ b/saas_apps/__manifest__.py @@ -3,10 +3,10 @@ { "name": """SaaS Apps""", - "summary": """short""", + "summary": """Choose your apps""", "category": "Marketing", # "live_test_url": "http://apps.it-projects.info/shop/product/DEMO-URL?version=12.0", - "images": [], + "images": ['/images/attention.jpg'], "version": "12.0.1.0.0", "application": False, @@ -17,10 +17,13 @@ # "price": 9.00, # "currency": "EUR", - "depends": [ - ], + "depends": ['website'], "external_dependencies": {"python": [], "bin": []}, "data": [ + 'security/ir.model.access.csv', + 'views/calculator.xml', + 'views/manage.xml', + 'views/assets.xml' ], "demo": [ ], diff --git a/saas_apps/controllers/main.py b/saas_apps/controllers/main.py index 0ddc65176..8fdab4fb4 100644 --- a/saas_apps/controllers/main.py +++ b/saas_apps/controllers/main.py @@ -2,9 +2,40 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo.http import route, request, Controller - +from odoo import http +from openerp.http import request +import json class SaaSAppsController(Controller): - @route('/price', type='http', auth='public') - def index(self, *kw): - return "shit" + @route('/price', auth='public', website=True) + def user_page(self, **kw): + import wdb + wdb.set_trace() + apps = http.request.env['saas.lines'] + return http.request.render('saas_apps.index', { + 'apps': apps.search([]) + }) + + @route('/manage', auth='public', website=True) + def manager_page(self, **kw): + apps = http.request.env['ir.module.module'] + return http.request.render('saas_apps.manage', { + 'apps': apps.search([]) + }) + + # @route('/manage/', auth='public', website=True) + # def module_information(self, name): + # return http.request.render('saas_apps.info', {}) + + @http.route(['/test'], type='json', auth='public', website=True) + def catch_app_click(self, **kw): + import wdb + wdb.set_trace() + # Mark choosen module as saleable + http.request.env['ir.module.module'].search([('name', '=', kw['args'][0])]).allow_to_sell = True + apps = http.request.env['saas.lines'] + apps.add_new_module(kw['args'][0]) + # request.redirect('/manage/%s' % name) + return { + 'apps': kw['args'][0] + } diff --git a/saas_apps/images/attention.jpg b/saas_apps/images/attention.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a5528b8a392c8000207c8fead3082e081a01563 GIT binary patch literal 69376 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 Ly2AGoKil$eDWt(7 literal 0 HcmV?d00001 diff --git a/saas_apps/models/saas_apps.py b/saas_apps/models/saas_apps.py index ea644efb2..d126b97e6 100644 --- a/saas_apps/models/saas_apps.py +++ b/saas_apps/models/saas_apps.py @@ -2,10 +2,76 @@ # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import api, fields, models +import logging +_logger = logging.getLogger(__name__) -class SAASApps(models.Model): - _name = 'saas.apps' +class SAASBasket(models.Model): + _name = 'saas.basket' _description = 'Module for selecting applications' users = fields.Integer(default=0) + module_sets_in_basket = fields.One2many('saas.set', 'basket', ondelete="cascade", delegate=True) + final_basket_price = fields.Float(default=0.0, compute='_compute_price', string="Price of the set") + + def _compute_price(self): + for module_set in self.module_set_in_basket: + self.final_basket_price = self.final_basket_price + module_set.price + + +class SAASLine(models.Model): + _name = 'saas.lines' + _description = 'Model line' + + module_name = fields.Char(default="default") + price = fields.Float(default=0.0) + icon_path = fields.Char(compute='_compute_path', string="icon path") + dependencies = fields.Many2one('saas.set', string="Module dependences") + + def _compute_path(self): + self.icon_path = "/saas_apps/static/src/img/%s.png" % self.module_name + + @api.constrains('price') + def _validate_price(self): + if self.price < 0: + self.price = 0 + raise "Price can't be negative." + + def add_new_module(self, name): + import wdb + wdb.set_trace() + # for module in self: + # if(module.module_name == name) + # return False + self.create({ + 'name': name + }) + return True + + +class SAASDependence(models.Model): + _name = 'saas.set' + _description = 'Module with dependencies' + + basket = fields.Many2one('saas.basket', string='Modules in basket') + modules = fields.One2many('saas.lines', 'dependencies', ondelete='cascade', delegate=True) + final_set_price = fields.Float(default=0.0, compute='_compute_price', string="Price of the set") + + def add_dependence(self, new_module_name, new_module_price): + try: + self.modules.create({ + 'module_name': new_module_name, + 'price': int(new_module_name_price) + }) + except: + _logger.error("Can't add new item in dependencies of this module") + + def _compute_price(self): + for module in self.modules: + self.final_set_price = self.final_set_price + module.price + + +# class IrModuleModule(models.Model): +# _inherit = "ir.module.module" + +# allow_to_sell = fields.Boolean(default=False) diff --git a/saas_apps/security/ir.model.access.csv b/saas_apps/security/ir.model.access.csv new file mode 100644 index 000000000..1278b44e3 --- /dev/null +++ b/saas_apps/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_saas_basket,access_saas_basket,model_saas_basket,base.group_user,1,1,1,1 +access_saas_lines,access_saas_lines,model_saas_lines,base.group_user,1,1,1,1 +access_saas_set,access_saas_set,model_saas_set,base.group_user,1,1,1,1 diff --git a/saas_apps/static/src/css/calculator.css b/saas_apps/static/src/css/calculator.css new file mode 100644 index 000000000..0efc03b36 --- /dev/null +++ b/saas_apps/static/src/css/calculator.css @@ -0,0 +1,9 @@ +.main-control-pad{ + margin-left: 15%; + width: auto; +} + +.col-lg-12{ + flex: 0 0 100%; + max-width: 100%; +} \ No newline at end of file diff --git a/saas_apps/static/src/img/default.png b/saas_apps/static/src/img/default.png new file mode 100644 index 0000000000000000000000000000000000000000..abf1e5d8ddbb0a6fc1b379ea2a1039c86d114ea7 GIT binary patch literal 25193 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 literal 0 HcmV?d00001 diff --git a/saas_apps/static/src/js/apps.js b/saas_apps/static/src/js/apps.js new file mode 100644 index 000000000..b0eb5b06f --- /dev/null +++ b/saas_apps/static/src/js/apps.js @@ -0,0 +1,22 @@ +odoo.define('saas_apps.model', function (require){ + 'use_strict'; + + var session = require('web.session'); + + + // function poopup_widjet(args){ + + // } + + window.onclick=function(e){ + console.log(e.target.innerText); + + if(window.location.pathname === "/manage") + session.rpc('/test', { + args: [e.target.innerText] + }).then(function (result) { + console.log(result); + // poopup_widjet(result); + }); + } +}); diff --git a/saas_apps/views/assets.xml b/saas_apps/views/assets.xml new file mode 100644 index 000000000..c9cc72fa3 --- /dev/null +++ b/saas_apps/views/assets.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/saas_apps/views/calculator.xml b/saas_apps/views/calculator.xml new file mode 100644 index 000000000..5eb50c245 --- /dev/null +++ b/saas_apps/views/calculator.xml @@ -0,0 +1,70 @@ + + + + + diff --git a/saas_apps/views/manage.xml b/saas_apps/views/manage.xml new file mode 100644 index 000000000..31c4208a0 --- /dev/null +++ b/saas_apps/views/manage.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/saas_apps/views/module_info.xml b/saas_apps/views/module_info.xml new file mode 100644 index 000000000..037465cbb --- /dev/null +++ b/saas_apps/views/module_info.xml @@ -0,0 +1,11 @@ + + + + +