Browse Source

[ADD] Initial Commit

pull/104/head
Sreejith P 7 years ago
parent
commit
b9a5bb49fa
  1. 12
      auto_fill/README.rst
  2. 23
      auto_fill/__init__.py
  3. 38
      auto_fill/__manifest__.py
  4. 23
      auto_fill/controllers/__init__.py
  5. 42
      auto_fill/controllers/main.py
  6. BIN
      auto_fill/static/description/auto_fill.gif
  7. BIN
      auto_fill/static/description/banner.jpg
  8. BIN
      auto_fill/static/description/cybro_logo.png
  9. BIN
      auto_fill/static/description/icon.png
  10. 91
      auto_fill/static/description/index.html
  11. 32
      auto_fill/static/src/css/auto_fill.css
  12. 53
      auto_fill/static/src/js/auto_fill.js
  13. 17
      auto_fill/static/src/xml/auto_fill.xml
  14. 11
      auto_fill/views/auto_fill_templates.xml

12
auto_fill/README.rst

@ -0,0 +1,12 @@
Auto Fill Widget
================
* Widget that suggests field value in existing records
* Widget = **auto_fill**
Developer
=========
* Developer: Avinash Nk (avinash@cybrosys.in)
Contacts
========
* Cybrosys Technologies <https://www.cybrosys.com>

