Skip to content

Commit

Permalink
convert strings values to appropriate types
Browse files Browse the repository at this point in the history
  • Loading branch information
livestalker committed Jun 29, 2017
1 parent ba99a55 commit 4150cdc
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 11 deletions.
4 changes: 2 additions & 2 deletions django_zabbix_api/backend/compiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def results_iter(self, results=None):
yield row

def _get_field_list(self):
return [k[0].field.column for k in self.select[0:self.col_count]]
return [(k[0].field.column, k[0].field) for k in self.select[0:self.col_count]]


def cursor_iter(cursor, fields, col_count):
Expand All @@ -86,4 +86,4 @@ def cursor_iter(cursor, fields, col_count):


def remap_results(rows, fields):
return [tuple([d.get(k, None) for k in fields]) for d in rows]
return [tuple([k[1].to_python(d.get(k[0], None)) for k in fields]) for d in rows]
15 changes: 15 additions & 0 deletions django_zabbix_api/fields.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from django_unixdatetimefield import UnixDateTimeField as BaseUnixDateTimeField
import datetime


class UnixDateTimeField(BaseUnixDateTimeField):
def to_python(self, val):
if val is None or isinstance(val, datetime.datetime):
return val
if isinstance(val, datetime.date):
return datetime.datetime(val.year, val.month, val.day)
else:
try:
return datetime.datetime.fromtimestamp(float(val))
except OSError:
return None
19 changes: 10 additions & 9 deletions django_zabbix_api/models.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,39 @@
from django.db import models
from .fields import UnixDateTimeField


class ZUser(models.Model):
hostid = models.TextField(primary_key=True, editable=False)
host = models.TextField()
available = models.IntegerField(editable=False) # TODO List of values
description = models.TextField()
disable_until = models.TimeField(editable=False) # TODO timestamp
disable_until = UnixDateTimeField(editable=False) # TODO timestamp
error = models.TextField(editable=False)
error_from = models.TimeField(editable=False) # TODO timestamp
error_from = UnixDateTimeField(editable=False) # TODO timestamp
flags = models.IntegerField(editable=False) # TODO List of values
inventory_mode = models.IntegerField() # TODO List of values
ipmi_authtype = models.IntegerField() # TODO List of values
ipmi_available = models.IntegerField(editable=False) # TODO List of values
ipmi_disable_until = models.TimeField(editable=False) # TODO timestamp
ipmi_disable_until = UnixDateTimeField(editable=False) # TODO timestamp
ipmi_error = models.TextField(editable=False)
ipmi_errors_from = models.TimeField(editable=False) # TODO timestamp
ipmi_errors_from = UnixDateTimeField(editable=False) # TODO timestamp
ipmi_password = models.TextField()
ipmi_privilege = models.IntegerField(editable=False) # TODO List of values
ipmi_username = models.TextField()
jmx_available = models.IntegerField(editable=False) # TODO List of values
jmx_disable_until = models.TimeField(editable=False) # TODO timestamp
jmx_disable_until = UnixDateTimeField(editable=False) # TODO timestamp
jmx_error = models.TextField(editable=False) # TODO timestamp
jmx_errors_from = models.TimeField(editable=False) # TODO timestamp
maintenance_from = models.TimeField(editable=False) # TODO timestamp
jmx_errors_from = UnixDateTimeField(editable=False) # TODO timestamp
maintenance_from = UnixDateTimeField(editable=False) # TODO timestamp
maintenance_status = models.IntegerField(editable=False) # TODO List of values
maintenance_type = models.IntegerField(editable=False) # TODO List of values
maintenanceid = models.TextField(editable=False) # TODO timestamp
name = models.TextField()
proxy_hostid = models.TextField()
snmp_available = models.IntegerField(editable=False) # TODO List of values
snmp_disable_until = models.TimeField(editable=False) # TODO timestamp
snmp_disable_until = UnixDateTimeField(editable=False) # TODO timestamp
snmp_error = models.TextField(editable=False) # TODO timestamp
snmp_errors_from = models.TimeField(editable=False) # TODO timestamp
snmp_errors_from = UnixDateTimeField(editable=False) # TODO timestamp
status = models.IntegerField() # TODO List of values
tls_connect = models.IntegerField() # TODO List of values
tls_accept = models.IntegerField() # TODO List of values
Expand Down

0 comments on commit 4150cdc

Please sign in to comment.