Hotfix/ips are not shown in usage information when no it object is assigned (#26)

* #25 | Fix ips not shown when no it object was assigned and improve table UI

* Remove where clause making query to not fetch all ip addresses and handle the where clause with code. Also make some other changes to UI

Co-authored-by: Jordi Albert <63541019+jarg1023@users.noreply.github.com>
This commit is contained in:
Jordi Albert 2022-08-26 13:23:47 +02:00 committed by GitHub
parent e890bbf50d
commit e5286ee085
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 12 deletions

View File

@ -23,6 +23,7 @@ function getUsedIpsInNetwork(frm) {
frm.call('get_used_ips', {})
.then((response) => {
console.log(response);
const container = document.getElementById("usage-overview-table");
let tableBody = ``;
@ -37,13 +38,13 @@ function getUsedIpsInNetwork(frm) {
${(element?.ip_address === '') ? "-" : element?.ip_address}
</td>
<td
${element?.ip_address_name ? 'style="cursor: pointer; text-decoration: underline;"' : ''}
${(element?.it_object_name) ? 'style="cursor: pointer; text-decoration: underline;"' : ''}
data-doctype-name="${element?.it_object_name ?? ''}"
data-doctype-type="IT Object"
>
${(element?.title === '') ? __("no object assigned") : element?.title}
${(element?.title === '' || element?.title === null) ? __("no object assigned") : element?.title}
</td>
<td style="">${(element?.type === '') ? __("no type assigned") : element?.type}</td>
<td style="">${(element?.type === ''|| element?.type === null) ? __("no type assigned") : element?.type}</td>
</tr>
`;
});

View File

@ -10,35 +10,40 @@ from frappe.model.document import Document
class IPNetwork(Document):
@frappe.whitelist()
def get_used_ips(self):
values = {'ip_network': self.name, 'status': 'Decommissioned'}
result = []
result = frappe.db.sql("""
values = {'ip_network': self.name}
used_ips = []
used_ips = frappe.db.sql("""
SELECT
ipa.name as ip_address_name,
ipa.ip_address,
ito.name as it_object_name,
ito.title,
ito.type
ito.type,
ito.status
FROM `tabIP Address` ipa
LEFT JOIN `tabIT Object` ito
ON ipa.it_object = ito.name
WHERE ipa.ip_network = %(ip_network)s
AND ito.status != %(status)s
""", values=values, as_dict=1)
unused_status = ['Decommissioned']
for index, used_ip in enumerate(used_ips):
if used_ip['status'] in unused_status:
del used_ips[index]
for ip_network_reserved_range in self.ip_network_reserved_ranges_table:
result.append({
used_ips.append({
'ip_address': ip_network_reserved_range.start,
'title': ip_network_reserved_range.type,
'type': 'DHCP Range Start'
})
result.append({
used_ips.append({
'ip_address': ip_network_reserved_range.end,
'title': ip_network_reserved_range.type,
'type': 'DHCP Range End'
})
return result
return used_ips
@frappe.whitelist()
def calculate_network_data(doc):