23
auto_fill/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Avinash Nk(<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import controllers

38
auto_fill/__manifest__.py

@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Avinash Nk(<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Auto Fill Widget',
'version': '11.0.1.0.0',
'summary': """Widget that suggests field value in existing records""",
'description': 'Widget for auto completing a character field according to its existing record values',
'category': 'Extra Tools',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': "https://www.cybrosys.com",
'depends': ['base'],
'data': ['views/auto_fill_templates.xml'],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

23
auto_fill/controllers/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Avinash Nk(<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import main

42
auto_fill/controllers/main.py

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
###################################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Avinash Nk(<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo.http import request
from odoo import http
class GetMatchingRecords(http.Controller):
@http.route(['/matching/records'], type='json', auth="none")
def get_matching_records(self, **kwargs):
model = str(kwargs['model'])
field = str(kwargs['field'])
value = str(kwargs['value'])
model = model.replace(".", "_")
cr = request.cr
if len(value) > 0:
query = """SELECT %s FROM %s WHERE %s ~* '%s' GROUP BY %s""" % (field, model, field, value, field)
cr.execute(query)
res = cr.fetchall()
else:
res = []
return res

BIN
auto_fill/static/description/auto_fill.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

BIN
auto_fill/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 409 KiB

BIN
auto_fill/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
auto_fill/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

91
auto_fill/static/description/index.html

@ -0,0 +1,91 @@
<section class="oe_container">
<div class="oe_row oe_spaced o_animate o_animate_in_children o_animate_offset_min">
<h2 class="oe_slogan">Auto Fill Widget</h2>
<h3 class="oe_slogan">Widget that suggests field value in existing records</h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a></h4>
</div>
<div class="oe_row oe_spaced o_animate o_animate_in_children o_animate_offset_min" style="padding-left:65px;">
<h4>Features:</h4>
<div>
<br/>
<span style="color:green;"> &#9745; </span> Can put any character or text fields<br/>
<br/>
<span style="color:green;"> &#9745; </span> Very fast results<br/>
<br/>
<span style="color:green;"> &#9745; </span> Attractive design<br/>
<br/>
<span style="color:green;"> &#9745; </span> Widget = <b>auto_fill</b><br/>
<br/>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced o_animate o_animate_in_children o_animate_offset_min">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32 text-justify">
Widget for auto completing a character field according to its existing record values
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced o_animate o_animate_in_children o_animate_offset_min">
<div style="text-align: center">
<p>
<h3 class="oe_slogan">Configuration</h3>
<p>
</div>
<div class="oe_picture" style="text-align:center">
<p class="oe_mt32 text-justify">
After installing the module, you can put the tag <b>widget="auto_fill"</b> in your form view. Then it
works as below.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced o_animate o_animate_in_children o_animate_offset_min">
<div class="oe_picture" style="text-align: center">
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;" src="auto_fill.gif">
</div>
</div>
</div>
</section>
<section class="oe_container">
<h2 class="oe_slogan" style="margin-top:20px;">Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/contact/"><i
class="fa fa-phone"></i> Contact Us </a> <a
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" class="center-block">
<div>
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter"
style="color:white;background: #00a0d1;width:35px;"></i></a></td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i
class="fa fa-2x fa-linkedin"
style="color:white;background: #31a3d6;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook"
style="color:white;background: #3b5998;width:35px;padding-left: 8px;"></i></a></td>
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i
class="fa fa-2x fa-google-plus"
style="color:white;background: #c53c2c;width:35px;padding-left: 3px;"></i></a></td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest"
style="color:white;background: #ac0f18;width:35px;padding-left: 3px;"></i></a></td>
</div>
</div>
</section>

32
auto_fill/static/src/css/auto_fill.css

@ -0,0 +1,32 @@
.auto-fill-scrollbar {
z-index: 1051;
position: absolute;
background: #ffffff;
overflow-y: scroll;
height: auto;
display:none;
width:auto !important;
border: 1px solid #E5E5E5;
font-size: 13px;
padding: 5px 0px;
box-shadow: 0px 6px 12px rgba(0, 0, 0, 0.176);
}
.auto-fill-scrollbar td {
padding-left: 7px !important;
padding-right: 7px !important;
}
.auto-fill-scrollbar td:hover{
background: #2d6cb3;
color: #fff;
width: 5px;
}
.list_matches{
width: 100%;
cursor: pointer;
}
.input_field_auto_fill {
border: 1px solid #D2D2FF;
}
.text_field_auto_fill {
border: 1px solid #D2D2FF;
}

53
auto_fill/static/src/js/auto_fill.js

@ -0,0 +1,53 @@
odoo.define('auto_fill.AutoFill', function (require) {
"use strict";
var ajax = require('web.ajax');
var basic_fields = require('web.basic_fields');
var registry = require('web.field_registry');
var CharField = registry.get('char');
var FieldAutoFill = CharField.extend({
template: 'FieldAutoFill',
events: _.extend({}, CharField.prototype.events, {
'keyup': '_onKeyup',
'click #list_matches': '_onTableRowClicked',
}),
_onKeyup: function () {
var value = document.getElementsByClassName('input_field_auto_fill')[0].value;
ajax.jsonRpc('/matching/records', 'call', {
model: this.model,
field: this.name,
value: value,
}).then(function (result){
if (result.length > 0){
$('.auto-fill-scrollbar').css('display', 'block');
var table = document.getElementById("list_matches");
$("#list_matches tr").remove();
var i;
for (i = 0; i < result.length; i++) {
var row = table.insertRow(i);
var cell = row.insertCell(0);
cell.innerHTML = result[i];
}
}
else {
$('.auto-fill-scrollbar').css('display', 'none');
}
}) ;
},
_onTableRowClicked: function (ev) {
document.getElementsByClassName('input_field_auto_fill')[0].value = ev.target.textContent;
$('.auto-fill-scrollbar').css('display', 'none');
},
});
registry.add('auto_fill', FieldAutoFill);
return {
FieldAutoFill: FieldAutoFill,
};
});

17
auto_fill/static/src/xml/auto_fill.xml

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates>
<t t-name="FieldAutoFill">
<t t-if="widget.mode !== 'readonly'">
<t t-if="widget.formatType === 'char'">
<input type="text" id="input_field_auto_fill" class="o_input input_field_auto_fill"/>
</t>
<t t-if="widget.formatType === 'text'">
<textarea type="text" id="input_field_auto_fill" class="o_input text_field_auto_fill"/>
</t>
</t>
<span t-if="widget.mode === 'readonly'"/>
<div t-if="widget.mode !== 'readonly'" class="auto-fill-scrollbar" id="auto_fill_list_scroll">
<table id="list_matches" class="list_matches"/>
</div>
</t>
</templates>

11
auto_fill/views/auto_fill_templates.xml

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<template id="assets_backend" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<link rel="stylesheet" href="/auto_fill/static/src/css/auto_fill.css"/>
<script src="/auto_fill/static/src/js/auto_fill.js" type="text/javascript"/>
</xpath>
</template>
</odoo>
Loading…
Cancel
Save