1 | # -*- encoding: utf-8 -*-
|
---|
2 | ##############################################################################
|
---|
3 | #
|
---|
4 | # OpenERP, Open Source Management Solution
|
---|
5 | # Copyright (C) 2009 (<http://www.filsystem.ro>). All Rights Reserved
|
---|
6 | # $Id$
|
---|
7 | #
|
---|
8 | # This program is free software: you can redistribute it and/or modify
|
---|
9 | # it under the terms of the GNU General Public License as published by
|
---|
10 | # the Free Software Foundation, either version 3 of the License, or
|
---|
11 | # (at your option) any later version.
|
---|
12 | #
|
---|
13 | # This program is distributed in the hope that it will be useful,
|
---|
14 | # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
15 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
16 | # GNU General Public License for more details.
|
---|
17 | #
|
---|
18 | # You should have received a copy of the GNU General Public License
|
---|
19 | # along with this program. If not, see <http://www.gnu.org/licenses/>.
|
---|
20 | #
|
---|
21 | ##############################################################################
|
---|
22 |
|
---|
23 | from osv import fields, osv
|
---|
24 |
|
---|
25 | class network_point(osv.osv):
|
---|
26 | _name = "network.point"
|
---|
27 | _columns = {
|
---|
28 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
29 | 'latitude': fields.float('Position latitude', digits=(12,6), required=True),
|
---|
30 | 'longitude': fields.float('Position longitude', digits=(12,6), required=True),
|
---|
31 | 'address_id': fields.many2one('res.partner.address', 'Address'),
|
---|
32 | 'description': fields.text('Description', translate=True),
|
---|
33 | }
|
---|
34 | network_point()
|
---|
35 |
|
---|
36 | class network_address(osv.osv):
|
---|
37 | _name = "network.address"
|
---|
38 | _columns = {
|
---|
39 | 'name': fields.char('Name', size=64, required=True, translate=True, help='Text alias for address'),
|
---|
40 | 'ipv4': fields.char('IPv4', size=15, help='IPv4 address in form nnn.nnn.nnn.nnn'),
|
---|
41 | 'ipv6': fields.char('IPv6', size=39, help='IPv6 address in form hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh:hhhh'),
|
---|
42 | }
|
---|
43 | network_address()
|
---|
44 |
|
---|
45 | class network_device_type(osv.osv):
|
---|
46 | _name = "network.device.type"
|
---|
47 | _columns = {
|
---|
48 | 'name': fields.char('Name', size=32, required=True),
|
---|
49 | 'running_permanent': fields.boolean('Running permanent', help='Determine if device is not running temporary'),
|
---|
50 | 'icon_name': fields.char('Icon file name', size=32),
|
---|
51 | }
|
---|
52 | network_device_type()
|
---|
53 |
|
---|
54 | class network_device(osv.osv):
|
---|
55 | _name = "network.device"
|
---|
56 | _columns = {
|
---|
57 | 'name': fields.char('Name', size=32, required=True),
|
---|
58 | 'partner_id': fields.many2one('res.partner', 'Partner', required=True),
|
---|
59 | 'interface_ids': fields.one2many('network.interface', 'device_id', 'Interfaces'),
|
---|
60 | 'type_id': fields.many2one('network.device.type', 'Type', required=True),
|
---|
61 | 'used': fields.boolean('Used'),
|
---|
62 | 'position': fields.many2one('network.point', 'Position'),
|
---|
63 | 'online': fields.boolean('Online', readonly=True, help='Network reachability state of device'),
|
---|
64 | 'last_online': fields.datetime('Last online', readonly=True),
|
---|
65 | 'inbound_nat_priority': fields.integer('Inbound NAT priority', help="If multiple device is hidden by same NATed public ip, this gives their priority and thus which device will be used for ingoing traffic"),
|
---|
66 | }
|
---|
67 | network_device()
|
---|
68 |
|
---|
69 | class network_interface_type(osv.osv):
|
---|
70 | _name = "network.interface.type"
|
---|
71 | _columns = {
|
---|
72 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
73 | 'link_speed': fields.integer('Link speed'),
|
---|
74 | 'full_duplex': fields.boolean('Full duplex'),
|
---|
75 | 'color': fields.integer('Color'),
|
---|
76 | 'wireless': fields.boolean('Wireless'),
|
---|
77 | }
|
---|
78 | network_interface_type()
|
---|
79 |
|
---|
80 | class network_link(osv.osv):
|
---|
81 | _name = "network.link"
|
---|
82 | _columns = {
|
---|
83 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
84 | 'type_id': fields.many2one('network.interface.type', 'Type'),
|
---|
85 | 'interface_ids': fields.one2many('network.interface', 'link_id', 'Interfaces'),
|
---|
86 | 'points_ids': fields.many2many('network.point', 'network_link_point_rel', 'link_id', 'point_id', 'Points'),
|
---|
87 | }
|
---|
88 | network_link()
|
---|
89 |
|
---|
90 | class network_interface(osv.osv):
|
---|
91 | _name = "network.interface"
|
---|
92 | _columns = {
|
---|
93 | 'name': fields.char('Name', size=32, required=True),
|
---|
94 | 'type_id': fields.many2one('network.interface.type', 'Type', required=True),
|
---|
95 | 'mac': fields.char('MAC', size=17, help='Physical address in form XX:XX:XX:XX:XX:XX'),
|
---|
96 | 'local_address_id': fields.many2one('network.address', 'Local address', help='Local IPv4 address in form nnn.nnn.nnn.nnn'),
|
---|
97 | 'external_address_id': fields.many2one('network.address', 'External address'),
|
---|
98 | 'device_id': fields.many2one('network.device', 'Device', required=True),
|
---|
99 | 'online': fields.boolean('Online', readonly=True, help='Network reachability state of device'),
|
---|
100 | 'last_online': fields.datetime('Last online', readonly=True),
|
---|
101 | 'link_id': fields.many2one('network.link', 'Link'),
|
---|
102 | }
|
---|
103 | network_interface()
|
---|
104 |
|
---|
105 | class network_domain(osv.osv):
|
---|
106 | _name = "network.domain"
|
---|
107 | _columns = {
|
---|
108 | 'name': fields.char('Name', size=32, required=True),
|
---|
109 | 'parent_id': fields.many2one('network.domain', 'Parent'),
|
---|
110 | 'alias': fields.char('Alias', size=32),
|
---|
111 | }
|
---|
112 | network_domain()
|
---|
113 |
|
---|
114 | class network_subnet(osv.osv):
|
---|
115 | _name = "network.subnet"
|
---|
116 | _columns = {
|
---|
117 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
118 | 'address': fields.char('Address', size=15, required=True),
|
---|
119 | 'prefix': fields.integer('Prefix', required=True),
|
---|
120 | 'dhcp_id': fields.many2one('network.address', 'DHCP'),
|
---|
121 | 'gateway_id': fields.many2one('network.address', 'Default gateway'),
|
---|
122 | 'dns_ids': fields.many2many('network.address', 'network_subnet_dns_rel', 'subnet_id', 'address_id', 'DNS servers'),
|
---|
123 | 'ntp_ids': fields.many2many('network.address', 'network_subnet_ntp_rel', 'subnet_id', 'address_id', 'NTP servers'),
|
---|
124 | 'domain_id': fields.many2one('network.domain', 'Domain'),
|
---|
125 | 'wins_id': fields.many2one('network.address', 'WINS server'),
|
---|
126 | 'partner_id': fields.many2one('res.partner', 'Partner'),
|
---|
127 | }
|
---|
128 | network_subnet()
|
---|
129 |
|
---|
130 | class network_billing_period(osv.osv):
|
---|
131 | _name = "network.billing.period"
|
---|
132 | _columns = {
|
---|
133 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
134 | 'months': fields.integer('Month count', required=True),
|
---|
135 | }
|
---|
136 | network_billing_period()
|
---|
137 |
|
---|
138 | class network_service_type(osv.osv):
|
---|
139 | _name = "network.service.type"
|
---|
140 | _columns = {
|
---|
141 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
142 | }
|
---|
143 | network_service_type()
|
---|
144 |
|
---|
145 | class network_service_internet(osv.osv):
|
---|
146 | _name = "network.service.internet"
|
---|
147 | _columns = {
|
---|
148 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
149 | 'download_min_speed': fields.integer('Download min. speed', required=True),
|
---|
150 | 'download_max_speed': fields.integer('Download max. speed', required=True),
|
---|
151 | 'upload_min_speed': fields.integer('Upload min. speed', required=True),
|
---|
152 | 'upload_max_speed': fields.integer('Upload max. speed', required=True),
|
---|
153 | }
|
---|
154 | network_service_internet()
|
---|
155 |
|
---|
156 | class network_service_hosting_vps(osv.osv):
|
---|
157 | _name = "network.service.hosting.vps"
|
---|
158 | _columns = {
|
---|
159 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
160 | 'memory_capacity': fields.integer('Memory capacity', required=True, help='Total memory capacity of virtual machine in MB'),
|
---|
161 | 'storage_capacity': fields.integer('Storage capacity', required=True, help='Total storage capacity of virtual machine in GB'),
|
---|
162 | }
|
---|
163 | network_service_hosting_vps()
|
---|
164 |
|
---|
165 | class network_service(osv.osv):
|
---|
166 | _name = "network.service"
|
---|
167 | _columns = {
|
---|
168 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
169 | 'type_id': fields.many2one('network.service.type', 'Type'),
|
---|
170 | 'price': fields.integer('Price', help='Price per period'),
|
---|
171 | 'price_period_id': fields.many2one('network.billing.period', 'Price period'),
|
---|
172 | 'available': fields.boolean('Available', help='Define if service is available for customers'),
|
---|
173 | 'standard': fields.boolean('Standard', help='Define if service is standard offer for customers'),
|
---|
174 | 'partner_ids': fields.many2many('res.partner', 'network_service_partner_rel', 'service_id', 'partner_id', 'Partners'),
|
---|
175 | }
|
---|
176 | network_service()
|
---|
177 |
|
---|
178 | class network_service_instance(osv.osv):
|
---|
179 | _name = "network.service"
|
---|
180 | _columns = {
|
---|
181 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
182 | 'type_id': fields.many2one('network.service.type', 'Type'),
|
---|
183 | 'price': fields.integer('Price', help='Price per period'),
|
---|
184 | 'price_period_id': fields.many2one('network.billing.period', 'Price period'),
|
---|
185 | 'available': fields.boolean('Available', help='Define if service is available for customers'),
|
---|
186 | 'standard': fields.boolean('Standard', help='Define if service is standard offer for customers'),
|
---|
187 | }
|
---|
188 | network_service()
|
---|
189 |
|
---|
190 | class network_frequency(osv.osv):
|
---|
191 | _name = "network.frequency"
|
---|
192 | _columns = {
|
---|
193 | 'name': fields.char('Name', size=32, required=True, translate=True),
|
---|
194 | 'ssid': fields.char('SSID', size=32),
|
---|
195 | 'frequency': fields.integer('Frequency', help='Frequency in MHz'),
|
---|
196 | 'channel_width': fields.integer('Channel width', help='Channel width in MHz'),
|
---|
197 | 'channel_width_upper': fields.integer('Upper channel width', help='Upper side channel width in MHz'),
|
---|
198 | 'channel_width_lower': fields.integer('Lower channel width', help='Lower side channel width in MHz'),
|
---|
199 | 'device_id': fields.many2one('network.device', 'Device'),
|
---|
200 | 'link_type_id': fields.many2one('network.interface.type', 'Link type'),
|
---|
201 | }
|
---|
202 | network_frequency()
|
---|