Skip to content

Instantly share code, notes, and snippets.

@gdchamal
Created February 8, 2018 11:36
Show Gist options
  • Save gdchamal/2a07ee712085e811886cf90e08533066 to your computer and use it in GitHub Desktop.
Save gdchamal/2a07ee712085e811886cf90e08533066 to your computer and use it in GitHub Desktop.
class DeviceLocation(BaseModel):
"""Device defined location, based on IP address."""
user_id = columns.UUID(primary_key=True)
device_id = columns.UUID(primary_key=True)
address = columns.Text(primary_key=True) # IP address with CIDR
type = columns.Text() # home/work/etc
country = columns.Text()
class Device(BaseModel):
"""User device."""
user_id = columns.UUID(primary_key=True)
device_id = columns.UUID(primary_key=True, default=uuid.uuid4)
name = columns.Text()
date_insert = columns.DateTime(required=True,
default=datetime.datetime.now(tz=pytz.utc))
type = columns.Text(required=True) # laptop, desktop, smartphone, etc
status = columns.Text(default='unknown')
user_agent = columns.Text()
ip_creation = columns.Text()
privacy_features = columns.Map(columns.Text, columns.Text)
pi = columns.UserDefinedType(PIModel)
class DeviceConnectionLog(BaseModel):
"""Log a device connection."""
user_id = columns.UUID(primary_key=True)
device_id = columns.UUID(primary_key=True)
date_insert = columns.DateTime(primary_key=True,
default=datetime.datetime.now(tz=pytz.utc))
ip_address = columns.Text(required=True)
type = columns.Text() # Connection type (login/logout)
country = columns.Text() # Geoip detected country
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment