diff --git a/apps/assets/migrations/0002_auto_20180105_1807_squashed_0009_auto_20180307_1212.py b/apps/assets/migrations/0002_auto_20180105_1807_squashed_0009_auto_20180307_1212.py new file mode 100644 index 000000000..7cbf78a43 --- /dev/null +++ b/apps/assets/migrations/0002_auto_20180105_1807_squashed_0009_auto_20180307_1212.py @@ -0,0 +1,158 @@ +# Generated by Django 2.1.7 on 2019-02-28 10:16 + +import assets.models.asset +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + replaces = [('assets', '0002_auto_20180105_1807'), ('assets', '0003_auto_20180109_2331'), ('assets', '0004_auto_20180125_1218'), ('assets', '0005_auto_20180126_1637'), ('assets', '0006_auto_20180130_1502'), ('assets', '0007_auto_20180225_1815'), ('assets', '0008_auto_20180306_1804'), ('assets', '0009_auto_20180307_1212')] + + dependencies = [ + ('assets', '0001_initial'), + ] + + operations = [ + migrations.AlterModelOptions( + name='adminuser', + options={'ordering': ['name'], 'verbose_name': 'Admin user'}, + ), + migrations.AlterModelOptions( + name='asset', + options={'verbose_name': 'Asset'}, + ), + migrations.AlterModelOptions( + name='assetgroup', + options={'ordering': ['name'], 'verbose_name': 'Asset group'}, + ), + migrations.AlterModelOptions( + name='cluster', + options={'ordering': ['name'], 'verbose_name': 'Cluster'}, + ), + migrations.AlterModelOptions( + name='systemuser', + options={'ordering': ['name'], 'verbose_name': 'System user'}, + ), + migrations.RemoveField( + model_name='asset', + name='cluster', + ), + migrations.AlterField( + model_name='assetgroup', + name='created_by', + field=models.CharField(blank=True, max_length=32, null=True, verbose_name='Created by'), + ), + migrations.CreateModel( + name='Label', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=128, verbose_name='Name')), + ('value', models.CharField(max_length=128, verbose_name='Value')), + ('category', models.CharField(choices=[('S', 'System'), ('U', 'User')], default='U', max_length=128, verbose_name='Category')), + ('is_active', models.BooleanField(default=True, verbose_name='Is active')), + ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')), + ('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), + ], + options={ + 'db_table': 'assets_label', + }, + ), + migrations.AlterUniqueTogether( + name='label', + unique_together={('name', 'value')}, + ), + migrations.AddField( + model_name='asset', + name='labels', + field=models.ManyToManyField(blank=True, related_name='assets', to='assets.Label', verbose_name='Labels'), + ), + migrations.RemoveField( + model_name='asset', + name='cabinet_no', + ), + migrations.RemoveField( + model_name='asset', + name='cabinet_pos', + ), + migrations.RemoveField( + model_name='asset', + name='env', + ), + migrations.RemoveField( + model_name='asset', + name='remote_card_ip', + ), + migrations.RemoveField( + model_name='asset', + name='status', + ), + migrations.RemoveField( + model_name='asset', + name='type', + ), + migrations.CreateModel( + name='Node', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('key', models.CharField(max_length=64, unique=True, verbose_name='Key')), + ('value', models.CharField(max_length=128, verbose_name='Value')), + ('child_mark', models.IntegerField(default=0)), + ('date_create', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.RemoveField( + model_name='asset', + name='groups', + ), + migrations.RemoveField( + model_name='systemuser', + name='cluster', + ), + migrations.AlterField( + model_name='asset', + name='admin_user', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='assets.AdminUser', verbose_name='Admin user'), + ), + migrations.AlterField( + model_name='systemuser', + name='protocol', + field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp')], default='ssh', max_length=16, verbose_name='Protocol'), + ), + migrations.AddField( + model_name='asset', + name='nodes', + field=models.ManyToManyField(default=assets.models.asset.default_node, related_name='assets', to='assets.Node', verbose_name='Nodes'), + ), + migrations.AddField( + model_name='systemuser', + name='nodes', + field=models.ManyToManyField(blank=True, to='assets.Node', verbose_name='Nodes'), + ), + migrations.AlterField( + model_name='adminuser', + name='created_by', + field=models.CharField(max_length=128, null=True, verbose_name='Created by'), + ), + migrations.AlterField( + model_name='adminuser', + name='username', + field=models.CharField(max_length=128, verbose_name='Username'), + ), + migrations.AlterField( + model_name='asset', + name='platform', + field=models.CharField(choices=[('Linux', 'Linux'), ('Unix', 'Unix'), ('MacOS', 'MacOS'), ('BSD', 'BSD'), ('Windows', 'Windows'), ('Other', 'Other')], default='Linux', max_length=128, verbose_name='Platform'), + ), + migrations.AlterField( + model_name='systemuser', + name='created_by', + field=models.CharField(max_length=128, null=True, verbose_name='Created by'), + ), + migrations.AlterField( + model_name='systemuser', + name='username', + field=models.CharField(max_length=128, verbose_name='Username'), + ), + ] diff --git a/apps/assets/migrations/0010_auto_20180307_1749_squashed_0019_auto_20180816_1320.py b/apps/assets/migrations/0010_auto_20180307_1749_squashed_0019_auto_20180816_1320.py new file mode 100644 index 000000000..364e36d1f --- /dev/null +++ b/apps/assets/migrations/0010_auto_20180307_1749_squashed_0019_auto_20180816_1320.py @@ -0,0 +1,220 @@ +# Generated by Django 2.1.7 on 2019-02-28 10:16 + +import assets.models.utils +import django.core.validators +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +# Functions from the following migrations need manual copying. +# Move them and any dependencies into this file, then update the +# RunPython operations to refer to the local versions: +# assets.migrations.0017_auto_20180702_1415 + +def migrate_win_to_ssh_protocol(apps, schema_editor): + asset_model = apps.get_model("assets", "Asset") + db_alias = schema_editor.connection.alias + asset_model.objects.using(db_alias).filter(platform__startswith='Win').update(protocol='rdp') + + +class Migration(migrations.Migration): + + replaces = [('assets', '0010_auto_20180307_1749'), ('assets', '0011_auto_20180326_0957'), ('assets', '0012_auto_20180404_1302'), ('assets', '0013_auto_20180411_1135'), ('assets', '0014_auto_20180427_1245'), ('assets', '0015_auto_20180510_1235'), ('assets', '0016_auto_20180511_1203'), ('assets', '0017_auto_20180702_1415'), ('assets', '0018_auto_20180807_1116'), ('assets', '0019_auto_20180816_1320')] + + dependencies = [ + ('assets', '0009_auto_20180307_1212'), + ] + + operations = [ + migrations.AlterField( + model_name='node', + name='value', + field=models.CharField(max_length=128, unique=True, verbose_name='Value'), + ), + migrations.CreateModel( + name='Domain', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), + ('comment', models.TextField(blank=True, verbose_name='Comment')), + ('date_created', models.DateTimeField(auto_now_add=True, null=True, verbose_name='Date created')), + ], + ), + migrations.CreateModel( + name='Gateway', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=128, unique=True, verbose_name='Name')), + ('username', models.CharField(blank=True, max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username')), + ('_password', models.CharField(blank=True, max_length=256, null=True, verbose_name='Password')), + ('_private_key', models.TextField(blank=True, max_length=4096, null=True, validators=[assets.models.utils.private_key_validator], verbose_name='SSH private key')), + ('_public_key', models.TextField(blank=True, max_length=4096, verbose_name='SSH public key')), + ('date_created', models.DateTimeField(auto_now_add=True)), + ('date_updated', models.DateTimeField(auto_now=True)), + ('created_by', models.CharField(max_length=128, null=True, verbose_name='Created by')), + ('ip', models.GenericIPAddressField(db_index=True, verbose_name='IP')), + ('port', models.IntegerField(default=22, verbose_name='Port')), + ('protocol', models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp')], default='ssh', max_length=16, verbose_name='Protocol')), + ('comment', models.CharField(blank=True, max_length=128, null=True, verbose_name='Comment')), + ('is_active', models.BooleanField(default=True, verbose_name='Is active')), + ('domain', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.Domain', verbose_name='Domain')), + ], + options={ + 'abstract': False, + }, + ), + migrations.AddField( + model_name='asset', + name='domain', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='assets', to='assets.Domain', verbose_name='Domain'), + ), + migrations.AddField( + model_name='systemuser', + name='assets', + field=models.ManyToManyField(blank=True, to='assets.Asset', verbose_name='Assets'), + ), + migrations.AlterField( + model_name='systemuser', + name='sudo', + field=models.TextField(default='/bin/whoami', verbose_name='Sudo'), + ), + migrations.AlterField( + model_name='adminuser', + name='username', + field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_-]*$', 'Special char not allowed')], verbose_name='Username'), + ), + migrations.AlterField( + model_name='systemuser', + name='username', + field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_-]*$', 'Special char not allowed')], verbose_name='Username'), + ), + migrations.AlterField( + model_name='adminuser', + name='username', + field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), + ), + migrations.AlterField( + model_name='systemuser', + name='username', + field=models.CharField(max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), + ), + migrations.AlterField( + model_name='node', + name='value', + field=models.CharField(max_length=128, verbose_name='Value'), + ), + migrations.AddField( + model_name='asset', + name='protocol', + field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp'), ('telnet', 'telnet (beta)')], default='ssh', max_length=128, verbose_name='Protocol'), + ), + migrations.AddField( + model_name='systemuser', + name='login_mode', + field=models.CharField(choices=[('auto', 'Automatic login'), ('manual', 'Manually login')], default='auto', max_length=10, verbose_name='Login mode'), + ), + migrations.AlterField( + model_name='adminuser', + name='username', + field=models.CharField(blank=True, max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), + ), + migrations.AlterField( + model_name='asset', + name='platform', + field=models.CharField(choices=[('Linux', 'Linux'), ('Unix', 'Unix'), ('MacOS', 'MacOS'), ('BSD', 'BSD'), ('Windows', 'Windows'), ('Windows2016', 'Windows(2016)'), ('Other', 'Other')], default='Linux', max_length=128, verbose_name='Platform'), + ), + migrations.AlterField( + model_name='systemuser', + name='protocol', + field=models.CharField(choices=[('ssh', 'ssh'), ('rdp', 'rdp'), ('telnet', 'telnet (beta)')], default='ssh', max_length=16, verbose_name='Protocol'), + ), + migrations.AlterField( + model_name='systemuser', + name='username', + field=models.CharField(blank=True, max_length=32, validators=[django.core.validators.RegexValidator('^[0-9a-zA-Z_@\\-\\.]*$', 'Special char not allowed')], verbose_name='Username'), + ), + migrations.RunPython( + code=migrate_win_to_ssh_protocol, + ), + migrations.AddField( + model_name='adminuser', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='asset', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='domain', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='gateway', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='label', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='node', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='systemuser', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AlterField( + model_name='adminuser', + name='name', + field=models.CharField(max_length=128, verbose_name='Name'), + ), + migrations.AlterField( + model_name='asset', + name='hostname', + field=models.CharField(max_length=128, verbose_name='Hostname'), + ), + migrations.AlterField( + model_name='gateway', + name='name', + field=models.CharField(max_length=128, verbose_name='Name'), + ), + migrations.AlterField( + model_name='systemuser', + name='name', + field=models.CharField(max_length=128, verbose_name='Name'), + ), + migrations.AlterUniqueTogether( + name='adminuser', + unique_together={('name', 'org_id')}, + ), + migrations.AddField( + model_name='asset', + name='cpu_vcpus', + field=models.IntegerField(null=True, verbose_name='CPU vcpus'), + ), + migrations.AlterUniqueTogether( + name='asset', + unique_together={('org_id', 'hostname')}, + ), + migrations.AlterUniqueTogether( + name='gateway', + unique_together={('name', 'org_id')}, + ), + migrations.AlterUniqueTogether( + name='systemuser', + unique_together={('name', 'org_id')}, + ), + migrations.AlterUniqueTogether( + name='label', + unique_together={('name', 'value', 'org_id')}, + ), + ] diff --git a/apps/audits/hands.py b/apps/audits/hands.py index 6ec72c288..ec51c5a2b 100644 --- a/apps/audits/hands.py +++ b/apps/audits/hands.py @@ -1,4 +1,2 @@ # -*- coding: utf-8 -*- # - -from users.models import LoginLog \ No newline at end of file diff --git a/apps/audits/migrations/0004_operatelog_passwordchangelog_userloginlog.py b/apps/audits/migrations/0004_operatelog_passwordchangelog_userloginlog.py index c538432de..a6002abca 100644 --- a/apps/audits/migrations/0004_operatelog_passwordchangelog_userloginlog.py +++ b/apps/audits/migrations/0004_operatelog_passwordchangelog_userloginlog.py @@ -38,14 +38,4 @@ class Migration(migrations.Migration): ('datetime', models.DateTimeField(auto_now=True)), ], ), - migrations.CreateModel( - name='UserLoginLog', - fields=[ - ], - options={ - 'proxy': True, - 'indexes': [], - }, - bases=('users.loginlog',), - ), ] diff --git a/apps/audits/migrations/0005_auto_20190228_1715.py b/apps/audits/migrations/0005_auto_20190228_1715.py new file mode 100644 index 000000000..70fc0a2c2 --- /dev/null +++ b/apps/audits/migrations/0005_auto_20190228_1715.py @@ -0,0 +1,39 @@ +# Generated by Django 2.1.7 on 2019-02-28 09:15 + +from django.db import migrations, models, connection +import django.utils.timezone +import uuid + + +class Migration(migrations.Migration): + + dependencies = [ + ('audits', '0004_operatelog_passwordchangelog_userloginlog'), + ] + + operations = [ + migrations.CreateModel( + name='UserLoginLog', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('username', models.CharField(max_length=128, verbose_name='Username')), + ('type', models.CharField(choices=[('W', 'Web'), ('T', 'Terminal')], max_length=2, verbose_name='Login type')), + ('ip', models.GenericIPAddressField(verbose_name='Login ip')), + ('city', models.CharField(blank=True, max_length=254, null=True, verbose_name='Login city')), + ('user_agent', models.CharField(blank=True, max_length=254, null=True, verbose_name='User agent')), + ('mfa', models.SmallIntegerField(choices=[(0, 'Disabled'), (1, 'Enabled'), (2, '-')], default=2, verbose_name='MFA')), + ('reason', models.SmallIntegerField(choices=[(0, '-'), (1, 'Username/password check failed'), (2, 'MFA authentication failed'), (3, 'Username does not exist'), (4, 'Password expired')], default=0, verbose_name='Reason')), + ('status', models.BooleanField(choices=[(True, 'Success'), (False, 'Failed')], default=True, max_length=2, verbose_name='Status')), + ('datetime', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Date login')), + ], + options={ + 'ordering': ['-datetime', 'username'], + }, + ), + ] + drop_table_sql = "DROP TABLE audits_userloginlog" + rename_table_sql = "RENAME TABLE users_loginlog TO audits_userloginlog" + table_exist = 'users_loginlog' in connection.introspection.table_names() + if table_exist: + operations.append(migrations.RunSQL(drop_table_sql)) + operations.append(migrations.RunSQL(rename_table_sql)) diff --git a/apps/audits/models.py b/apps/audits/models.py index bc4b6960a..7e2302bb4 100644 --- a/apps/audits/models.py +++ b/apps/audits/models.py @@ -2,9 +2,9 @@ import uuid from django.db import models from django.utils.translation import ugettext_lazy as _ +from django.utils import timezone from orgs.mixins import OrgModelMixin -from .hands import LoginLog __all__ = [ 'FTPLog', 'OperateLog', 'PasswordChangeLog', 'UserLoginLog', @@ -55,6 +55,50 @@ class PasswordChangeLog(models.Model): return "{} change {}'s password".format(self.change_by, self.user) -class UserLoginLog(LoginLog): +class UserLoginLog(models.Model): + LOGIN_TYPE_CHOICE = ( + ('W', 'Web'), + ('T', 'Terminal'), + ) + + MFA_DISABLED = 0 + MFA_ENABLED = 1 + MFA_UNKNOWN = 2 + + MFA_CHOICE = ( + (MFA_DISABLED, _('Disabled')), + (MFA_ENABLED, _('Enabled')), + (MFA_UNKNOWN, _('-')), + ) + + REASON_NOTHING = 0 + REASON_PASSWORD = 1 + REASON_MFA = 2 + REASON_NOT_EXIST = 3 + REASON_PASSWORD_EXPIRED = 4 + + REASON_CHOICE = ( + (REASON_NOTHING, _('-')), + (REASON_PASSWORD, _('Username/password check failed')), + (REASON_MFA, _('MFA authentication failed')), + (REASON_NOT_EXIST, _("Username does not exist")), + (REASON_PASSWORD_EXPIRED, _("Password expired")), + ) + + STATUS_CHOICE = ( + (True, _('Success')), + (False, _('Failed')) + ) + id = models.UUIDField(default=uuid.uuid4, primary_key=True) + username = models.CharField(max_length=128, verbose_name=_('Username')) + type = models.CharField(choices=LOGIN_TYPE_CHOICE, max_length=2, verbose_name=_('Login type')) + ip = models.GenericIPAddressField(verbose_name=_('Login ip')) + city = models.CharField(max_length=254, blank=True, null=True, verbose_name=_('Login city')) + user_agent = models.CharField(max_length=254, blank=True, null=True, verbose_name=_('User agent')) + mfa = models.SmallIntegerField(default=MFA_UNKNOWN, choices=MFA_CHOICE, verbose_name=_('MFA')) + reason = models.SmallIntegerField(default=0, choices=REASON_CHOICE, verbose_name=_('Reason')) + status = models.BooleanField(max_length=2, default=True, choices=STATUS_CHOICE, verbose_name=_('Status')) + datetime = models.DateTimeField(default=timezone.now, verbose_name=_('Date login')) + class Meta: - proxy = True + ordering = ['-datetime', 'username'] diff --git a/apps/audits/tasks.py b/apps/audits/tasks.py new file mode 100644 index 000000000..90d8f47db --- /dev/null +++ b/apps/audits/tasks.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# +import datetime +from django.utils import timezone +from django.conf import settings +from celery import shared_task + +from ops.celery.decorator import register_as_period_task +from .models import UserLoginLog + + +@register_as_period_task(interval=3600*24) +@shared_task +def clean_login_log_period(): + now = timezone.now() + try: + days = int(settings.LOGIN_LOG_KEEP_DAYS) + except ValueError: + days = 90 + expired_day = now - datetime.timedelta(days=days) + UserLoginLog.objects.filter(datetime__lt=expired_day).delete() diff --git a/apps/audits/views.py b/apps/audits/views.py index b19514e9b..a862ca066 100644 --- a/apps/audits/views.py +++ b/apps/audits/views.py @@ -8,7 +8,6 @@ from common.permissions import AdminUserRequiredMixin from orgs.utils import current_org from ops.views import CommandExecutionListView as UserCommandExecutionListView -from users.models import User from .models import FTPLog, OperateLog, PasswordChangeLog, UserLoginLog diff --git a/apps/authentication/api/__init__.py b/apps/authentication/api/__init__.py new file mode 100644 index 000000000..0e8a44178 --- /dev/null +++ b/apps/authentication/api/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# + +from .auth import * diff --git a/apps/users/api/auth.py b/apps/authentication/api/auth.py similarity index 57% rename from apps/users/api/auth.py rename to apps/authentication/api/auth.py index c4ed7ff3a..2d9cfe367 100644 --- a/apps/users/api/auth.py +++ b/apps/authentication/api/auth.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # + import uuid from django.core.cache import cache @@ -14,16 +15,21 @@ from rest_framework.views import APIView from common.utils import get_logger, get_request_ip from common.permissions import IsOrgAdminOrAppUser from orgs.mixins import RootOrgViewMixin -from ..serializers import UserSerializer -from ..tasks import write_login_log_async -from ..models import User, LoginLog -from ..utils import check_user_valid, check_otp_code, \ - increase_login_failed_count, is_block_login, \ - clean_failed_count -from ..hands import Asset, SystemUser +from users.serializers import UserSerializer +from users.models import User +from assets.models import Asset, SystemUser +from audits.models import UserLoginLog as LoginLog +from users.utils import ( + check_user_valid, check_otp_code, increase_login_failed_count, + is_block_login, clean_failed_count +) +from ..signals import post_auth_success, post_auth_failed logger = get_logger(__name__) +__all__ = [ + 'UserAuthApi', 'UserConnectionTokenApi', 'UserOtpAuthApi', +] class UserAuthApi(RootOrgViewMixin, APIView): @@ -46,37 +52,22 @@ class UserAuthApi(RootOrgViewMixin, APIView): username = request.data.get('username', '') exist = User.objects.filter(username=username).first() reason = LoginLog.REASON_PASSWORD if exist else LoginLog.REASON_NOT_EXIST - data = { - 'username': username, - 'mfa': LoginLog.MFA_UNKNOWN, - 'reason': reason, - 'status': False - } - self.write_login_log(request, data) + self.send_auth_signal(success=False, username=username, reason=reason) increase_login_failed_count(username, ip) return Response({'msg': msg}, status=401) if user.password_has_expired: - data = { - 'username': user.username, - 'mfa': int(user.otp_enabled), - 'reason': LoginLog.REASON_PASSWORD_EXPIRED, - 'status': False - } - self.write_login_log(request, data) + self.send_auth_signal( + success=False, username=username, + reason=LoginLog.REASON_PASSWORD_EXPIRED + ) msg = _("The user {} password has expired, please update.".format( user.username)) logger.info(msg) return Response({'msg': msg}, status=401) if not user.otp_enabled: - data = { - 'username': user.username, - 'mfa': int(user.otp_enabled), - 'reason': LoginLog.REASON_NOTHING, - 'status': True - } - self.write_login_log(request, data) + self.send_auth_signal(success=True, user=user) # 登陆成功,清除原来的缓存计数 clean_failed_count(username, ip) token = user.create_bearer_token(request) @@ -91,7 +82,7 @@ class UserAuthApi(RootOrgViewMixin, APIView): 'code': 101, 'msg': _('Please carry seed value and ' 'conduct MFA secondary certification'), - 'otp_url': reverse('api-users:user-otp-auth'), + 'otp_url': reverse('api-auth:user-otp-auth'), 'seed': seed, 'user': self.serializer_class(user).data }, status=300 @@ -108,22 +99,14 @@ class UserAuthApi(RootOrgViewMixin, APIView): ) return user, msg - @staticmethod - def write_login_log(request, data): - login_ip = request.data.get('remote_addr', None) - login_type = request.data.get('login_type', '') - user_agent = request.data.get('HTTP_USER_AGENT', '') - - if not login_ip: - login_ip = get_request_ip(request) - - tmp_data = { - 'ip': login_ip, - 'type': login_type, - 'user_agent': user_agent, - } - data.update(tmp_data) - write_login_log_async.delay(**data) + def send_auth_signal(self, success=True, user=None, username='', reason=''): + if success: + post_auth_success.send(sender=self.__class__, user=user, request=self.request) + else: + post_auth_failed.send( + sender=self.__class__, username=username, + request=self.request, reason=reason + ) class UserConnectionTokenApi(RootOrgViewMixin, APIView): @@ -167,29 +150,6 @@ class UserConnectionTokenApi(RootOrgViewMixin, APIView): return super().get_permissions() -class UserToken(APIView): - permission_classes = (AllowAny,) - - def post(self, request): - if not request.user.is_authenticated: - username = request.data.get('username', '') - email = request.data.get('email', '') - password = request.data.get('password', '') - public_key = request.data.get('public_key', '') - - user, msg = check_user_valid( - username=username, email=email, - password=password, public_key=public_key) - else: - user = request.user - msg = None - if user: - token = user.create_bearer_token(request) - return Response({'Token': token, 'Keyword': 'Bearer'}, status=200) - else: - return Response({'error': msg}, status=406) - - class UserOtpAuthApi(RootOrgViewMixin, APIView): permission_classes = (AllowAny,) serializer_class = UserSerializer @@ -197,52 +157,25 @@ class UserOtpAuthApi(RootOrgViewMixin, APIView): def post(self, request): otp_code = request.data.get('otp_code', '') seed = request.data.get('seed', '') - user = cache.get(seed, None) if not user: return Response( {'msg': _('Please verify the user name and password first')}, status=401 ) - if not check_otp_code(user.otp_secret_key, otp_code): - data = { - 'username': user.username, - 'mfa': int(user.otp_enabled), - 'reason': LoginLog.REASON_MFA, - 'status': False - } - self.write_login_log(request, data) + self.send_auth_signal(success=False, username=user.username, reason=LoginLog.REASON_MFA) return Response({'msg': _('MFA certification failed')}, status=401) - - data = { - 'username': user.username, - 'mfa': int(user.otp_enabled), - 'reason': LoginLog.REASON_NOTHING, - 'status': True - } - self.write_login_log(request, data) + self.send_auth_signal(success=True, user=user) token = user.create_bearer_token(request) - return Response( - { - 'token': token, - 'user': self.serializer_class(user).data - } - ) + data = {'token': token, 'user': self.serializer_class(user).data} + return Response(data) - @staticmethod - def write_login_log(request, data): - login_ip = request.data.get('remote_addr', None) - login_type = request.data.get('login_type', '') - user_agent = request.data.get('HTTP_USER_AGENT', '') - - if not login_ip: - login_ip = get_request_ip(request) - - tmp_data = { - 'ip': login_ip, - 'type': login_type, - 'user_agent': user_agent - } - data.update(tmp_data) - write_login_log_async.delay(**data) + def send_auth_signal(self, success=True, user=None, username='', reason=''): + if success: + post_auth_success.send(sender=self.__class__, user=user, request=self.request) + else: + post_auth_failed.send( + sender=self.__class__, username=username, + request=self.request, reason=reason + ) diff --git a/apps/authentication/radius/__init__.py b/apps/authentication/backends/__init__.py similarity index 100% rename from apps/authentication/radius/__init__.py rename to apps/authentication/backends/__init__.py diff --git a/apps/users/authentication.py b/apps/authentication/backends/api.py similarity index 95% rename from apps/users/authentication.py rename to apps/authentication/backends/api.py index 5faa7bb60..75b9bdb3f 100644 --- a/apps/users/authentication.py +++ b/apps/authentication/backends/api.py @@ -8,13 +8,13 @@ from django.core.cache import cache from django.conf import settings from django.utils.translation import ugettext as _ from django.utils.six import text_type -from django.utils.translation import ugettext_lazy as _ +from django.contrib.auth import get_user_model from rest_framework import HTTP_HEADER_ENCODING from rest_framework import authentication, exceptions from rest_framework.authentication import CSRFCheck from common.utils import get_object_or_none, make_signature, http_to_unixtime -from .models import User, AccessKey, PrivateToken +from ..models import AccessKey, PrivateToken def get_request_date_header(request): @@ -42,7 +42,6 @@ class AccessKeyAuthentication(authentication.BaseAuthentication): 失败 """ keyword = 'Sign' - model = AccessKey def authenticate(self, request): auth = authentication.get_authorization_header(request).split() @@ -109,7 +108,7 @@ class AccessKeyAuthentication(authentication.BaseAuthentication): class AccessTokenAuthentication(authentication.BaseAuthentication): keyword = 'Bearer' - model = User + model = get_user_model() expiration = settings.TOKEN_EXPIRATION or 3600 def authenticate(self, request): @@ -133,10 +132,9 @@ class AccessTokenAuthentication(authentication.BaseAuthentication): raise exceptions.AuthenticationFailed(msg) return self.authenticate_credentials(token) - @staticmethod - def authenticate_credentials(token): + def authenticate_credentials(self, token): user_id = cache.get(token) - user = get_object_or_none(User, id=user_id) + user = get_object_or_none(self.model, id=user_id) if not user: msg = _('Invalid token or cache refreshed.') diff --git a/apps/authentication/ldap/backends.py b/apps/authentication/backends/ldap.py similarity index 98% rename from apps/authentication/ldap/backends.py rename to apps/authentication/backends/ldap.py index 7fcccc046..49240f068 100644 --- a/apps/authentication/ldap/backends.py +++ b/apps/authentication/backends/ldap.py @@ -16,6 +16,8 @@ class LDAPAuthorizationBackend(LDAPBackend): """ def authenticate(self, request=None, username=None, password=None, **kwargs): + if not username: + return None ldap_user = LDAPUser(self, username=username.strip(), request=request) user = self.authenticate_ldap_user(ldap_user, password) return user diff --git a/apps/authentication/backends/openid/__init__.py b/apps/authentication/backends/openid/__init__.py new file mode 100644 index 000000000..2deaf3cae --- /dev/null +++ b/apps/authentication/backends/openid/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# + +from .backends import * +from .middleware import * +from .utils import * diff --git a/apps/authentication/openid/backends.py b/apps/authentication/backends/openid/backends.py similarity index 92% rename from apps/authentication/openid/backends.py rename to apps/authentication/backends/openid/backends.py index 15a758acc..aeb611db5 100644 --- a/apps/authentication/openid/backends.py +++ b/apps/authentication/backends/openid/backends.py @@ -4,16 +4,19 @@ from django.contrib.auth import get_user_model from django.conf import settings -from . import client from common.utils import get_logger -from authentication.openid.models import OIDT_ACCESS_TOKEN +from .utils import new_client +from .models import OIDT_ACCESS_TOKEN UserModel = get_user_model() logger = get_logger(__file__) +client = new_client() -BACKEND_OPENID_AUTH_CODE = \ - 'authentication.openid.backends.OpenIDAuthorizationCodeBackend' + +__all__ = [ + 'OpenIDAuthorizationCodeBackend', 'OpenIDAuthorizationPasswordBackend', +] class BaseOpenIDAuthorizationBackend(object): @@ -72,7 +75,6 @@ class OpenIDAuthorizationPasswordBackend(BaseOpenIDAuthorizationBackend): if not settings.AUTH_OPENID: return None - elif not username: return None diff --git a/apps/authentication/openid/middleware.py b/apps/authentication/backends/openid/middleware.py similarity index 70% rename from apps/authentication/openid/middleware.py rename to apps/authentication/backends/openid/middleware.py index 128b20984..df5ee93c1 100644 --- a/apps/authentication/openid/middleware.py +++ b/apps/authentication/backends/openid/middleware.py @@ -6,12 +6,13 @@ from django.contrib.auth import logout from django.utils.deprecation import MiddlewareMixin from django.contrib.auth import BACKEND_SESSION_KEY -from . import client from common.utils import get_logger -from .backends import BACKEND_OPENID_AUTH_CODE -from authentication.openid.models import OIDT_ACCESS_TOKEN +from .utils import new_client +from .models import OIDT_ACCESS_TOKEN +BACKEND_OPENID_AUTH_CODE = 'OpenIDAuthorizationCodeBackend' logger = get_logger(__file__) +__all__ = ['OpenIDAuthenticationMiddleware'] class OpenIDAuthenticationMiddleware(MiddlewareMixin): @@ -20,22 +21,22 @@ class OpenIDAuthenticationMiddleware(MiddlewareMixin): """ def process_request(self, request): - # Don't need openid auth if AUTH_OPENID is False if not settings.AUTH_OPENID: return - # Don't need check single logout if user not authenticated if not request.user.is_authenticated: return - - elif request.session[BACKEND_SESSION_KEY] != BACKEND_OPENID_AUTH_CODE: + elif request.session[BACKEND_SESSION_KEY].endswith( + BACKEND_OPENID_AUTH_CODE): return # Check openid user single logout or not with access_token + client = new_client() try: client.openid_connect_client.userinfo( - token=request.session.get(OIDT_ACCESS_TOKEN)) + token=request.session.get(OIDT_ACCESS_TOKEN) + ) except Exception as e: logout(request) diff --git a/apps/authentication/openid/models.py b/apps/authentication/backends/openid/models.py similarity index 92% rename from apps/authentication/openid/models.py rename to apps/authentication/backends/openid/models.py index e3c0a4842..fd75ed870 100644 --- a/apps/authentication/openid/models.py +++ b/apps/authentication/backends/openid/models.py @@ -5,7 +5,8 @@ from django.db import transaction from django.contrib.auth import get_user_model from keycloak.realm import KeycloakRealm from keycloak.keycloak_openid import KeycloakOpenID -from ..signals import post_create_openid_user + +from .signals import post_create_openid_user OIDT_ACCESS_TOKEN = 'oidt_access_token' @@ -38,10 +39,6 @@ class Client(object): self.openid_connect_client = self.new_openid_connect_client() def new_realm(self): - """ - :param authentication.openid.models.Realm realm: - :return keycloak.realm.Realm: - """ return KeycloakRealm( server_url=self.server_url, realm_name=self.realm_name, @@ -76,7 +73,7 @@ class Client(object): :param str username: authentication username :param str password: authentication password - :return: authentication.models.OpenIDTokenProfile + :return: OpenIDTokenProfile """ token_response = self.openid_client.token( username=username, password=password @@ -93,7 +90,7 @@ class Client(object): :param str code: authentication code :param str redirect_uri: - :rtype: authentication.models.OpenIDTokenProfile + :rtype: OpenIDTokenProfile """ token_response = self.openid_connect_client.authorization_code( @@ -114,7 +111,7 @@ class Client(object): - refresh_expires_in :param dict token_response: - :rtype: authentication.openid.models.OpenIDTokenProfile + :rtype: OpenIDTokenProfile """ userinfo = self.openid_connect_client.userinfo( diff --git a/apps/authentication/backends/openid/signals.py b/apps/authentication/backends/openid/signals.py new file mode 100644 index 000000000..d5e57a005 --- /dev/null +++ b/apps/authentication/backends/openid/signals.py @@ -0,0 +1,5 @@ +from django.dispatch import Signal + + +post_create_openid_user = Signal(providing_args=('user',)) +post_openid_login_success = Signal(providing_args=('user', 'request')) diff --git a/apps/authentication/openid/tests.py b/apps/authentication/backends/openid/tests.py similarity index 100% rename from apps/authentication/openid/tests.py rename to apps/authentication/backends/openid/tests.py diff --git a/apps/authentication/backends/openid/urls.py b/apps/authentication/backends/openid/urls.py new file mode 100644 index 000000000..019529e12 --- /dev/null +++ b/apps/authentication/backends/openid/urls.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# +from django.urls import path + +from . import views + +urlpatterns = [ + path('login/', views.OpenIDLoginView.as_view(), name='openid-login'), + path('login/complete/', views.OpenIDLoginCompleteView.as_view(), + name='openid-login-complete'), +] diff --git a/apps/authentication/openid/__init__.py b/apps/authentication/backends/openid/utils.py similarity index 94% rename from apps/authentication/openid/__init__.py rename to apps/authentication/backends/openid/utils.py index bc4c753ca..15160d224 100644 --- a/apps/authentication/openid/__init__.py +++ b/apps/authentication/backends/openid/utils.py @@ -4,6 +4,8 @@ from django.conf import settings from .models import Client +__all__ = ['new_client'] + def new_client(): """ @@ -15,6 +17,3 @@ def new_client(): client_id=settings.AUTH_OPENID_CLIENT_ID, client_secret=settings.AUTH_OPENID_CLIENT_SECRET ) - - -client = new_client() diff --git a/apps/authentication/openid/views.py b/apps/authentication/backends/openid/views.py similarity index 64% rename from apps/authentication/openid/views.py rename to apps/authentication/backends/openid/views.py index 9aeb0bf7b..45b5bfe23 100644 --- a/apps/authentication/openid/views.py +++ b/apps/authentication/backends/openid/views.py @@ -3,7 +3,6 @@ import logging -from django.urls import reverse from django.conf import settings from django.core.cache import cache from django.views.generic.base import RedirectView @@ -14,43 +13,35 @@ from django.http.response import ( HttpResponseRedirect ) -from . import client +from .utils import new_client from .models import Nonce -from users.models import LoginLog -from users.tasks import write_login_log_async -from common.utils import get_request_ip +from .signals import post_openid_login_success logger = logging.getLogger(__name__) +client = new_client() + +__all__ = ['OpenIDLoginView', 'OpenIDLoginCompleteView'] -def get_base_site_url(): - return settings.BASE_SITE_URL - - -class LoginView(RedirectView): +class OpenIDLoginView(RedirectView): def get_redirect_url(self, *args, **kwargs): + redirect_uri = settings.BASE_SITE_URL + str(settings.LOGIN_COMPLETE_URL) nonce = Nonce( - redirect_uri=get_base_site_url() + reverse( - "authentication:openid-login-complete"), - + redirect_uri=redirect_uri, next_path=self.request.GET.get('next') ) - cache.set(str(nonce.state), nonce, 24*3600) - self.request.session['openid_state'] = str(nonce.state) - authorization_url = client.openid_connect_client.\ authorization_url( redirect_uri=nonce.redirect_uri, scope='code', state=str(nonce.state) ) - return authorization_url -class LoginCompleteView(RedirectView): +class OpenIDLoginCompleteView(RedirectView): def get(self, request, *args, **kwargs): if 'error' in request.GET: @@ -79,24 +70,8 @@ class LoginCompleteView(RedirectView): return HttpResponseBadRequest() login(self.request, user) - - data = { - 'username': user.username, - 'mfa': int(user.otp_enabled), - 'reason': LoginLog.REASON_NOTHING, - 'status': True - } - self.write_login_log(data) - + post_openid_login_success.send( + sender=self.__class__, user=user, request=self.request + ) return HttpResponseRedirect(nonce.next_path or '/') - def write_login_log(self, data): - login_ip = get_request_ip(self.request) - user_agent = self.request.META.get('HTTP_USER_AGENT', '') - tmp_data = { - 'ip': login_ip, - 'type': 'W', - 'user_agent': user_agent - } - data.update(tmp_data) - write_login_log_async.delay(**data) diff --git a/apps/authentication/radius/backends.py b/apps/authentication/backends/radius.py similarity index 100% rename from apps/authentication/radius/backends.py rename to apps/authentication/backends/radius.py diff --git a/apps/authentication/const.py b/apps/authentication/const.py new file mode 100644 index 000000000..f19a64d9a --- /dev/null +++ b/apps/authentication/const.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# + + diff --git a/apps/authentication/forms.py b/apps/authentication/forms.py new file mode 100644 index 000000000..c722629db --- /dev/null +++ b/apps/authentication/forms.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# + +from django import forms +from django.contrib.auth.forms import AuthenticationForm +from django.utils.translation import gettext_lazy as _ +from captcha.fields import CaptchaField + + +class UserLoginForm(AuthenticationForm): + username = forms.CharField(label=_('Username'), max_length=100) + password = forms.CharField( + label=_('Password'), widget=forms.PasswordInput, + max_length=128, strip=False + ) + + def confirm_login_allowed(self, user): + if not user.is_staff: + raise forms.ValidationError( + self.error_messages['inactive'], + code='inactive',) + + +class UserLoginCaptchaForm(UserLoginForm): + captcha = CaptchaField() + + +class UserCheckOtpCodeForm(forms.Form): + otp_code = forms.CharField(label=_('MFA code'), max_length=6) diff --git a/apps/authentication/ldap/__init__.py b/apps/authentication/ldap/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/authentication/migrations/0001_initial.py b/apps/authentication/migrations/0001_initial.py new file mode 100644 index 000000000..f1c5f4710 --- /dev/null +++ b/apps/authentication/migrations/0001_initial.py @@ -0,0 +1,51 @@ +# Generated by Django 2.1.7 on 2019-02-28 08:07 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import uuid + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='AccessKey', + fields=[ + ('id', + models.UUIDField(default=uuid.uuid4, editable=False, + primary_key=True, serialize=False, + verbose_name='AccessKeyID')), + ('secret', + models.UUIDField(default=uuid.uuid4, editable=False, + verbose_name='AccessKeySecret')), + ('user', models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='access_keys', + to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + ), + migrations.CreateModel( + name='PrivateToken', + fields=[ + ('key', + models.CharField(max_length=40, primary_key=True, + serialize=False, verbose_name='Key')), + ('created', models.DateTimeField(auto_now_add=True, + verbose_name='Created')), + ('user', models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name='auth_token', + to=settings.AUTH_USER_MODEL, verbose_name='User')), + ], + options={ + 'verbose_name': 'Private Token', + }, + ), + ] diff --git a/apps/authentication/migrations/__init__.py b/apps/authentication/migrations/__init__.py new file mode 100644 index 000000000..ec51c5a2b --- /dev/null +++ b/apps/authentication/migrations/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +# diff --git a/apps/authentication/models.py b/apps/authentication/models.py index 8b1378917..e4e822408 100644 --- a/apps/authentication/models.py +++ b/apps/authentication/models.py @@ -1 +1,33 @@ +import uuid +from django.db import models +from django.utils.translation import ugettext_lazy as _ +from rest_framework.authtoken.models import Token +from django.conf import settings + +class AccessKey(models.Model): + id = models.UUIDField(verbose_name='AccessKeyID', primary_key=True, + default=uuid.uuid4, editable=False) + secret = models.UUIDField(verbose_name='AccessKeySecret', + default=uuid.uuid4, editable=False) + user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='User', + on_delete=models.CASCADE, related_name='access_keys') + + def get_id(self): + return str(self.id) + + def get_secret(self): + return str(self.secret) + + def get_full_value(self): + return '{}:{}'.format(self.id, self.secret) + + def __str__(self): + return str(self.id) + + +class PrivateToken(Token): + """Inherit from auth token, otherwise migration is boring""" + + class Meta: + verbose_name = _('Private Token') \ No newline at end of file diff --git a/apps/authentication/serializers.py b/apps/authentication/serializers.py new file mode 100644 index 000000000..cf4968a56 --- /dev/null +++ b/apps/authentication/serializers.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# +from rest_framework import serializers + +from .models import AccessKey + + +__all__ = ['AccessKeySerializer'] + + +class AccessKeySerializer(serializers.ModelSerializer): + + class Meta: + model = AccessKey + fields = ['id', 'secret'] + read_only_fields = ['id', 'secret'] diff --git a/apps/authentication/signals.py b/apps/authentication/signals.py index f33a3b821..0a305290c 100644 --- a/apps/authentication/signals.py +++ b/apps/authentication/signals.py @@ -1,4 +1,5 @@ from django.dispatch import Signal -post_create_openid_user = Signal(providing_args=('user',)) +post_auth_success = Signal(providing_args=('user', 'request')) +post_auth_failed = Signal(providing_args=('username', 'request', 'reason')) diff --git a/apps/authentication/signals_handlers.py b/apps/authentication/signals_handlers.py index d45ea1dfa..a0732894f 100644 --- a/apps/authentication/signals_handlers.py +++ b/apps/authentication/signals_handlers.py @@ -2,9 +2,16 @@ from django.http.request import QueryDict from django.conf import settings from django.dispatch import receiver from django.contrib.auth.signals import user_logged_out +from django.utils import timezone from django_auth_ldap.backend import populate_user -from .openid import client -from .signals import post_create_openid_user + +from common.utils import get_request_ip +from .backends.openid import new_client +from .backends.openid.signals import ( + post_create_openid_user, post_openid_login_success +) +from .tasks import write_login_log_async +from .signals import post_auth_success, post_auth_failed @receiver(user_logged_out) @@ -17,6 +24,7 @@ def on_user_logged_out(sender, request, user, **kwargs): 'redirect_uri': settings.BASE_SITE_URL }) + client = new_client() openid_logout_url = "%s?%s" % ( client.openid_connect_client.get_url( name='end_session_endpoint'), @@ -33,8 +41,46 @@ def on_post_create_openid_user(sender, user=None, **kwargs): user.save() +@receiver(post_openid_login_success) +def on_openid_login_success(sender, user=None, request=None, **kwargs): + post_auth_success.send(sender=sender, user=user, request=request) + + @receiver(populate_user) def on_ldap_create_user(sender, user, ldap_user, **kwargs): if user and user.name != 'admin': user.source = user.SOURCE_LDAP user.save() + + +def generate_data(username, request): + if not request.user.is_anonymous and request.user.is_app: + login_ip = request.data.get('remote_addr', None) + login_type = request.data.get('login_type', '') + user_agent = request.data.get('HTTP_USER_AGENT', '') + else: + login_ip = get_request_ip(request) + user_agent = request.META.get('HTTP_USER_AGENT', '') + login_type = 'W' + data = { + 'username': username, + 'ip': login_ip, + 'type': login_type, + 'user_agent': user_agent, + 'datetime': timezone.now() + } + return data + + +@receiver(post_auth_success) +def on_user_auth_success(sender, user, request, **kwargs): + data = generate_data(user.username, request) + data.update({'mfa': int(user.otp_enabled), 'status': True}) + write_login_log_async.delay(**data) + + +@receiver(post_auth_failed) +def on_user_auth_failed(sender, username, request, reason, **kwargs): + data = generate_data(username, request) + data.update({'reason': reason, 'status': False}) + write_login_log_async.delay(**data) diff --git a/apps/authentication/tasks.py b/apps/authentication/tasks.py new file mode 100644 index 000000000..1b37c7a01 --- /dev/null +++ b/apps/authentication/tasks.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# + +from celery import shared_task + +from .utils import write_login_log + + +@shared_task +def write_login_log_async(*args, **kwargs): + write_login_log(*args, **kwargs) diff --git a/apps/authentication/urls/api_urls.py b/apps/authentication/urls/api_urls.py index 8b1378917..b22c49884 100644 --- a/apps/authentication/urls/api_urls.py +++ b/apps/authentication/urls/api_urls.py @@ -1 +1,20 @@ +# coding:utf-8 +# + +from __future__ import absolute_import + +from django.urls import path + +from .. import api + +app_name = 'authentication' + + +urlpatterns = [ + # path('token/', api.UserToken.as_view(), name='user-token'), + path('auth/', api.UserAuthApi.as_view(), name='user-auth'), + path('connection-token/', + api.UserConnectionTokenApi.as_view(), name='connection-token'), + path('otp/auth/', api.UserOtpAuthApi.as_view(), name='user-otp-auth'), +] diff --git a/apps/authentication/urls/view_urls.py b/apps/authentication/urls/view_urls.py index 4d4e6753a..8602daca5 100644 --- a/apps/authentication/urls/view_urls.py +++ b/apps/authentication/urls/view_urls.py @@ -1,16 +1,20 @@ # coding:utf-8 # -from django.urls import path -from authentication.openid import views +from __future__ import absolute_import + +from django.urls import path, include + +from .. import views app_name = 'authentication' urlpatterns = [ # openid - path('openid/login/', views.LoginView.as_view(), name='openid-login'), - path('openid/login/complete/', views.LoginCompleteView.as_view(), - name='openid-login-complete'), + path('openid/', include(('authentication.backends.openid.urls', 'authentication'), namespace='openid')), - # other + # login + path('login/', views.UserLoginView.as_view(), name='login'), + path('login/otp/', views.UserLoginOtpView.as_view(), name='login-otp'), + path('logout/', views.UserLogoutView.as_view(), name='logout'), ] diff --git a/apps/authentication/utils.py b/apps/authentication/utils.py new file mode 100644 index 000000000..baf2fff31 --- /dev/null +++ b/apps/authentication/utils.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# +from django.utils.translation import ugettext as _ +from common.utils import get_ip_city, validate_ip + + +def write_login_log(*args, **kwargs): + from audits.models import UserLoginLog + default_city = _("Unknown") + ip = kwargs.get('ip', '') + if not (ip and validate_ip(ip)): + ip = ip[:15] + city = default_city + else: + city = get_ip_city(ip) or default_city + kwargs.update({'ip': ip, 'city': city}) + UserLoginLog.objects.create(**kwargs) + diff --git a/apps/authentication/views.py b/apps/authentication/views.py deleted file mode 100644 index 8b1378917..000000000 --- a/apps/authentication/views.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/apps/authentication/views/__init__.py b/apps/authentication/views/__init__.py new file mode 100644 index 000000000..5e7732adc --- /dev/null +++ b/apps/authentication/views/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# + +from .login import * diff --git a/apps/authentication/views/login.py b/apps/authentication/views/login.py new file mode 100644 index 000000000..89d647291 --- /dev/null +++ b/apps/authentication/views/login.py @@ -0,0 +1,208 @@ +# ~*~ coding: utf-8 ~*~ +# + +from __future__ import unicode_literals +import os +from django.core.cache import cache +from django.contrib.auth import login as auth_login, logout as auth_logout +from django.http import HttpResponse +from django.shortcuts import reverse, redirect +from django.utils.decorators import method_decorator +from django.utils.translation import ugettext as _ +from django.views.decorators.cache import never_cache +from django.views.decorators.csrf import csrf_protect +from django.views.decorators.debug import sensitive_post_parameters +from django.views.generic.base import TemplateView +from django.views.generic.edit import FormView +from django.conf import settings + +from common.utils import get_request_ip +from users.models import User +from audits.models import UserLoginLog as LoginLog +from users.utils import ( + check_otp_code, is_block_login, clean_failed_count, get_user_or_tmp_user, + set_tmp_user_to_cache, increase_login_failed_count, + redirect_user_first_login_or_index, +) +from ..signals import post_auth_success, post_auth_failed +from .. import forms + + +__all__ = [ + 'UserLoginView', 'UserLoginOtpView', 'UserLogoutView', +] + + +@method_decorator(sensitive_post_parameters(), name='dispatch') +@method_decorator(csrf_protect, name='dispatch') +@method_decorator(never_cache, name='dispatch') +class UserLoginView(FormView): + form_class = forms.UserLoginForm + form_class_captcha = forms.UserLoginCaptchaForm + redirect_field_name = 'next' + key_prefix_captcha = "_LOGIN_INVALID_{}" + + def get_template_names(self): + template_name = 'users/login.html' + if not settings.XPACK_ENABLED: + return template_name + + from xpack.plugins.license.models import License + if not License.has_valid_license(): + return template_name + + template_name = 'users/new_login.html' + return template_name + + def get(self, request, *args, **kwargs): + if request.user.is_staff: + return redirect(redirect_user_first_login_or_index( + request, self.redirect_field_name) + ) + request.session.set_test_cookie() + return super().get(request, *args, **kwargs) + + def post(self, request, *args, **kwargs): + # limit login authentication + ip = get_request_ip(request) + username = self.request.POST.get('username') + if is_block_login(username, ip): + return self.render_to_response(self.get_context_data(block_login=True)) + return super().post(request, *args, **kwargs) + + def form_valid(self, form): + if not self.request.session.test_cookie_worked(): + return HttpResponse(_("Please enable cookies and try again.")) + user = form.get_user() + # user password expired + if user.password_has_expired: + reason = LoginLog.REASON_PASSWORD_EXPIRED + self.send_auth_signal(success=False, username=user.username, reason=reason) + return self.render_to_response(self.get_context_data(password_expired=True)) + + set_tmp_user_to_cache(self.request, user) + username = form.cleaned_data.get('username') + ip = get_request_ip(self.request) + # 登陆成功,清除缓存计数 + clean_failed_count(username, ip) + return redirect(self.get_success_url()) + + def form_invalid(self, form): + # write login failed log + username = form.cleaned_data.get('username') + exist = User.objects.filter(username=username).first() + reason = LoginLog.REASON_PASSWORD if exist else LoginLog.REASON_NOT_EXIST + # limit user login failed count + ip = get_request_ip(self.request) + increase_login_failed_count(username, ip) + # show captcha + cache.set(self.key_prefix_captcha.format(ip), 1, 3600) + self.send_auth_signal(success=False, username=username, reason=reason) + + old_form = form + form = self.form_class_captcha(data=form.data) + form._errors = old_form.errors + return super().form_invalid(form) + + def get_form_class(self): + ip = get_request_ip(self.request) + if cache.get(self.key_prefix_captcha.format(ip)): + return self.form_class_captcha + else: + return self.form_class + + def get_success_url(self): + user = get_user_or_tmp_user(self.request) + + if user.otp_enabled and user.otp_secret_key: + # 1,2,mfa_setting & T + return reverse('authentication:login-otp') + elif user.otp_enabled and not user.otp_secret_key: + # 1,2,mfa_setting & F + return reverse('users:user-otp-enable-authentication') + elif not user.otp_enabled: + # 0 & T,F + auth_login(self.request, user) + self.send_auth_signal(success=True, user=user) + return redirect_user_first_login_or_index(self.request, self.redirect_field_name) + + def get_context_data(self, **kwargs): + context = { + 'demo_mode': os.environ.get("DEMO_MODE"), + 'AUTH_OPENID': settings.AUTH_OPENID, + } + kwargs.update(context) + return super().get_context_data(**kwargs) + + def send_auth_signal(self, success=True, user=None, username='', reason=''): + if success: + post_auth_success.send(sender=self.__class__, user=user, request=self.request) + else: + post_auth_failed.send( + sender=self.__class__, username=username, + request=self.request, reason=reason + ) + + +class UserLoginOtpView(FormView): + template_name = 'users/login_otp.html' + form_class = forms.UserCheckOtpCodeForm + redirect_field_name = 'next' + + def form_valid(self, form): + user = get_user_or_tmp_user(self.request) + otp_code = form.cleaned_data.get('otp_code') + otp_secret_key = user.otp_secret_key + + if check_otp_code(otp_secret_key, otp_code): + auth_login(self.request, user) + self.send_auth_signal(success=True, user=user) + return redirect(self.get_success_url()) + else: + self.send_auth_signal( + success=False, username=user.username, + reason=LoginLog.REASON_MFA + ) + form.add_error( + 'otp_code', _('MFA code invalid, or ntp sync server time') + ) + return super().form_invalid(form) + + def get_success_url(self): + return redirect_user_first_login_or_index(self.request, self.redirect_field_name) + + def send_auth_signal(self, success=True, user=None, username='', reason=''): + if success: + post_auth_success.send(sender=self.__class__, user=user, request=self.request) + else: + post_auth_failed.send( + sender=self.__class__, username=username, + request=self.request, reason=reason + ) + + +@method_decorator(never_cache, name='dispatch') +class UserLogoutView(TemplateView): + template_name = 'flash_message_standalone.html' + + def get(self, request, *args, **kwargs): + auth_logout(request) + next_uri = request.COOKIES.get("next") + if next_uri: + return redirect(next_uri) + response = super().get(request, *args, **kwargs) + return response + + def get_context_data(self, **kwargs): + context = { + 'title': _('Logout success'), + 'messages': _('Logout success, return login page'), + 'interval': 1, + 'redirect_url': reverse('authentication:login'), + 'auto_redirect': True, + } + kwargs.update(context) + return super().get_context_data(**kwargs) + + + diff --git a/apps/common/utils/__init__.py b/apps/common/utils/__init__.py new file mode 100644 index 000000000..802943072 --- /dev/null +++ b/apps/common/utils/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# + +from .common import * +from .django import * +from .encode import * +from .http import * +from .ipip import * diff --git a/apps/common/utils.py b/apps/common/utils/common.py similarity index 54% rename from apps/common/utils.py rename to apps/common/utils/common.py index 85f47ae00..dcd7daf16 100644 --- a/apps/common/utils.py +++ b/apps/common/utils/common.py @@ -1,104 +1,18 @@ # -*- coding: utf-8 -*- # import re -import sys from collections import OrderedDict -from six import string_types -import base64 -import os from itertools import chain import logging import datetime -import time -import hashlib -from email.utils import formatdate -import calendar -import threading -from io import StringIO import uuid from functools import wraps import copy - -import paramiko -import sshpubkeys -from itsdangerous import TimedJSONWebSignatureSerializer, JSONWebSignatureSerializer, \ - BadSignature, SignatureExpired -from django.shortcuts import reverse as dj_reverse -from django.conf import settings -from django.utils import timezone +import ipaddress UUID_PATTERN = re.compile(r'[0-9a-zA-Z\-]{36}') - - -def reverse(view_name, urlconf=None, args=None, kwargs=None, - current_app=None, external=False): - url = dj_reverse(view_name, urlconf=urlconf, args=args, - kwargs=kwargs, current_app=current_app) - - if external: - site_url = settings.SITE_URL - url = site_url.strip('/') + url - return url - - -def get_object_or_none(model, **kwargs): - try: - obj = model.objects.get(**kwargs) - except model.DoesNotExist: - return None - return obj - - -class Singleton(type): - def __init__(cls, *args, **kwargs): - cls.__instance = None - super().__init__(*args, **kwargs) - - def __call__(cls, *args, **kwargs): - if cls.__instance is None: - cls.__instance = super().__call__(*args, **kwargs) - return cls.__instance - else: - return cls.__instance - - -class Signer(metaclass=Singleton): - """用来加密,解密,和基于时间戳的方式验证token""" - def __init__(self, secret_key=None): - self.secret_key = secret_key - - def sign(self, value): - s = JSONWebSignatureSerializer(self.secret_key, algorithm_name='HS256') - return s.dumps(value).decode() - - def unsign(self, value): - if value is None: - return value - s = JSONWebSignatureSerializer(self.secret_key, algorithm_name='HS256') - try: - return s.loads(value) - except BadSignature: - return {} - - def sign_t(self, value, expires_in=3600): - s = TimedJSONWebSignatureSerializer(self.secret_key, expires_in=expires_in) - return str(s.dumps(value), encoding="utf8") - - def unsign_t(self, value): - s = TimedJSONWebSignatureSerializer(self.secret_key) - try: - return s.loads(value) - except (BadSignature, SignatureExpired): - return {} - - -def date_expired_default(): - try: - years = int(settings.DEFAULT_EXPIRED_YEARS) - except TypeError: - years = 70 - return timezone.now() + timezone.timedelta(days=365*years) +ipip_db = None def combine_seq(s1, s2, callback=None): @@ -146,88 +60,6 @@ def timesince(dt, since='', default="just now"): return default -def ssh_key_string_to_obj(text, password=None): - key = None - try: - key = paramiko.RSAKey.from_private_key(StringIO(text), password=password) - except paramiko.SSHException: - pass - - try: - key = paramiko.DSSKey.from_private_key(StringIO(text), password=password) - except paramiko.SSHException: - pass - return key - - -def ssh_pubkey_gen(private_key=None, username='jumpserver', hostname='localhost', password=None): - if isinstance(private_key, bytes): - private_key = private_key.decode("utf-8") - if isinstance(private_key, string_types): - private_key = ssh_key_string_to_obj(private_key, password=password) - if not isinstance(private_key, (paramiko.RSAKey, paramiko.DSSKey)): - raise IOError('Invalid private key') - - public_key = "%(key_type)s %(key_content)s %(username)s@%(hostname)s" % { - 'key_type': private_key.get_name(), - 'key_content': private_key.get_base64(), - 'username': username, - 'hostname': hostname, - } - return public_key - - -def ssh_key_gen(length=2048, type='rsa', password=None, username='jumpserver', hostname=None): - """Generate user ssh private and public key - - Use paramiko RSAKey generate it. - :return private key str and public key str - """ - - if hostname is None: - hostname = os.uname()[1] - - f = StringIO() - try: - if type == 'rsa': - private_key_obj = paramiko.RSAKey.generate(length) - elif type == 'dsa': - private_key_obj = paramiko.DSSKey.generate(length) - else: - raise IOError('SSH private key must be `rsa` or `dsa`') - private_key_obj.write_private_key(f, password=password) - private_key = f.getvalue() - public_key = ssh_pubkey_gen(private_key_obj, username=username, hostname=hostname) - return private_key, public_key - except IOError: - raise IOError('These is error when generate ssh key.') - - -def validate_ssh_private_key(text, password=None): - if isinstance(text, bytes): - try: - text = text.decode("utf-8") - except UnicodeDecodeError: - return False - - key = ssh_key_string_to_obj(text, password=password) - if key is None: - return False - else: - return True - - -def validate_ssh_public_key(text): - ssh = sshpubkeys.SSHKey(text) - try: - ssh.parse() - except (sshpubkeys.InvalidKeyException, UnicodeDecodeError): - return False - except NotImplementedError as e: - return False - return True - - def setattr_bulk(seq, key, value): def set_attr(obj): setattr(obj, key, value) @@ -243,70 +75,6 @@ def set_or_append_attr_bulk(seq, key, value): setattr(obj, key, value) -def content_md5(data): - """计算data的MD5值,经过Base64编码并返回str类型。 - - 返回值可以直接作为HTTP Content-Type头部的值 - """ - if isinstance(data, str): - data = hashlib.md5(data.encode('utf-8')) - value = base64.b64encode(data.hexdigest().encode('utf-8')) - return value.decode('utf-8') - - -_STRPTIME_LOCK = threading.Lock() - -_GMT_FORMAT = "%a, %d %b %Y %H:%M:%S GMT" -_ISO8601_FORMAT = "%Y-%m-%dT%H:%M:%S.000Z" - - -def to_unixtime(time_string, format_string): - time_string = time_string.decode("ascii") - with _STRPTIME_LOCK: - return int(calendar.timegm(time.strptime(time_string, format_string))) - - -def http_date(timeval=None): - """返回符合HTTP标准的GMT时间字符串,用strftime的格式表示就是"%a, %d %b %Y %H:%M:%S GMT"。 - 但不能使用strftime,因为strftime的结果是和locale相关的。 - """ - return formatdate(timeval, usegmt=True) - - -def http_to_unixtime(time_string): - """把HTTP Date格式的字符串转换为UNIX时间(自1970年1月1日UTC零点的秒数)。 - - HTTP Date形如 `Sat, 05 Dec 2015 11:10:29 GMT` 。 - """ - return to_unixtime(time_string, _GMT_FORMAT) - - -def iso8601_to_unixtime(time_string): - """把ISO8601时间字符串(形如,2012-02-24T06:07:48.000Z)转换为UNIX时间,精确到秒。""" - return to_unixtime(time_string, _ISO8601_FORMAT) - - -def make_signature(access_key_secret, date=None): - if isinstance(date, bytes): - date = bytes.decode(date) - if isinstance(date, int): - date_gmt = http_date(date) - elif date is None: - date_gmt = http_date(int(time.time())) - else: - date_gmt = date - - data = str(access_key_secret) + "\n" + date_gmt - return content_md5(data) - - -def encrypt_password(password, salt=None): - from passlib.hash import sha512_crypt - if password: - return sha512_crypt.using(rounds=5000).hash(password, salt=salt) - return None - - def capacity_convert(size, expect='auto', rate=1000): """ :param size: '100MB', '1G' @@ -374,11 +142,6 @@ def is_uuid(seq): return True -def get_signer(): - signer = Signer(settings.SECRET_KEY) - return signer - - def get_request_ip(request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR', '').split(',') if x_forwarded_for and x_forwarded_for[0]: @@ -388,22 +151,13 @@ def get_request_ip(request): return login_ip -def get_command_storage_setting(): - default = settings.DEFAULT_TERMINAL_COMMAND_STORAGE - value = settings.TERMINAL_COMMAND_STORAGE - if not value: - return default - value.update(default) - return value - - -def get_replay_storage_setting(): - default = settings.DEFAULT_TERMINAL_REPLAY_STORAGE - value = settings.TERMINAL_REPLAY_STORAGE - if not value: - return default - value.update(default) - return value +def validate_ip(ip): + try: + ipaddress.ip_address(ip) + return True + except ValueError: + pass + return False def with_cache(func): @@ -537,4 +291,4 @@ class LocalProxy(object): __rmod__ = lambda x, o: o % x._get_current_object() __rdivmod__ = lambda x, o: x._get_current_object().__rdivmod__(o) __copy__ = lambda x: copy.copy(x._get_current_object()) - __deepcopy__ = lambda x, memo: copy.deepcopy(x._get_current_object(), memo) \ No newline at end of file + __deepcopy__ = lambda x, memo: copy.deepcopy(x._get_current_object(), memo) diff --git a/apps/common/utils/django.py b/apps/common/utils/django.py new file mode 100644 index 000000000..9a0af8f7d --- /dev/null +++ b/apps/common/utils/django.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# +import re +from django.shortcuts import reverse as dj_reverse +from django.conf import settings +from django.utils import timezone + + +UUID_PATTERN = re.compile(r'[0-9a-zA-Z\-]{36}') + + +def reverse(view_name, urlconf=None, args=None, kwargs=None, + current_app=None, external=False): + url = dj_reverse(view_name, urlconf=urlconf, args=args, + kwargs=kwargs, current_app=current_app) + + if external: + site_url = settings.SITE_URL + url = site_url.strip('/') + url + return url + + +def get_object_or_none(model, **kwargs): + try: + obj = model.objects.get(**kwargs) + except model.DoesNotExist: + return None + return obj + + +def date_expired_default(): + try: + years = int(settings.DEFAULT_EXPIRED_YEARS) + except TypeError: + years = 70 + return timezone.now() + timezone.timedelta(days=365*years) + + +def get_command_storage_setting(): + default = settings.DEFAULT_TERMINAL_COMMAND_STORAGE + value = settings.TERMINAL_COMMAND_STORAGE + if not value: + return default + value.update(default) + return value + + +def get_replay_storage_setting(): + default = settings.DEFAULT_TERMINAL_REPLAY_STORAGE + value = settings.TERMINAL_REPLAY_STORAGE + if not value: + return default + value.update(default) + return value diff --git a/apps/common/utils/encode.py b/apps/common/utils/encode.py new file mode 100644 index 000000000..aefa19238 --- /dev/null +++ b/apps/common/utils/encode.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +# +import re +from six import string_types +import base64 +import os +import time +import hashlib +from io import StringIO + +import paramiko +import sshpubkeys +from itsdangerous import ( + TimedJSONWebSignatureSerializer, JSONWebSignatureSerializer, + BadSignature, SignatureExpired +) +from django.conf import settings + +from .http import http_date + + +UUID_PATTERN = re.compile(r'[0-9a-zA-Z\-]{36}') + + +class Singleton(type): + def __init__(cls, *args, **kwargs): + cls.__instance = None + super().__init__(*args, **kwargs) + + def __call__(cls, *args, **kwargs): + if cls.__instance is None: + cls.__instance = super().__call__(*args, **kwargs) + return cls.__instance + else: + return cls.__instance + + +class Signer(metaclass=Singleton): + """用来加密,解密,和基于时间戳的方式验证token""" + def __init__(self, secret_key=None): + self.secret_key = secret_key + + def sign(self, value): + s = JSONWebSignatureSerializer(self.secret_key, algorithm_name='HS256') + return s.dumps(value).decode() + + def unsign(self, value): + if value is None: + return value + s = JSONWebSignatureSerializer(self.secret_key, algorithm_name='HS256') + try: + return s.loads(value) + except BadSignature: + return {} + + def sign_t(self, value, expires_in=3600): + s = TimedJSONWebSignatureSerializer(self.secret_key, expires_in=expires_in) + return str(s.dumps(value), encoding="utf8") + + def unsign_t(self, value): + s = TimedJSONWebSignatureSerializer(self.secret_key) + try: + return s.loads(value) + except (BadSignature, SignatureExpired): + return {} + + +def ssh_key_string_to_obj(text, password=None): + key = None + try: + key = paramiko.RSAKey.from_private_key(StringIO(text), password=password) + except paramiko.SSHException: + pass + + try: + key = paramiko.DSSKey.from_private_key(StringIO(text), password=password) + except paramiko.SSHException: + pass + return key + + +def ssh_pubkey_gen(private_key=None, username='jumpserver', hostname='localhost', password=None): + if isinstance(private_key, bytes): + private_key = private_key.decode("utf-8") + if isinstance(private_key, string_types): + private_key = ssh_key_string_to_obj(private_key, password=password) + if not isinstance(private_key, (paramiko.RSAKey, paramiko.DSSKey)): + raise IOError('Invalid private key') + + public_key = "%(key_type)s %(key_content)s %(username)s@%(hostname)s" % { + 'key_type': private_key.get_name(), + 'key_content': private_key.get_base64(), + 'username': username, + 'hostname': hostname, + } + return public_key + + +def ssh_key_gen(length=2048, type='rsa', password=None, username='jumpserver', hostname=None): + """Generate user ssh private and public key + + Use paramiko RSAKey generate it. + :return private key str and public key str + """ + + if hostname is None: + hostname = os.uname()[1] + + f = StringIO() + try: + if type == 'rsa': + private_key_obj = paramiko.RSAKey.generate(length) + elif type == 'dsa': + private_key_obj = paramiko.DSSKey.generate(length) + else: + raise IOError('SSH private key must be `rsa` or `dsa`') + private_key_obj.write_private_key(f, password=password) + private_key = f.getvalue() + public_key = ssh_pubkey_gen(private_key_obj, username=username, hostname=hostname) + return private_key, public_key + except IOError: + raise IOError('These is error when generate ssh key.') + + +def validate_ssh_private_key(text, password=None): + if isinstance(text, bytes): + try: + text = text.decode("utf-8") + except UnicodeDecodeError: + return False + + key = ssh_key_string_to_obj(text, password=password) + if key is None: + return False + else: + return True + + +def validate_ssh_public_key(text): + ssh = sshpubkeys.SSHKey(text) + try: + ssh.parse() + except (sshpubkeys.InvalidKeyException, UnicodeDecodeError): + return False + except NotImplementedError as e: + return False + return True + + +def content_md5(data): + """计算data的MD5值,经过Base64编码并返回str类型。 + + 返回值可以直接作为HTTP Content-Type头部的值 + """ + if isinstance(data, str): + data = hashlib.md5(data.encode('utf-8')) + value = base64.b64encode(data.hexdigest().encode('utf-8')) + return value.decode('utf-8') + + +def make_signature(access_key_secret, date=None): + if isinstance(date, bytes): + date = bytes.decode(date) + if isinstance(date, int): + date_gmt = http_date(date) + elif date is None: + date_gmt = http_date(int(time.time())) + else: + date_gmt = date + + data = str(access_key_secret) + "\n" + date_gmt + return content_md5(data) + + +def encrypt_password(password, salt=None): + from passlib.hash import sha512_crypt + if password: + return sha512_crypt.using(rounds=5000).hash(password, salt=salt) + return None + + +def get_signer(): + signer = Signer(settings.SECRET_KEY) + return signer diff --git a/apps/common/utils/http.py b/apps/common/utils/http.py new file mode 100644 index 000000000..185397881 --- /dev/null +++ b/apps/common/utils/http.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +# +import time +from email.utils import formatdate +import calendar +import threading + +_STRPTIME_LOCK = threading.Lock() + +_GMT_FORMAT = "%a, %d %b %Y %H:%M:%S GMT" +_ISO8601_FORMAT = "%Y-%m-%dT%H:%M:%S.000Z" + + +def to_unixtime(time_string, format_string): + time_string = time_string.decode("ascii") + with _STRPTIME_LOCK: + return int(calendar.timegm(time.strptime(time_string, format_string))) + + +def http_date(timeval=None): + """返回符合HTTP标准的GMT时间字符串,用strftime的格式表示就是"%a, %d %b %Y %H:%M:%S GMT"。 + 但不能使用strftime,因为strftime的结果是和locale相关的。 + """ + return formatdate(timeval, usegmt=True) + + +def http_to_unixtime(time_string): + """把HTTP Date格式的字符串转换为UNIX时间(自1970年1月1日UTC零点的秒数)。 + + HTTP Date形如 `Sat, 05 Dec 2015 11:10:29 GMT` 。 + """ + return to_unixtime(time_string, _GMT_FORMAT) + + +def iso8601_to_unixtime(time_string): + """把ISO8601时间字符串(形如,2012-02-24T06:07:48.000Z)转换为UNIX时间,精确到秒。""" + return to_unixtime(time_string, _ISO8601_FORMAT) diff --git a/apps/common/utils/ipip/__init__.py b/apps/common/utils/ipip/__init__.py new file mode 100644 index 000000000..864ac8d44 --- /dev/null +++ b/apps/common/utils/ipip/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +# +from .ipdb import * diff --git a/apps/common/utils/ipip/ipdb.py b/apps/common/utils/ipip/ipdb.py new file mode 100644 index 000000000..e17fb523c --- /dev/null +++ b/apps/common/utils/ipip/ipdb.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# +import os + +import ipdb + +ipip_db = None + + +def get_ip_city(ip): + global ipip_db + if ipip_db is None: + ipip_db_path = os.path.join(os.path.dirname(__file__), 'ipipfree.ipdb') + ipip_db = ipdb.City(ipip_db_path) + info = list(set(ipip_db.find(ip, 'CN'))) + if '' in info: + info.remove('') + return ' '.join(info) \ No newline at end of file diff --git a/apps/common/utils/ipip/ipipfree.ipdb b/apps/common/utils/ipip/ipipfree.ipdb new file mode 100755 index 000000000..911e1ac33 Binary files /dev/null and b/apps/common/utils/ipip/ipipfree.ipdb differ diff --git a/apps/fixtures/fake.json b/apps/fixtures/fake.json deleted file mode 100644 index 421feccfa..000000000 --- a/apps/fixtures/fake.json +++ /dev/null @@ -1 +0,0 @@ -[{"model": "users.usergroup", "pk": "01633e9e-aaf9-434a-bc3d-33f75efb045d", "fields": {"is_discard": false, "discard_time": null, "name": "Barbara Shaw", "comment": "Sed ante.", "date_created": "2017-12-07T08:20:51.486Z", "created_by": "deborah79"}}, {"model": "users.usergroup", "pk": "05480995-a607-43f4-9aae-6373e5144196", "fields": {"is_discard": false, "discard_time": null, "name": "Irene Dunn", "comment": "In tempor, turpis nec euismod scelerisque, quam turpis adipiscing lorem, vitae mattis nibh ligula nec sem.", "date_created": "2017-12-07T08:20:51.823Z", "created_by": "maria71"}}, {"model": "users.usergroup", "pk": "0aaefcf4-a3be-4b0c-8347-e537c939b1d6", "fields": {"is_discard": false, "discard_time": null, "name": "Jean Gilbert", "comment": "Maecenas tincidunt lacus at velit.", "date_created": "2017-12-07T08:20:52.464Z", "created_by": "amanda67"}}, {"model": "users.usergroup", "pk": "0c9f3bb1-6b99-4fb0-931a-6a973d043039", "fields": {"is_discard": false, "discard_time": null, "name": "Mildred Bishop", "comment": "Donec diam neque, vestibulum eget, vulputate ut, ultrices vel, augue.", "date_created": "2017-12-07T08:20:52.443Z", "created_by": "catherine91"}}, {"model": "users.usergroup", "pk": "0cfa92a2-b265-4117-a90f-d6e36cc742df", "fields": {"is_discard": false, "discard_time": null, "name": "Sarah Hill", "comment": "Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo.", "date_created": "2017-12-07T08:20:51.520Z", "created_by": "cynthia75"}}, {"model": "users.usergroup", "pk": "0ff9b33d-6db3-411b-bc8a-201cee0492d5", "fields": {"is_discard": false, "discard_time": null, "name": "Patricia Cook", "comment": "Pellentesque eget nunc.", "date_created": "2017-12-07T08:20:51.693Z", "created_by": "sharon84"}}, {"model": "users.usergroup", "pk": "10a4c70a-8202-4cc6-b1ed-81c93961325d", "fields": {"is_discard": false, "discard_time": null, "name": "Joyce Wagner", "comment": "Vivamus tortor.", "date_created": "2017-12-07T08:20:52.242Z", "created_by": "mary85"}}, {"model": "users.usergroup", "pk": "10e9791a-7af7-4a80-a392-4261c2f19a59", "fields": {"is_discard": false, "discard_time": null, "name": "Kathryn Sims", "comment": "Praesent id massa id nisl venenatis lacinia.", "date_created": "2017-12-07T08:20:52.422Z", "created_by": "jennifer76"}}, {"model": "users.usergroup", "pk": "18a646d6-b82d-4f0b-80a3-d61fe702ef7b", "fields": {"is_discard": false, "discard_time": null, "name": "Heather Hernandez", "comment": "Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue.", "date_created": "2017-12-07T08:20:51.464Z", "created_by": "doris73"}}, {"model": "users.usergroup", "pk": "1a51e2a6-cfd1-44fe-b774-3ef3de1c81dc", "fields": {"is_discard": false, "discard_time": null, "name": "Jessica Pierce", "comment": "Etiam justo.", "date_created": "2017-12-07T08:20:51.748Z", "created_by": "bonnie74"}}, {"model": "users.usergroup", "pk": "1af7873a-8614-484b-8a40-c2cab92a0125", "fields": {"is_discard": false, "discard_time": null, "name": "Nancy Griffin", "comment": "Etiam justo.", "date_created": "2017-12-07T08:20:51.617Z", "created_by": "stephanie64"}}, {"model": "users.usergroup", "pk": "1bbfbb77-2f3e-4ed9-abbb-948556a7b250", "fields": {"is_discard": false, "discard_time": null, "name": "Ruby Frazier", "comment": "Sed accumsan felis.", "date_created": "2017-12-07T08:20:52.221Z", "created_by": "diane63"}}, {"model": "users.usergroup", "pk": "1cdf25f1-24f3-4438-ad07-0b01fff85d6a", "fields": {"is_discard": false, "discard_time": null, "name": "Lisa Robertson", "comment": "Vestibulum sed magna at nunc commodo placerat.", "date_created": "2017-12-07T08:20:52.370Z", "created_by": "wanda76"}}, {"model": "users.usergroup", "pk": "1ebb17e6-9224-469e-960c-e79ea05e1843", "fields": {"is_discard": false, "discard_time": null, "name": "Jessica Olson", "comment": "Sed accumsan felis.", "date_created": "2017-12-07T08:20:52.028Z", "created_by": "kathryn81"}}, {"model": "users.usergroup", "pk": "1f69d022-44cd-4d05-8280-1f867f843812", "fields": {"is_discard": false, "discard_time": null, "name": "Ruby Hanson", "comment": "Donec quis orci eget orci vehicula condimentum.", "date_created": "2017-12-07T08:20:51.585Z", "created_by": "anna68"}}, {"model": "users.usergroup", "pk": "20854f59-6e0f-4c32-a9e5-6027fa0a4286", "fields": {"is_discard": false, "discard_time": null, "name": "Andrea Fuller", "comment": "Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.", "date_created": "2017-12-07T08:20:52.285Z", "created_by": "angela93"}}, {"model": "users.usergroup", "pk": "20f701d5-44cf-4fc2-97cc-ed58a6879f46", "fields": {"is_discard": false, "discard_time": null, "name": "Julie Sullivan", "comment": "Duis bibendum, felis sed interdum venenatis, turpis enim blandit mi, in porttitor pede justo eu massa.", "date_created": "2017-12-07T08:20:52.050Z", "created_by": "margaret68"}}, {"model": "users.usergroup", "pk": "22aabd20-ef34-4449-9b7d-ff98e09908d2", "fields": {"is_discard": false, "discard_time": null, "name": "Amy Reyes", "comment": "Aenean lectus.", "date_created": "2017-12-07T08:20:51.553Z", "created_by": "brenda80"}}, {"model": "users.usergroup", "pk": "256b4fb1-b364-42b0-986a-c36ce05c9910", "fields": {"is_discard": false, "discard_time": null, "name": "Ashley Watson", "comment": "Etiam justo.", "date_created": "2017-12-07T08:20:52.072Z", "created_by": "robin65"}}, {"model": "users.usergroup", "pk": "2ab45c5e-8b7c-4b15-a23b-f0674dea4811", "fields": {"is_discard": false, "discard_time": null, "name": "Sara Reid", "comment": "Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis.", "date_created": "2017-12-07T08:20:51.931Z", "created_by": "jean73"}}, {"model": "users.usergroup", "pk": "2ac447b3-fe58-4070-ac04-2229ee3f67d1", "fields": {"is_discard": false, "discard_time": null, "name": "Joyce Hill", "comment": "Vivamus vestibulum sagittis sapien.", "date_created": "2017-12-07T08:20:52.485Z", "created_by": "kathleen72"}}, {"model": "users.usergroup", "pk": "2acdcb21-17da-4848-91d2-43d0f3c7a675", "fields": {"is_discard": false, "discard_time": null, "name": "Mary Nelson", "comment": "Donec semper sapien a libero.", "date_created": "2017-12-07T08:20:51.844Z", "created_by": "wanda76"}}, {"model": "users.usergroup", "pk": "2b6d1ada-eeff-4708-a5a2-c0cf700c7903", "fields": {"is_discard": false, "discard_time": null, "name": "Beverly Watson", "comment": "In hac habitasse platea dictumst.", "date_created": "2017-12-07T08:20:52.339Z", "created_by": "mildred72"}}, {"model": "users.usergroup", "pk": "2e0b2a25-b32f-44a0-b087-f0f17de66e26", "fields": {"is_discard": false, "discard_time": null, "name": "Default", "comment": "Default user group", "date_created": "2017-12-07T08:20:09.593Z", "created_by": "System"}}, {"model": "users.usergroup", "pk": "30425714-f98a-4c72-aee4-cd2ec6386a83", "fields": {"is_discard": false, "discard_time": null, "name": "Carol Nguyen", "comment": "Sed sagittis.", "date_created": "2017-12-07T08:20:51.865Z", "created_by": "stephanie64"}}, {"model": "users.usergroup", "pk": "3130014e-a92c-4942-9c5f-4f0d7d456bea", "fields": {"is_discard": false, "discard_time": null, "name": "Nicole Henry", "comment": "Vestibulum ac est lacinia nisi venenatis tristique.", "date_created": "2017-12-07T08:20:51.790Z", "created_by": "kathleen72"}}, {"model": "users.usergroup", "pk": "324a10dd-2f10-4c04-b616-80f669b213ef", "fields": {"is_discard": false, "discard_time": null, "name": "Rachel Watson", "comment": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", "date_created": "2017-12-07T08:20:52.006Z", "created_by": "kelly79"}}, {"model": "users.usergroup", "pk": "32c811fe-c525-4ee0-ab06-4f1caffc0df4", "fields": {"is_discard": false, "discard_time": null, "name": "Joyce Rodriguez", "comment": "Mauris ullamcorper purus sit amet nulla.", "date_created": "2017-12-07T08:20:52.412Z", "created_by": "lisa84"}}, {"model": "users.usergroup", "pk": "348bc076-34b7-4b48-8b13-6920b4536e0b", "fields": {"is_discard": false, "discard_time": null, "name": "Jessica Sanders", "comment": "Aenean lectus.", "date_created": "2017-12-07T08:20:52.211Z", "created_by": "phyllis92"}}, {"model": "users.usergroup", "pk": "35fbe872-3fa9-4d2a-aeae-92e2b919408d", "fields": {"is_discard": false, "discard_time": null, "name": "Sandra Cruz", "comment": "Phasellus sit amet erat.", "date_created": "2017-12-07T08:20:52.104Z", "created_by": "frances91"}}, {"model": "users.usergroup", "pk": "36e8af59-a0e4-43ac-b75b-a553316db215", "fields": {"is_discard": false, "discard_time": null, "name": "Kathryn Cook", "comment": "Cras in purus eu magna vulputate luctus.", "date_created": "2017-12-07T08:20:51.780Z", "created_by": "lisa75"}}, {"model": "users.usergroup", "pk": "39b4c13c-7b1c-46ec-b5f0-eddc5c9dc0d1", "fields": {"is_discard": false, "discard_time": null, "name": "Kathy Watkins", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est.", "date_created": "2017-12-07T08:20:51.596Z", "created_by": "katherine74"}}, {"model": "users.usergroup", "pk": "42e81e2b-5e41-492d-ba1c-2c776f6825b9", "fields": {"is_discard": false, "discard_time": null, "name": "Angela Franklin", "comment": "Duis aliquam convallis nunc.", "date_created": "2017-12-07T08:20:52.349Z", "created_by": "amanda67"}}, {"model": "users.usergroup", "pk": "439508f0-ef68-47b7-8b1f-0fa8519d55d2", "fields": {"is_discard": false, "discard_time": null, "name": "Marilyn Crawford", "comment": "Phasellus sit amet erat.", "date_created": "2017-12-07T08:20:51.736Z", "created_by": "phyllis92"}}, {"model": "users.usergroup", "pk": "44dcd0b3-13c5-4ffc-81c2-226feb264f4f", "fields": {"is_discard": false, "discard_time": null, "name": "Betty Torres", "comment": "Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis.", "date_created": "2017-12-07T08:20:52.296Z", "created_by": "margaret94"}}, {"model": "users.usergroup", "pk": "47e25432-402f-423d-b089-dc1a4c69f0f1", "fields": {"is_discard": false, "discard_time": null, "name": "Angela Brooks", "comment": "Etiam vel augue.", "date_created": "2017-12-07T08:20:51.498Z", "created_by": "lisa90"}}, {"model": "users.usergroup", "pk": "50b6d093-3208-45d1-aaae-ed1d3c23a7b6", "fields": {"is_discard": false, "discard_time": null, "name": "Elizabeth Wagner", "comment": "Donec ut dolor.", "date_created": "2017-12-07T08:20:51.996Z", "created_by": "joan86"}}, {"model": "users.usergroup", "pk": "562e85d0-cfba-43b2-ad51-1e11e78a2e67", "fields": {"is_discard": false, "discard_time": null, "name": "Andrea Cox", "comment": "Donec ut mauris eget massa tempor convallis.", "date_created": "2017-12-07T08:20:52.381Z", "created_by": "wanda88"}}, {"model": "users.usergroup", "pk": "575c7e54-02d4-4196-8566-6f1ea8f36f8b", "fields": {"is_discard": false, "discard_time": null, "name": "Tina Olson", "comment": "In tempor, turpis nec euismod scelerisque, quam turpis adipiscing lorem, vitae mattis nibh ligula nec sem.", "date_created": "2017-12-07T08:20:52.264Z", "created_by": "kelly79"}}, {"model": "users.usergroup", "pk": "5931fc80-cb0c-4b8a-8fb1-c8ddfd3d5fd0", "fields": {"is_discard": false, "discard_time": null, "name": "Ashley Rivera", "comment": "Suspendisse ornare consequat lectus.", "date_created": "2017-12-07T08:20:52.518Z", "created_by": "brenda85"}}, {"model": "users.usergroup", "pk": "5b7d215d-6cd3-4eb6-9ba0-2056758c457e", "fields": {"is_discard": false, "discard_time": null, "name": "Christine George", "comment": "Fusce consequat.", "date_created": "2017-12-07T08:20:52.402Z", "created_by": "wanda88"}}, {"model": "users.usergroup", "pk": "5c97733d-13ef-4336-ad29-29ae8e3af1f7", "fields": {"is_discard": false, "discard_time": null, "name": "Beverly Howell", "comment": "Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede.", "date_created": "2017-12-07T08:20:52.178Z", "created_by": "anna85"}}, {"model": "users.usergroup", "pk": "5ccbede6-9538-40f4-a2af-b255ea441291", "fields": {"is_discard": false, "discard_time": null, "name": "Nancy Moore", "comment": "Morbi quis tortor id nulla ultrices aliquet.", "date_created": "2017-12-07T08:20:51.704Z", "created_by": "diane63"}}, {"model": "users.usergroup", "pk": "61b1878f-970d-4540-a606-a1e606c07f32", "fields": {"is_discard": false, "discard_time": null, "name": "Janice Harvey", "comment": "Sed sagittis.", "date_created": "2017-12-07T08:20:52.232Z", "created_by": "doris86"}}, {"model": "users.usergroup", "pk": "62ec8b72-aa17-4a86-89b5-cf904ad16f4b", "fields": {"is_discard": false, "discard_time": null, "name": "Alice Mccoy", "comment": "Integer ac neque.", "date_created": "2017-12-07T08:20:52.507Z", "created_by": "wanda76"}}, {"model": "users.usergroup", "pk": "6699de3c-c1f6-4c60-bf21-26e4eebdabad", "fields": {"is_discard": false, "discard_time": null, "name": "Kathleen Thompson", "comment": "Aenean fermentum.", "date_created": "2017-12-07T08:20:51.954Z", "created_by": "robin65"}}, {"model": "users.usergroup", "pk": "6bd04a04-f94d-4723-a187-3d9eb5e87b25", "fields": {"is_discard": false, "discard_time": null, "name": "Frances Graham", "comment": "Duis ac nibh.", "date_created": "2017-12-07T08:20:51.475Z", "created_by": "catherine91"}}, {"model": "users.usergroup", "pk": "6c5566e7-f9ed-4722-8e5c-ae9c71eeeefd", "fields": {"is_discard": false, "discard_time": null, "name": "Pamela Reyes", "comment": "Praesent id massa id nisl venenatis lacinia.", "date_created": "2017-12-07T08:20:52.125Z", "created_by": "diane63"}}, {"model": "users.usergroup", "pk": "73daab8c-d57e-4cf8-8625-3191f179c5f2", "fields": {"is_discard": false, "discard_time": null, "name": "Janice Chavez", "comment": "Donec dapibus.", "date_created": "2017-12-07T08:20:52.083Z", "created_by": "rachel76"}}, {"model": "users.usergroup", "pk": "7acf822f-682a-4242-af4c-1dab52961bef", "fields": {"is_discard": false, "discard_time": null, "name": "Phyllis Carr", "comment": "Nulla justo.", "date_created": "2017-12-07T08:20:51.574Z", "created_by": "deborah79"}}, {"model": "users.usergroup", "pk": "82a41770-d7e3-43dd-8722-3fe712d96b8c", "fields": {"is_discard": false, "discard_time": null, "name": "Paula Gutierrez", "comment": "Nulla tellus.", "date_created": "2017-12-07T08:20:51.833Z", "created_by": "jennifer76"}}, {"model": "users.usergroup", "pk": "8328f6c7-80b5-466c-bf37-b347ec2483ad", "fields": {"is_discard": false, "discard_time": null, "name": "Kelly Dean", "comment": "Etiam justo.", "date_created": "2017-12-07T08:20:52.147Z", "created_by": "margaret68"}}, {"model": "users.usergroup", "pk": "84840e74-dccc-4663-829a-82496687b29b", "fields": {"is_discard": false, "discard_time": null, "name": "Kathryn Bell", "comment": "Curabitur in libero ut massa volutpat convallis.", "date_created": "2017-12-07T08:20:51.606Z", "created_by": "maria72"}}, {"model": "users.usergroup", "pk": "8997d40e-46aa-4c27-b4db-5e1bb4460d45", "fields": {"is_discard": false, "discard_time": null, "name": "Pamela Cunningham", "comment": "Cras non velit nec nisi vulputate nonummy.", "date_created": "2017-12-07T08:20:52.475Z", "created_by": "joan88"}}, {"model": "users.usergroup", "pk": "91cf56b4-1e16-4bd6-9f04-435d7799ced7", "fields": {"is_discard": false, "discard_time": null, "name": "Maria Fisher", "comment": "Aliquam quis turpis eget elit sodales scelerisque.", "date_created": "2017-12-07T08:20:52.189Z", "created_by": "diane63"}}, {"model": "users.usergroup", "pk": "93bbe048-b49d-4ff2-bae5-88bd759b37c4", "fields": {"is_discard": false, "discard_time": null, "name": "Catherine Morris", "comment": "Nullam orci pede, venenatis non, sodales sed, tincidunt eu, felis.", "date_created": "2017-12-07T08:20:51.975Z", "created_by": "sarah87"}}, {"model": "users.usergroup", "pk": "94459801-cf94-4acd-8536-4853afc7f506", "fields": {"is_discard": false, "discard_time": null, "name": "Helen Mason", "comment": "Donec diam neque, vestibulum eget, vulputate ut, ultrices vel, augue.", "date_created": "2017-12-07T08:20:52.039Z", "created_by": "christine83"}}, {"model": "users.usergroup", "pk": "9509a7e1-71fc-48a9-b16a-84bb1559cd22", "fields": {"is_discard": false, "discard_time": null, "name": "Bonnie Arnold", "comment": "Duis bibendum.", "date_created": "2017-12-07T08:20:51.650Z", "created_by": "rachel76"}}, {"model": "users.usergroup", "pk": "974627ea-562c-421e-965c-7629b7ae32b4", "fields": {"is_discard": false, "discard_time": null, "name": "Wanda Parker", "comment": "Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.", "date_created": "2017-12-07T08:20:51.875Z", "created_by": "diane88"}}, {"model": "users.usergroup", "pk": "9c1c4a2f-e1e1-436d-b175-a4dbaff84f2c", "fields": {"is_discard": false, "discard_time": null, "name": "Phyllis Garcia", "comment": "Praesent id massa id nisl venenatis lacinia.", "date_created": "2017-12-07T08:20:51.639Z", "created_by": "jane91"}}, {"model": "users.usergroup", "pk": "a0d4b642-4250-40e9-af49-5d6b96aebf0b", "fields": {"is_discard": false, "discard_time": null, "name": "Amanda Armstrong", "comment": "Morbi odio odio, elementum eu, interdum eu, tincidunt in, leo.", "date_created": "2017-12-07T08:20:51.985Z", "created_by": "alice65"}}, {"model": "users.usergroup", "pk": "a1211050-9d15-4c83-9039-623b8e73cd7e", "fields": {"is_discard": false, "discard_time": null, "name": "Sharon Carter", "comment": "Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue.", "date_created": "2017-12-07T08:20:51.564Z", "created_by": "deborah92"}}, {"model": "users.usergroup", "pk": "a4ba911f-1a48-406a-b073-18325675d410", "fields": {"is_discard": false, "discard_time": null, "name": "Jessica Palmer", "comment": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", "date_created": "2017-12-07T08:20:51.672Z", "created_by": "sandra90"}}, {"model": "users.usergroup", "pk": "a9c18eb2-487f-430b-8a21-9fda58f8e010", "fields": {"is_discard": false, "discard_time": null, "name": "Cynthia Phillips", "comment": "Curabitur convallis.", "date_created": "2017-12-07T08:20:51.531Z", "created_by": "doris76"}}, {"model": "users.usergroup", "pk": "aa396508-4225-46db-8987-01e797703b8c", "fields": {"is_discard": false, "discard_time": null, "name": "Gloria Elliott", "comment": "Pellentesque ultrices mattis odio.", "date_created": "2017-12-07T08:20:51.812Z", "created_by": "doris86"}}, {"model": "users.usergroup", "pk": "aba21946-88f9-4118-9618-102e4cc80c79", "fields": {"is_discard": false, "discard_time": null, "name": "Kimberly Fox", "comment": "Integer non velit.", "date_created": "2017-12-07T08:20:52.136Z", "created_by": "brenda80"}}, {"model": "users.usergroup", "pk": "b29c503b-8880-49a0-a411-7fffe18d66f7", "fields": {"is_discard": false, "discard_time": null, "name": "Julia Dixon", "comment": "Cras in purus eu magna vulputate luctus.", "date_created": "2017-12-07T08:20:51.682Z", "created_by": "brenda80"}}, {"model": "users.usergroup", "pk": "b2c06c2d-e84c-40fe-bcb5-de5c472bd7ae", "fields": {"is_discard": false, "discard_time": null, "name": "Shirley Johnson", "comment": "Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros.", "date_created": "2017-12-07T08:20:52.061Z", "created_by": "linda78"}}, {"model": "users.usergroup", "pk": "b3dae698-cbfd-447e-b464-969e9cb7cc98", "fields": {"is_discard": false, "discard_time": null, "name": "Lori Cooper", "comment": "Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh.", "date_created": "2017-12-07T08:20:51.886Z", "created_by": "christine83"}}, {"model": "users.usergroup", "pk": "b45b237e-ce9c-4fa3-8cd3-a86ab0269c79", "fields": {"is_discard": false, "discard_time": null, "name": "Jean Harris", "comment": "Vestibulum sed magna at nunc commodo placerat.", "date_created": "2017-12-07T08:20:51.759Z", "created_by": "frances91"}}, {"model": "users.usergroup", "pk": "b7316da9-aed5-4329-bd3c-bc2ff34a1ec4", "fields": {"is_discard": false, "discard_time": null, "name": "Debra Cooper", "comment": "Vivamus vel nulla eget eros elementum pellentesque.", "date_created": "2017-12-07T08:20:51.661Z", "created_by": "ruth84"}}, {"model": "users.usergroup", "pk": "bbbc2f67-193c-4e4a-8355-f4f3d585ff26", "fields": {"is_discard": false, "discard_time": null, "name": "Christina Jackson", "comment": "Integer aliquet, massa id lobortis convallis, tortor risus dapibus augue, vel accumsan tellus nisi eu orci.", "date_created": "2017-12-07T08:20:51.896Z", "created_by": "maria72"}}, {"model": "users.usergroup", "pk": "bc85d48a-5e80-471c-b348-a1123421d96d", "fields": {"is_discard": false, "discard_time": null, "name": "Irene Gilbert", "comment": "In hac habitasse platea dictumst.", "date_created": "2017-12-07T08:20:51.724Z", "created_by": "cheryl72"}}, {"model": "users.usergroup", "pk": "be9b966c-81a2-4ca1-baa8-31c798ad36f1", "fields": {"is_discard": false, "discard_time": null, "name": "Ruby Rodriguez", "comment": "Cras in purus eu magna vulputate luctus.", "date_created": "2017-12-07T08:20:52.391Z", "created_by": "anna68"}}, {"model": "users.usergroup", "pk": "c724a40b-5aae-4fec-84bd-4cb533e08347", "fields": {"is_discard": false, "discard_time": null, "name": "Andrea Morris", "comment": "Maecenas pulvinar lobortis est.", "date_created": "2017-12-07T08:20:51.920Z", "created_by": "nancy94"}}, {"model": "users.usergroup", "pk": "c770b1ef-455a-4351-918f-ebb30488c967", "fields": {"is_discard": false, "discard_time": null, "name": "Mary Hunt", "comment": "Integer tincidunt ante vel ipsum.", "date_created": "2017-12-07T08:20:51.801Z", "created_by": "deborah92"}}, {"model": "users.usergroup", "pk": "c8cfd3c6-fc6f-4191-9a06-a756a79ad7c2", "fields": {"is_discard": false, "discard_time": null, "name": "Linda Ortiz", "comment": "In sagittis dui vel nisl.", "date_created": "2017-12-07T08:20:51.855Z", "created_by": "tammy68"}}, {"model": "users.usergroup", "pk": "cb64989f-138c-40f8-b55a-958e3faf982b", "fields": {"is_discard": false, "discard_time": null, "name": "Emily Arnold", "comment": "Vivamus vestibulum sagittis sapien.", "date_created": "2017-12-07T08:20:52.168Z", "created_by": "catherine89"}}, {"model": "users.usergroup", "pk": "cc857995-38c6-409b-813c-c3ffc753f38b", "fields": {"is_discard": false, "discard_time": null, "name": "Louise Collins", "comment": "Nam dui.", "date_created": "2017-12-07T08:20:52.327Z", "created_by": "margaret94"}}, {"model": "users.usergroup", "pk": "d0f501b7-59df-447a-9677-e312b1e307d7", "fields": {"is_discard": false, "discard_time": null, "name": "Judy Wallace", "comment": "Vivamus tortor.", "date_created": "2017-12-07T08:20:51.910Z", "created_by": "sarah87"}}, {"model": "users.usergroup", "pk": "d6dcd1e8-3de8-4a9f-ae77-99c2db8fb740", "fields": {"is_discard": false, "discard_time": null, "name": "Jennifer Lane", "comment": "Pellentesque viverra pede ac diam.", "date_created": "2017-12-07T08:20:52.253Z", "created_by": "sharon84"}}, {"model": "users.usergroup", "pk": "d9441645-2adc-4a2c-8ac9-88c4acd27f1c", "fields": {"is_discard": false, "discard_time": null, "name": "Tina Moore", "comment": "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.", "date_created": "2017-12-07T08:20:52.316Z", "created_by": "catherine91"}}, {"model": "users.usergroup", "pk": "d9fb5700-8b80-4977-880b-01aa12ce9d0a", "fields": {"is_discard": false, "discard_time": null, "name": "Julia Hudson", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est.", "date_created": "2017-12-07T08:20:52.093Z", "created_by": "margaret68"}}, {"model": "users.usergroup", "pk": "da7d3fc2-c0a8-4063-b6ea-5cdff12cfa21", "fields": {"is_discard": false, "discard_time": null, "name": "Deborah Mason", "comment": "Maecenas rhoncus aliquam lacus.", "date_created": "2017-12-07T08:20:52.275Z", "created_by": "angela93"}}, {"model": "users.usergroup", "pk": "e01c4f7b-99b4-4acc-a17f-bcfa65aa6713", "fields": {"is_discard": false, "discard_time": null, "name": "Carolyn Morgan", "comment": "Praesent lectus.", "date_created": "2017-12-07T08:20:52.433Z", "created_by": "kimberly82"}}, {"model": "users.usergroup", "pk": "e52a38be-1b6e-4aa0-af94-81df5bbbf128", "fields": {"is_discard": false, "discard_time": null, "name": "Tammy Martinez", "comment": "Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo.", "date_created": "2017-12-07T08:20:52.453Z", "created_by": "bobby67"}}, {"model": "users.usergroup", "pk": "e8b48349-c0fb-46dd-a381-060da38b7d03", "fields": {"is_discard": false, "discard_time": null, "name": "Martha Garcia", "comment": "Duis mattis egestas metus.", "date_created": "2017-12-07T08:20:51.509Z", "created_by": "anna85"}}, {"model": "users.usergroup", "pk": "e8c27151-8bbd-4860-b63b-c1268734004e", "fields": {"is_discard": false, "discard_time": null, "name": "Phyllis Ramos", "comment": "Maecenas pulvinar lobortis est.", "date_created": "2017-12-07T08:20:52.157Z", "created_by": "brenda85"}}, {"model": "users.usergroup", "pk": "e8d74351-5019-409d-aa0f-be2eed38eb50", "fields": {"is_discard": false, "discard_time": null, "name": "Amanda Snyder", "comment": "Suspendisse ornare consequat lectus.", "date_created": "2017-12-07T08:20:51.628Z", "created_by": "maria71"}}, {"model": "users.usergroup", "pk": "edf7e651-2192-4d81-83d1-3ba18c114524", "fields": {"is_discard": false, "discard_time": null, "name": "Donna Riley", "comment": "Nam ultrices, libero non mattis pulvinar, nulla pede ullamcorper augue, a suscipit nulla elit ac nulla.", "date_created": "2017-12-07T08:20:52.017Z", "created_by": "emily88"}}, {"model": "users.usergroup", "pk": "f02bde64-1585-407d-b2b4-03b1e3646181", "fields": {"is_discard": false, "discard_time": null, "name": "Wanda Williamson", "comment": "Aliquam sit amet diam in magna bibendum imperdiet.", "date_created": "2017-12-07T08:20:52.114Z", "created_by": "jane91"}}, {"model": "users.usergroup", "pk": "f2e7b16f-c9df-44d7-bafc-2264d4c56ea2", "fields": {"is_discard": false, "discard_time": null, "name": "Jane Bishop", "comment": "Morbi a ipsum.", "date_created": "2017-12-07T08:20:52.360Z", "created_by": "angela93"}}, {"model": "users.usergroup", "pk": "f471eacf-29bf-48f2-a8f7-190180592024", "fields": {"is_discard": false, "discard_time": null, "name": "Gloria Oliver", "comment": "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.", "date_created": "2017-12-07T08:20:51.964Z", "created_by": "kathleen72"}}, {"model": "users.usergroup", "pk": "f4e73db5-0f56-443a-bc04-75c97606a32d", "fields": {"is_discard": false, "discard_time": null, "name": "Judy Stewart", "comment": "Duis at velit eu est congue elementum.", "date_created": "2017-12-07T08:20:51.942Z", "created_by": "katherine74"}}, {"model": "users.usergroup", "pk": "f61bf503-4071-4105-8865-03c298b8493b", "fields": {"is_discard": false, "discard_time": null, "name": "Maria Owens", "comment": "Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh.", "date_created": "2017-12-07T08:20:52.497Z", "created_by": "jane91"}}, {"model": "users.usergroup", "pk": "f70a94bd-ccfc-47a8-9ffc-c82354c1eab3", "fields": {"is_discard": false, "discard_time": null, "name": "Mary Hawkins", "comment": "Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.", "date_created": "2017-12-07T08:20:52.529Z", "created_by": "amy74"}}, {"model": "users.usergroup", "pk": "f97785ce-0128-40e8-9d1a-59a6da0f26c6", "fields": {"is_discard": false, "discard_time": null, "name": "Lillian Rose", "comment": "Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante.", "date_created": "2017-12-07T08:20:51.714Z", "created_by": "nancy94"}}, {"model": "users.usergroup", "pk": "fb79c29a-7082-4a61-b7f9-664936689962", "fields": {"is_discard": false, "discard_time": null, "name": "Lori Moreno", "comment": "Suspendisse potenti.", "date_created": "2017-12-07T08:20:51.769Z", "created_by": "jane91"}}, {"model": "users.usergroup", "pk": "fb996880-5d5b-45f0-a350-48c909540bbe", "fields": {"is_discard": false, "discard_time": null, "name": "Elizabeth Nelson", "comment": "Maecenas rhoncus aliquam lacus.", "date_created": "2017-12-07T08:20:52.200Z", "created_by": "amanda67"}}, {"model": "users.usergroup", "pk": "fdc3f016-e595-4167-ba89-dfcdfd47729c", "fields": {"is_discard": false, "discard_time": null, "name": "Frances Cook", "comment": "Suspendisse potenti.", "date_created": "2017-12-07T08:20:51.542Z", "created_by": "ruth71"}}, {"model": "users.usergroup", "pk": "ffe5fe09-16d1-40ea-b27a-c5c69e85ae4f", "fields": {"is_discard": false, "discard_time": null, "name": "Marilyn Hall", "comment": "Fusce consequat.", "date_created": "2017-12-07T08:20:52.306Z", "created_by": "jane91"}}, {"model": "assets.cluster", "pk": "39db8373-d161-4832-83e3-6139d10e827b", "fields": {"name": "Debra Kim", "bandwidth": "200M", "contact": "Carol Ryan", "phone": "3-(970)673-3761", "address": "Gustine4937 Duke Way", "intranet": "", "extranet": "", "date_created": "2017-12-07T08:20:52.544Z", "operator": "BGP\u5168\u7f51\u901a", "created_by": "Fake", "comment": "Aenean sit amet justo."}}, {"model": "assets.cluster", "pk": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "fields": {"name": "Ashley Henry", "bandwidth": "200M", "contact": "Susan Coleman", "phone": "2-(441)661-3806", "address": "Riverbank916 Old Shore Road", "intranet": "", "extranet": "", "date_created": "2017-12-07T08:20:52.541Z", "operator": "\u5317\u4eac\u8054\u901a", "created_by": "Fake", "comment": "Aenean auctor gravida sem."}}, {"model": "assets.cluster", "pk": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "fields": {"name": "Tammy Pierce", "bandwidth": "200M", "contact": "Ruth Fernandez", "phone": "9-(356)562-2635", "address": "Oakley36 Talisman Center", "intranet": "", "extranet": "", "date_created": "2017-12-07T08:20:52.547Z", "operator": "\u5317\u4eac\u8054\u901a", "created_by": "Fake", "comment": "Praesent blandit."}}, {"model": "assets.cluster", "pk": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "fields": {"name": "Theresa Jones", "bandwidth": "200M", "contact": "Lillian Jackson", "phone": "4-(213)114-4147", "address": "Red Bluff6 Amoth Way", "intranet": "", "extranet": "", "date_created": "2017-12-07T08:20:52.538Z", "operator": "BGP\u5168\u7f51\u901a", "created_by": "Fake", "comment": "Donec vitae nisi."}}, {"model": "assets.cluster", "pk": "c0df1aa0-bde7-4226-a69a-d02976888456", "fields": {"name": "Default", "bandwidth": "", "contact": "", "phone": "", "address": "", "intranet": "", "extranet": "", "date_created": "2017-12-07T08:20:09.606Z", "operator": "", "created_by": "System", "comment": "Default Cluster"}}, {"model": "assets.cluster", "pk": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "fields": {"name": "Karen Watkins", "bandwidth": "200M", "contact": "Sharon Flores", "phone": "6-(843)981-7826", "address": "Coachella02341 Hoffman Crossing", "intranet": "", "extranet": "", "date_created": "2017-12-07T08:20:52.550Z", "operator": "\u5317\u4eac\u7535\u4fe1", "created_by": "Fake", "comment": "Proin leo odio, porttitor id, consequat in, consequat ut, nulla."}}, {"model": "assets.adminuser", "pk": "26267cd3-4b22-41a6-ae76-327195767ee7", "fields": {"name": "Judith Gordon", "username": "mary", "_password": "eyJhbGciOiJIUzI1NiJ9.InNpdCI.qhSlAh3rB-ai6rdQ-gxKBSFGhk-AbwiFe_CqQxSS3hM", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Donec semper sapien a libero.", "date_created": "2017-12-07T08:20:52.614Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "fields": {"name": "Robin Ferguson", "username": "rebecca", "_password": "eyJhbGciOiJIUzI1NiJ9.ImFsaXF1YW0i.ROd2JUuL9lh3hBqwH2HJ7tf8zsYXtJR776EsV1Jpvnw", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Etiam justo.", "date_created": "2017-12-07T08:20:52.598Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "fields": {"name": "Jacqueline Garza", "username": "karen", "_password": "eyJhbGciOiJIUzI1NiJ9.ImlhY3VsaXMi._s5XG4x4ntDRnnbi38JeFne1fvF3h3f9nQJRUGL_vq0", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Nulla tellus.", "date_created": "2017-12-07T08:20:52.618Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "61423c66-048f-4125-9844-6a15557cd345", "fields": {"name": "Ashley West", "username": "andrea", "_password": "eyJhbGciOiJIUzI1NiJ9.InBlZGUi.VNfxhauAGiZelQ34CO0YMVbRtgnIiH5Z-vY1jjYXhWA", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Suspendisse potenti.", "date_created": "2017-12-07T08:20:52.589Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "6617bb42-6281-4095-ad30-4cefa0e2231e", "fields": {"name": "Nancy Henry", "username": "barbara", "_password": "eyJhbGciOiJIUzI1NiJ9.Imx1Y3R1cyI.HgJMJ_hzKIXE6FmvnIJpfQbY4kKS5qd1c2IJ_GxPdqQ", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Duis consequat dui nec nisi volutpat eleifend.", "date_created": "2017-12-07T08:20:52.602Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "68d875b0-162f-4360-abcf-b10bfae3f451", "fields": {"name": "Marilyn Anderson", "username": "carolyn", "_password": "eyJhbGciOiJIUzI1NiJ9.InZlc3RpYnVsdW0i.T6kOgaWPNOQhwvRxcDNwPInAoTWO8oQ6iipJWCyeZvs", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Morbi odio odio, elementum eu, interdum eu, tincidunt in, leo.", "date_created": "2017-12-07T08:20:52.592Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "fields": {"name": "Kelly Day", "username": "ashley", "_password": "eyJhbGciOiJIUzI1NiJ9.Imxhb3JlZXQi.cxHpzVDWQCDMNkadZ2bP2BKaKWpahOkM4O2_-QxO4Kg", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Ut tellus.", "date_created": "2017-12-07T08:20:52.611Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "fields": {"name": "Elizabeth Lawson", "username": "nicole", "_password": "eyJhbGciOiJIUzI1NiJ9.ImFudGUi.MEBUyQoLV79tCcbpomj9Q6JdrivWra1ZLsj5UvGmRNg", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Nulla nisl.", "date_created": "2017-12-07T08:20:52.605Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "fields": {"name": "Doris Diaz", "username": "kathy", "_password": "eyJhbGciOiJIUzI1NiJ9.ImxvcmVtIg.oO5aOD2S0EIsqSl9OTTabrNpCWrG3T8nDgA_4OqrsHE", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Nulla nisl.", "date_created": "2017-12-07T08:20:52.609Z", "created_by": "Fake"}}, {"model": "assets.adminuser", "pk": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "fields": {"name": "Kimberly Owens", "username": "denise", "_password": "eyJhbGciOiJIUzI1NiJ9.ImJsYW5kaXQi.ib6BRTHTJx8JP6SbdGdZc1_HRSsZHp9wj-FC4vN41ic", "_private_key": null, "become": true, "become_method": "sudo", "become_user": "root", "_become_pass": "", "_public_key": "", "comment": "Nullam sit amet turpis elementum ligula vehicula consequat.", "date_created": "2017-12-07T08:20:52.595Z", "created_by": "Fake"}}, {"model": "assets.systemuser", "pk": "2e83e252-b84c-4fab-b055-389d07c3acd8", "fields": {"name": "Maria Morris", "username": "phyllis", "_password": "eyJhbGciOiJIUzI1NiJ9.ImlkIg.lr9X3DQPFH2zptTUg3pRWbYLzWhfDYsw0w_q9pEod3I", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.571Z", "created_by": "Fake", "comment": "Proin leo odio, porttitor id, consequat in, consequat ut, nulla."}}, {"model": "assets.systemuser", "pk": "383481b8-6fbf-4e94-b648-0d2de1f07f77", "fields": {"name": "Michelle Nelson", "username": "diane", "_password": "eyJhbGciOiJIUzI1NiJ9.ImVzdCI.kqn80ndZDQ0Gc7AnT112KsF2joNDpppfPsuPxS6cOwk", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.574Z", "created_by": "Fake", "comment": "Aenean sit amet justo."}}, {"model": "assets.systemuser", "pk": "587dbf83-2f91-4c8b-8d75-59807dfbcefd", "fields": {"name": "Shirley Grant", "username": "carol", "_password": "eyJhbGciOiJIUzI1NiJ9.ImFlbmVhbiI.bmZGuIfjr5BAmIBuL3RLAL9zT2H1bTiHdZ9350HzSeg", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.568Z", "created_by": "Fake", "comment": "Sed accumsan felis."}}, {"model": "assets.systemuser", "pk": "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "fields": {"name": "Patricia Grant", "username": "phyllis", "_password": "eyJhbGciOiJIUzI1NiJ9.ImR1aSI.AYqnix4dp06WLJ645L4MAveLycKVrZSyNjJnIq0fU2g", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.583Z", "created_by": "Fake", "comment": "Vivamus vel nulla eget eros elementum pellentesque."}}, {"model": "assets.systemuser", "pk": "7540c5c1-6380-4928-ba1b-0eab77de20e9", "fields": {"name": "Tina Carter", "username": "martha", "_password": "eyJhbGciOiJIUzI1NiJ9.InByaW1pcyI.OAlhMPsCXTLC41MGIrALVio6iqoIwHbHFj-r4Kg4lso", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.577Z", "created_by": "Fake", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis faucibus accumsan odio."}}, {"model": "assets.systemuser", "pk": "9fcfed52-7476-4345-ba2f-c246e8e27522", "fields": {"name": "Ruth Armstrong", "username": "virginia", "_password": "eyJhbGciOiJIUzI1NiJ9.InV0Ig.lmRSuoHi4jv9YOiKOSfPjnCwSvHOnUh0UQcZXnEWZzo", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.561Z", "created_by": "Fake", "comment": "Maecenas tristique, est et tempus semper, est quam pharetra magna, ac consequat metus sapien ut nunc."}}, {"model": "assets.systemuser", "pk": "a08c8830-7838-4660-9072-fd038ecb02f4", "fields": {"name": "Nicole Gardner", "username": "helen", "_password": "eyJhbGciOiJIUzI1NiJ9.ImFtZXQi.k9EjNQL559Kyrp0ygulJ1FYqzM9PWKz9BZ7NqyeyH2o", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.558Z", "created_by": "Fake", "comment": "Nam ultrices, libero non mattis pulvinar, nulla pede ullamcorper augue, a suscipit nulla elit ac nulla."}}, {"model": "assets.systemuser", "pk": "a7786710-df8c-4abd-9946-f7ceceaed688", "fields": {"name": "Annie Hart", "username": "betty", "_password": "eyJhbGciOiJIUzI1NiJ9.ImNvbmRpbWVudHVtIg.n0KeFDo_o3Hr1cl0P1X3CAza029GFd1GFLthcxjSCgI", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.564Z", "created_by": "Fake", "comment": "Mauris lacinia sapien quis libero."}}, {"model": "assets.systemuser", "pk": "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "fields": {"name": "Linda Mendoza", "username": "judith", "_password": "eyJhbGciOiJIUzI1NiJ9.InByb2luIg.j4I43DiE0E2dweGu63szcIkK6MrpiW1Iyr8uolb1eoI", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.555Z", "created_by": "Fake", "comment": "Morbi vel lectus in quam fringilla rhoncus."}}, {"model": "assets.systemuser", "pk": "f056becf-3b4b-400e-898d-211d9b5a1d99", "fields": {"name": "Donna Jackson", "username": "anne", "_password": "eyJhbGciOiJIUzI1NiJ9.InJ1dHJ1bSI.e9e4AJVlXCLyu2tkGWKY-NsMt-cO_6iX0iBXXzYWWNs", "protocol": "ssh", "_private_key": "", "_public_key": "", "auth_method": "K", "auto_push": true, "sudo": "/sbin/ifconfig", "shell": "/bin/bash", "date_created": "2017-12-07T08:20:52.580Z", "created_by": "Fake", "comment": "Mauris ullamcorper purus sit amet nulla."}}, {"model": "assets.assetgroup", "pk": "09168b5c-4d5f-484b-8166-d9026063ab0b", "fields": {"name": "Robin Parker", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.633Z", "comment": "Vivamus vestibulum sagittis sapien.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "0e8bcd4b-2163-4c15-90c0-9789f4232ba1", "fields": {"name": "Christine Peters", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.895Z", "comment": "Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1154dbfa-b520-462f-a169-a560b1598f44", "fields": {"name": "Janice Fisher", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.892Z", "comment": "Phasellus id sapien in sapien iaculis congue.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1336c3b8-4c15-493d-a180-e0fc6ad060b2", "fields": {"name": "Janice Matthews", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.898Z", "comment": "Fusce posuere felis sed lacus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "13e7438c-a4ec-4c75-b09f-422c157bd76c", "fields": {"name": "Janet Roberts", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.713Z", "comment": "Maecenas leo odio, condimentum id, luctus nec, molestie sed, justo.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "18fede16-2309-40eb-a9b7-e159d1fefa41", "fields": {"name": "Laura Dean", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.679Z", "comment": "Vestibulum quam sapien, varius ut, blandit non, interdum in, ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "19c435b1-bf74-4870-a16c-8ebf462fa6da", "fields": {"name": "Betty Gray", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.889Z", "comment": "Morbi ut odio.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1b66354b-2a36-423e-a59c-88ac6f73c928", "fields": {"name": "Teresa Fernandez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.673Z", "comment": "Donec vitae nisi.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1dd09ace-5b53-4a6e-90a7-fbb9c718d0f5", "fields": {"name": "Wanda Gomez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.691Z", "comment": "In tempor, turpis nec euismod scelerisque, quam turpis adipiscing lorem, vitae mattis nibh ligula nec sem.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1e5c7012-46e5-4c71-b95b-911b24f63a13", "fields": {"name": "Stephanie Ruiz", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.743Z", "comment": "Proin risus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1ed242df-3e7b-459a-876b-3e9be645ef70", "fields": {"name": "Wanda Parker", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.657Z", "comment": "Mauris sit amet eros.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1f128730-d0eb-4e96-b144-f8425bc226dc", "fields": {"name": "Anna Perkins", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.855Z", "comment": "Praesent id massa id nisl venenatis lacinia.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "1f5f2fac-3463-4215-8290-ce84ae8809ac", "fields": {"name": "Carol Vasquez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.811Z", "comment": "Sed vel enim sit amet nunc viverra dapibus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "23714c28-4186-413a-b1c4-6f688c2ec85c", "fields": {"name": "Laura Olson", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.760Z", "comment": "Integer tincidunt ante vel ipsum.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "262f8fd6-a9e5-4687-b1bd-e6983fffe60f", "fields": {"name": "Shirley Watkins", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.876Z", "comment": "Donec dapibus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "29ad2563-c5eb-4963-9314-d1fc6a49f51a", "fields": {"name": "Michelle Perry", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.864Z", "comment": "Quisque ut erat.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "2da084a8-bdd6-42ee-a39e-9d78c7cf0535", "fields": {"name": "Rebecca Vasquez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.825Z", "comment": "Sed ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "33449baf-3516-4ba0-a9f5-b878ac1da501", "fields": {"name": "Dorothy Gonzales", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.747Z", "comment": "Integer ac neque.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "37f2a85d-be6f-498e-9847-3a071fb22544", "fields": {"name": "Shirley Stephens", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.651Z", "comment": "Curabitur gravida nisi at nibh.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "3f6382dc-ae61-4a93-9e5e-1e41dff4b6e2", "fields": {"name": "Christine Kennedy", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.841Z", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris viverra diam vitae quam.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "4511fc92-9c49-4806-94b7-ea21ce11217d", "fields": {"name": "Phyllis Butler", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.638Z", "comment": "Aenean auctor gravida sem.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "4a24f49f-2d90-4474-bb4a-93295db257ce", "fields": {"name": "Betty Murray", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.844Z", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis faucibus accumsan odio.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "4a437dbf-ae1a-47e8-8e21-0687891a479b", "fields": {"name": "Catherine Hawkins", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.755Z", "comment": "Sed ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "4c145ce1-c3e3-441a-a86d-69df17b7101f", "fields": {"name": "Sharon Mcdonald", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.771Z", "comment": "Pellentesque eget nunc.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "4dd7deb8-18df-4c9a-9085-0abb84af419c", "fields": {"name": "Anna Elliott", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.881Z", "comment": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "4ff4976f-2364-454b-907e-6e1be1e09bd9", "fields": {"name": "Lois Stevens", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.716Z", "comment": "In hac habitasse platea dictumst.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "50048717-231c-47d0-94c1-801f098f6814", "fields": {"name": "Julia Hart", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.878Z", "comment": "Aliquam quis turpis eget elit sodales scelerisque.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "51d39285-f6c6-467b-8d6a-089c05c9670e", "fields": {"name": "Angela Diaz", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.702Z", "comment": "Pellentesque viverra pede ac diam.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "544592b9-052b-4169-afd6-bc1cb722d8a3", "fields": {"name": "Mary Montgomery", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.853Z", "comment": "Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "5503bc69-fc4d-4e34-9ef9-b780a654576c", "fields": {"name": "Irene Lawrence", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.688Z", "comment": "Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "556852cc-b5b6-41df-b24b-4d443de4dfdf", "fields": {"name": "Emily Green", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.665Z", "comment": "Duis bibendum.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "55c19958-5101-4dbc-94c7-9e1512e4c4a2", "fields": {"name": "Annie Wood", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.774Z", "comment": "Etiam pretium iaculis justo.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "5b117b17-c720-4c86-bd8f-ddcdf770515f", "fields": {"name": "Helen Hicks", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.794Z", "comment": "Maecenas leo odio, condimentum id, luctus nec, molestie sed, justo.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "5e3cc371-a2d1-49cb-af5b-56cf54e9912f", "fields": {"name": "Teresa Fowler", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.705Z", "comment": "Integer aliquet, massa id lobortis convallis, tortor risus dapibus augue, vel accumsan tellus nisi eu orci.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "628f77e6-4410-4779-88a6-2f622a92a784", "fields": {"name": "Frances Foster", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.737Z", "comment": "Nullam porttitor lacus at turpis.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "62a70279-caef-49bb-8af9-14d9c15ea855", "fields": {"name": "Anna Richardson", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.836Z", "comment": "Phasellus sit amet erat.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "67be35c1-440a-41ef-aa33-20c17ba1ecb6", "fields": {"name": "Debra Mcdonald", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.819Z", "comment": "Curabitur in libero ut massa volutpat convallis.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "fields": {"name": "Donna Hicks", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.676Z", "comment": "In hac habitasse platea dictumst.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "6a158957-3ab2-4af6-8ba0-2b30e22428ad", "fields": {"name": "Joan Brown", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.684Z", "comment": "Sed ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "6c64d761-87e4-4277-8210-f63bdf6641c7", "fields": {"name": "Louise Jenkins", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.631Z", "comment": "Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "6e4f95c0-3aba-4301-bfe2-e6dc9a370048", "fields": {"name": "Tammy Mccoy", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.696Z", "comment": "Maecenas ut massa quis augue luctus tincidunt.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "6ef8cd9a-1995-4ff8-a83a-907d97b67762", "fields": {"name": "Jennifer Lynch", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.721Z", "comment": "Integer a nibh.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "6fb8cec4-ed7a-40ae-9c13-36e514d05ce7", "fields": {"name": "Janice Schmidt", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.708Z", "comment": "Praesent id massa id nisl venenatis lacinia.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "71a93e4a-7e0a-49b5-9d91-99c0d45ac2a9", "fields": {"name": "Rose Gardner", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.791Z", "comment": "Duis bibendum, felis sed interdum venenatis, turpis enim blandit mi, in porttitor pede justo eu massa.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "7a313985-9460-41df-bd86-7f3c19ed85fa", "fields": {"name": "Sharon Young", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.662Z", "comment": "Vivamus vel nulla eget eros elementum pellentesque.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "7a9da454-b9bb-46e1-bcf7-05232f263138", "fields": {"name": "Jessica Griffin", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.867Z", "comment": "Donec semper sapien a libero.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "7f472514-ded2-4a09-8ff0-b9b91f85ca8e", "fields": {"name": "Cheryl Rodriguez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.636Z", "comment": "Cras non velit nec nisi vulputate nonummy.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "7f99a303-baf6-4a3a-b2d5-38b42083c6ed", "fields": {"name": "Cheryl Lane", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.777Z", "comment": "Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "7fa66d80-3134-483b-add5-3082d5fc2829", "fields": {"name": "Marilyn Castillo", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.681Z", "comment": "Praesent blandit.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "8182f741-e273-49e3-b0cc-c531391da513", "fields": {"name": "Donna Rogers", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.769Z", "comment": "Ut at dolor quis odio consequat varius.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "81f2bad8-24ab-4f14-81c9-1c0b11e2e158", "fields": {"name": "Anne Montgomery", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.625Z", "comment": "Maecenas pulvinar lobortis est.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "822af801-f8ab-4980-9c50-9fbe3ef66e02", "fields": {"name": "Helen Nguyen", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.847Z", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "83810313-256d-4a42-9be7-b8254d37111f", "fields": {"name": "Sharon Gutierrez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.858Z", "comment": "Pellentesque viverra pede ac diam.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "85145b4d-07b2-47e6-bb0c-bd723e117724", "fields": {"name": "Joyce Ellis", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.693Z", "comment": "Mauris ullamcorper purus sit amet nulla.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "8738ff4e-64a3-419d-8fa0-b093640dee59", "fields": {"name": "Anna Perez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.622Z", "comment": "Pellentesque at nulla.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "87a4a0fb-7f42-49f2-add9-dac68c528586", "fields": {"name": "Kelly Jacobs", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.814Z", "comment": "Praesent id massa id nisl venenatis lacinia.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "881a0460-7989-42af-a588-957efe57fb8e", "fields": {"name": "Default", "created_by": "", "date_created": "2017-12-07T08:20:09.610Z", "comment": "Default asset group", "system_users": []}}, {"model": "assets.assetgroup", "pk": "8c045cf6-befa-40f9-8f86-84f8c4b0aa30", "fields": {"name": "Judith Boyd", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.884Z", "comment": "Nulla tellus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "8c963f9a-52b0-47ce-8d56-41d8810513f2", "fields": {"name": "Nancy Watkins", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.850Z", "comment": "Donec dapibus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "8fb62b59-6cae-499c-853d-d7d4c0e91a57", "fields": {"name": "Beverly Collins", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.649Z", "comment": "Fusce posuere felis sed lacus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "902ecbb6-740e-4784-98e4-6f44bbb67cc9", "fields": {"name": "Joan Meyer", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.718Z", "comment": "Cras mi pede, malesuada in, imperdiet et, commodo vulputate, justo.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "90f583be-21d6-43b0-af42-6a6d22b4e15f", "fields": {"name": "Jane Phillips", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.758Z", "comment": "Fusce posuere felis sed lacus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "913f9232-bd66-40f8-80cf-21593dddb59b", "fields": {"name": "Helen Lewis", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.822Z", "comment": "Curabitur gravida nisi at nibh.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "9164d22e-d5a4-4584-a073-5e8208d79d28", "fields": {"name": "Ruth Montgomery", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.763Z", "comment": "Fusce posuere felis sed lacus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "92cbd38e-f65b-4a3b-8956-5d53d00cc1ab", "fields": {"name": "Sarah Thompson", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.830Z", "comment": "Praesent lectus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "92d63bd2-4797-4789-a2dc-83aa9f9c9276", "fields": {"name": "Elizabeth Baker", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.861Z", "comment": "Quisque id justo sit amet sapien dignissim vestibulum.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "94707978-527b-4782-8451-519620c3ce38", "fields": {"name": "Carolyn Murray", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.668Z", "comment": "Duis bibendum, felis sed interdum venenatis, turpis enim blandit mi, in porttitor pede justo eu massa.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a0cc880c-2d10-47d9-8a9b-b7297346c582", "fields": {"name": "Diane Larson", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.780Z", "comment": "In hac habitasse platea dictumst.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a12acc55-4021-4df9-b591-5a03245a5208", "fields": {"name": "Kathryn Smith", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.732Z", "comment": "Morbi quis tortor id nulla ultrices aliquet.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a274e6ce-b2d0-4ffe-a22e-6cdc4d3743be", "fields": {"name": "Beverly Carter", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.646Z", "comment": "Maecenas pulvinar lobortis est.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a3d348d7-2723-4fd2-bb63-18215b492053", "fields": {"name": "Rachel George", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.788Z", "comment": "In hac habitasse platea dictumst.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a5a13b13-8df3-4141-a7a7-89e04a95a690", "fields": {"name": "Evelyn Ruiz", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.752Z", "comment": "In hac habitasse platea dictumst.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a630b6ff-a7bb-4fb2-8073-75322865320b", "fields": {"name": "Louise Powell", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.671Z", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nulla dapibus dolor vel est.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "a851f4f0-532b-4d1a-a610-5b02eb0027af", "fields": {"name": "Diana Cooper", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.839Z", "comment": "Sed ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "aff61d74-9aa1-4f90-af38-fd0f4985c9d4", "fields": {"name": "Diana Campbell", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.873Z", "comment": "In hac habitasse platea dictumst.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "ba8ebaa3-499d-4afe-9e29-a3069b5470df", "fields": {"name": "Margaret Harper", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.735Z", "comment": "Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "bd317a7f-4ba8-4c6c-9ce2-5e39a24817fe", "fields": {"name": "Rachel Carr", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.729Z", "comment": "Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "c778d607-59ba-4a12-a464-fc9519316ed5", "fields": {"name": "Kelly Hughes", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.710Z", "comment": "Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "c9a5c3b3-caf2-40c6-9282-83800a4a72c9", "fields": {"name": "Jane Peters", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.699Z", "comment": "Duis bibendum.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "cc5331db-4a80-45d9-88b9-62b7c164bcfd", "fields": {"name": "Gloria Richards", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.799Z", "comment": "Sed sagittis.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "cc5e77a5-ae3f-4410-b6af-956980dab38f", "fields": {"name": "Sharon Greene", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.802Z", "comment": "In sagittis dui vel nisl.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "ce263cf4-3210-42fa-8869-06783f1e8973", "fields": {"name": "Dorothy Hunt", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.641Z", "comment": "Cras in purus eu magna vulputate luctus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "d2adba2e-73ac-4036-871e-db4b4c2a1a70", "fields": {"name": "Judy Wilson", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.828Z", "comment": "Duis aliquam convallis nunc.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "d5d99362-f06d-408f-aaba-4f657c63ceee", "fields": {"name": "Diane Roberts", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.808Z", "comment": "Morbi vestibulum, velit id pretium iaculis, diam erat fermentum justo, nec condimentum neque sapien placerat ante.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "d7ba405e-5cc8-40e2-98c5-d2cdbfb2c1bb", "fields": {"name": "Elizabeth Lopez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.796Z", "comment": "Maecenas rhoncus aliquam lacus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "d97cbcde-d878-4787-be9f-737e6950f9b0", "fields": {"name": "Mildred Armstrong", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.805Z", "comment": "Donec dapibus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "dec1d0de-875a-4930-b4c8-f17f60f9af2f", "fields": {"name": "Marilyn Payne", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.782Z", "comment": "Nulla ut erat id mauris vulputate elementum.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "e11fcf30-c50b-4df6-8457-736208b1a3a1", "fields": {"name": "Susan Foster", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.785Z", "comment": "Nulla neque libero, convallis eget, eleifend luctus, ultricies eu, nibh.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "e3063d5f-25a8-402a-9b46-51cfb8235db6", "fields": {"name": "Doris Griffin", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.628Z", "comment": "Cras pellentesque volutpat dui.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "e46c7191-8f2a-4c01-be61-90445d409c47", "fields": {"name": "Alice Thomas", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.659Z", "comment": "Mauris ullamcorper purus sit amet nulla.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "e919d5b9-f718-4205-b16c-55a5b45f2e50", "fields": {"name": "Jennifer Gordon", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.750Z", "comment": "Phasellus in felis.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "e9c034d2-9be0-49b2-a0cf-730f7270819e", "fields": {"name": "Dorothy Boyd", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.766Z", "comment": "Pellentesque at nulla.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "ef8818e7-1e9c-4868-9d9a-7985618ae897", "fields": {"name": "Joyce Fields", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.816Z", "comment": "Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "f5e7a82d-95a1-494d-91e0-8a56608b8c8e", "fields": {"name": "Ruth Woods", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.726Z", "comment": "Mauris ullamcorper purus sit amet nulla.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "f5f374b4-5784-412f-b83c-60f42b3ed2b1", "fields": {"name": "Jane Lawson", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.833Z", "comment": "Suspendisse ornare consequat lectus.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "fa887c60-4c10-426c-ad53-f1724c012af5", "fields": {"name": "Rebecca Long", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.643Z", "comment": "Quisque id justo sit amet sapien dignissim vestibulum.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "fc7fc3d1-903e-4109-a712-26e0c8936dfa", "fields": {"name": "Lisa Welch", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.724Z", "comment": "Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "fd6b95d7-57ae-4351-b37b-067772887179", "fields": {"name": "Bonnie Brooks", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.870Z", "comment": "In quis justo.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "ff36e4da-5156-48a1-9bec-f54b107cfa02", "fields": {"name": "Annie Dunn", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.654Z", "comment": "Donec vitae nisi.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "ff83212a-498d-49ce-abbc-22d13119871c", "fields": {"name": "Patricia Mitchell", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.740Z", "comment": "Aliquam erat volutpat.", "system_users": []}}, {"model": "assets.assetgroup", "pk": "fffe1e01-b3d8-43e6-a92c-a651eda567ec", "fields": {"name": "Andrea Chavez", "created_by": "Fake", "date_created": "2017-12-07T08:20:52.887Z", "comment": "Phasellus in felis.", "system_users": []}}, {"model": "assets.asset", "pk": "028cf88c-a5af-42f5-921f-ff7dee540ba1", "fields": {"ip": "60.60.60.60", "hostname": "virginia68", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.881Z", "comment": "", "groups": ["94707978-527b-4782-8451-519620c3ce38", "881a0460-7989-42af-a588-957efe57fb8e", "902ecbb6-740e-4784-98e4-6f44bbb67cc9"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "9fcfed52-7476-4345-ba2f-c246e8e27522", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "02ebd0a1-6177-43ab-9c6c-e0cb649d722d", "fields": {"ip": "1.1.1.1", "hostname": "mildred89", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:52.942Z", "comment": "", "groups": ["67be35c1-440a-41ef-aa33-20c17ba1ecb6", "544592b9-052b-4169-afd6-bc1cb722d8a3", "262f8fd6-a9e5-4687-b1bd-e6983fffe60f"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "03beb4e6-4632-4284-b1f0-b6f61c1a12c4", "fields": {"ip": "56.56.56.56", "hostname": "louise94", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.763Z", "comment": "", "groups": ["a5a13b13-8df3-4141-a7a7-89e04a95a690", "f5f374b4-5784-412f-b83c-60f42b3ed2b1", "50048717-231c-47d0-94c1-801f098f6814"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "06d1d681-b84d-4018-9db9-3b38a78a18f8", "fields": {"ip": "72.72.72.72", "hostname": "marie87", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.314Z", "comment": "", "groups": ["881a0460-7989-42af-a588-957efe57fb8e", "a0cc880c-2d10-47d9-8a9b-b7297346c582", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "0a5a0a24-e2a9-4618-9abc-98273fd99d03", "fields": {"ip": "6.6.6.6", "hostname": "carolyn66", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.108Z", "comment": "", "groups": ["6a158957-3ab2-4af6-8ba0-2b30e22428ad", "c778d607-59ba-4a12-a464-fc9519316ed5", "e11fcf30-c50b-4df6-8457-736208b1a3a1"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "0ba05a7d-9530-4b49-ab19-9a8676e401df", "fields": {"ip": "31.31.31.31", "hostname": "maria65", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.908Z", "comment": "", "groups": ["c9a5c3b3-caf2-40c6-9282-83800a4a72c9", "1154dbfa-b520-462f-a169-a560b1598f44", "4ff4976f-2364-454b-907e-6e1be1e09bd9"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "10eb8298-be8c-4127-a121-3e008f38dfc7", "fields": {"ip": "76.76.76.76", "hostname": "deborah88", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.460Z", "comment": "", "groups": ["c9a5c3b3-caf2-40c6-9282-83800a4a72c9", "7a9da454-b9bb-46e1-bcf7-05232f263138"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "1247e3b4-ba60-4182-888a-52a671285a7c", "fields": {"ip": "94.94.94.94", "hostname": "joyce79", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.152Z", "comment": "", "groups": ["ff36e4da-5156-48a1-9bec-f54b107cfa02", "5b117b17-c720-4c86-bd8f-ddcdf770515f", "1ed242df-3e7b-459a-876b-3e9be645ef70"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "130abdb5-6ad0-44ae-a3d3-e0f6046d829a", "fields": {"ip": "83.83.83.83", "hostname": "anna85", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.731Z", "comment": "", "groups": ["68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "13e7438c-a4ec-4c75-b09f-422c157bd76c", "29ad2563-c5eb-4963-9314-d1fc6a49f51a"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "15ad4725-8850-422f-94d0-019358091a72", "fields": {"ip": "88.88.88.88", "hostname": "norma92", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.921Z", "comment": "", "groups": ["62a70279-caef-49bb-8af9-14d9c15ea855", "6ef8cd9a-1995-4ff8-a83a-907d97b67762", "4ff4976f-2364-454b-907e-6e1be1e09bd9"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "168ce0e9-1e32-4b6e-9583-5db54f730edf", "fields": {"ip": "44.44.44.44", "hostname": "amy93", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.328Z", "comment": "", "groups": ["19c435b1-bf74-4870-a16c-8ebf462fa6da", "fa887c60-4c10-426c-ad53-f1724c012af5", "4c145ce1-c3e3-441a-a86d-69df17b7101f"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "2e83e252-b84c-4fab-b055-389d07c3acd8", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "17788047-7e40-4669-9d8a-9b049be9589a", "fields": {"ip": "47.47.47.47", "hostname": "jessica65", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.438Z", "comment": "", "groups": ["881a0460-7989-42af-a588-957efe57fb8e", "556852cc-b5b6-41df-b24b-4d443de4dfdf", "71a93e4a-7e0a-49b5-9d91-99c0d45ac2a9"], "system_users": ["9fcfed52-7476-4345-ba2f-c246e8e27522", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "18cd2ed4-05c9-4745-8dc8-953ef6ffb40f", "fields": {"ip": "58.58.58.58", "hostname": "michelle78", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.809Z", "comment": "", "groups": ["81f2bad8-24ab-4f14-81c9-1c0b11e2e158", "aff61d74-9aa1-4f90-af38-fd0f4985c9d4", "bd317a7f-4ba8-4c6c-9ce2-5e39a24817fe"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "193ffb60-7691-4f39-a276-52ce2b2402ad", "fields": {"ip": "3.3.3.3", "hostname": "jennifer74", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.007Z", "comment": "", "groups": ["aff61d74-9aa1-4f90-af38-fd0f4985c9d4", "e3063d5f-25a8-402a-9b46-51cfb8235db6", "262f8fd6-a9e5-4687-b1bd-e6983fffe60f"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "19906beb-c3b6-4f6f-b845-0b181aacc9a6", "fields": {"ip": "50.50.50.50", "hostname": "janet75", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.542Z", "comment": "", "groups": ["33449baf-3516-4ba0-a9f5-b878ac1da501", "92d63bd2-4797-4789-a2dc-83aa9f9c9276", "87a4a0fb-7f42-49f2-add9-dac68c528586"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "1b9d02ed-0f13-4b5a-84de-d0ea448442e4", "fields": {"ip": "96.96.96.96", "hostname": "donna78", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.228Z", "comment": "", "groups": ["4a24f49f-2d90-4474-bb4a-93295db257ce", "d7ba405e-5cc8-40e2-98c5-d2cdbfb2c1bb", "bd317a7f-4ba8-4c6c-9ce2-5e39a24817fe"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "20718d09-98ab-4ed4-8d85-207bd46c852c", "fields": {"ip": "16.16.16.16", "hostname": "janet89", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.424Z", "comment": "", "groups": ["8738ff4e-64a3-419d-8fa0-b093640dee59", "e3063d5f-25a8-402a-9b46-51cfb8235db6", "4c145ce1-c3e3-441a-a86d-69df17b7101f"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "a08c8830-7838-4660-9072-fd038ecb02f4", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "22d80fa1-1d92-45a7-b415-d8b389ac2888", "fields": {"ip": "0.0.0.0", "hostname": "michelle69", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:52.906Z", "comment": "", "groups": ["e9c034d2-9be0-49b2-a0cf-730f7270819e", "2da084a8-bdd6-42ee-a39e-9d78c7cf0535", "5e3cc371-a2d1-49cb-af5b-56cf54e9912f"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "2387841b-9306-4d56-807f-849671e0e1c4", "fields": {"ip": "89.89.89.89", "hostname": "anne71", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.960Z", "comment": "", "groups": ["7f99a303-baf6-4a3a-b2d5-38b42083c6ed", "6a158957-3ab2-4af6-8ba0-2b30e22428ad", "ef8818e7-1e9c-4868-9d9a-7985618ae897"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "23e98146-dab9-47bf-80f2-88ea15cb6224", "fields": {"ip": "2.2.2.2", "hostname": "jennifer83", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:52.975Z", "comment": "", "groups": ["1f128730-d0eb-4e96-b144-f8425bc226dc", "ce263cf4-3210-42fa-8869-06783f1e8973", "a12acc55-4021-4df9-b591-5a03245a5208"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "258f301a-207b-459e-9f3e-277417ff428a", "fields": {"ip": "61.61.61.61", "hostname": "catherine65", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.915Z", "comment": "", "groups": ["19c435b1-bf74-4870-a16c-8ebf462fa6da", "1336c3b8-4c15-493d-a180-e0fc6ad060b2"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "2ef30092-fb45-49e7-bae1-e105928c46ed", "fields": {"ip": "48.48.48.48", "hostname": "patricia69", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.473Z", "comment": "", "groups": ["8fb62b59-6cae-499c-853d-d7d4c0e91a57", "6a158957-3ab2-4af6-8ba0-2b30e22428ad", "4c145ce1-c3e3-441a-a86d-69df17b7101f"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "2f9ab896-4cf1-41ee-9601-d13d2d6cf254", "fields": {"ip": "93.93.93.93", "hostname": "theresa77", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.115Z", "comment": "", "groups": ["92d63bd2-4797-4789-a2dc-83aa9f9c9276", "87a4a0fb-7f42-49f2-add9-dac68c528586", "262f8fd6-a9e5-4687-b1bd-e6983fffe60f"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "32c17a26-2cd7-481f-b1e6-b4f6483b900c", "fields": {"ip": "28.28.28.28", "hostname": "bonnie81", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.813Z", "comment": "", "groups": ["8182f741-e273-49e3-b0cc-c531391da513", "37f2a85d-be6f-498e-9847-3a071fb22544", "6e4f95c0-3aba-4301-bfe2-e6dc9a370048"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "9fcfed52-7476-4345-ba2f-c246e8e27522", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "3976c985-e291-4c1c-8a9c-d162195eafc9", "fields": {"ip": "66.66.66.66", "hostname": "annie92", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.101Z", "comment": "", "groups": ["ff36e4da-5156-48a1-9bec-f54b107cfa02", "a12acc55-4021-4df9-b591-5a03245a5208", "c778d607-59ba-4a12-a464-fc9519316ed5"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "397ef248-cdc4-4db4-93c7-7f049cf68182", "fields": {"ip": "85.85.85.85", "hostname": "annie69", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.805Z", "comment": "", "groups": ["92d63bd2-4797-4789-a2dc-83aa9f9c9276", "dec1d0de-875a-4930-b4c8-f17f60f9af2f", "9164d22e-d5a4-4584-a073-5e8208d79d28"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "f056becf-3b4b-400e-898d-211d9b5a1d99", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "3a5f05ad-be10-4ecd-bf79-ad4b9f5adddd", "fields": {"ip": "87.87.87.87", "hostname": "michelle68", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.880Z", "comment": "", "groups": ["7f472514-ded2-4a09-8ff0-b9b91f85ca8e", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e", "4c145ce1-c3e3-441a-a86d-69df17b7101f"], "system_users": ["6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "3a6561c6-2b3a-4ad8-b17d-b95668af9b61", "fields": {"ip": "54.54.54.54", "hostname": "patricia71", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.686Z", "comment": "", "groups": ["556852cc-b5b6-41df-b24b-4d443de4dfdf", "2da084a8-bdd6-42ee-a39e-9d78c7cf0535", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "587dbf83-2f91-4c8b-8d75-59807dfbcefd", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "3eccfe2a-f18b-4f67-95e4-cbc5bb12f124", "fields": {"ip": "82.82.82.82", "hostname": "ann84", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.695Z", "comment": "", "groups": ["913f9232-bd66-40f8-80cf-21593dddb59b", "c9a5c3b3-caf2-40c6-9282-83800a4a72c9", "90f583be-21d6-43b0-af42-6a6d22b4e15f"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "3f65b084-1c8d-45ba-a9b3-3c825a3833f5", "fields": {"ip": "15.15.15.15", "hostname": "wanda80", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.392Z", "comment": "", "groups": ["1f128730-d0eb-4e96-b144-f8425bc226dc", "19c435b1-bf74-4870-a16c-8ebf462fa6da", "4511fc92-9c49-4806-94b7-ea21ce11217d"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "2e83e252-b84c-4fab-b055-389d07c3acd8"]}}, {"model": "assets.asset", "pk": "3ff86a95-7afd-4ff1-ad1d-5ceee9d34153", "fields": {"ip": "8.8.8.8", "hostname": "phyllis79", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.175Z", "comment": "", "groups": ["628f77e6-4410-4779-88a6-2f622a92a784", "6ef8cd9a-1995-4ff8-a83a-907d97b67762", "1b66354b-2a36-423e-a59c-88ac6f73c928"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "428238fb-e317-4bde-b88b-f1d4f80beba7", "fields": {"ip": "51.51.51.51", "hostname": "janice75", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.577Z", "comment": "", "groups": ["1f5f2fac-3463-4215-8290-ce84ae8809ac", "5b117b17-c720-4c86-bd8f-ddcdf770515f", "bd317a7f-4ba8-4c6c-9ce2-5e39a24817fe"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "4793dd99-42c8-42a0-87d9-614641e3f334", "fields": {"ip": "18.18.18.18", "hostname": "bonnie93", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.488Z", "comment": "", "groups": ["8182f741-e273-49e3-b0cc-c531391da513", "4ff4976f-2364-454b-907e-6e1be1e09bd9", "4511fc92-9c49-4806-94b7-ea21ce11217d"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "49738cda-9467-48dd-84f4-7866c28b051c", "fields": {"ip": "11.11.11.11", "hostname": "donna73", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.268Z", "comment": "", "groups": ["4a24f49f-2d90-4474-bb4a-93295db257ce", "e919d5b9-f718-4205-b16c-55a5b45f2e50", "d97cbcde-d878-4787-be9f-737e6950f9b0"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "a08c8830-7838-4660-9072-fd038ecb02f4", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "4d7a9aeb-6614-4d9f-afba-f331aa54185a", "fields": {"ip": "17.17.17.17", "hostname": "judy83", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.456Z", "comment": "", "groups": ["8738ff4e-64a3-419d-8fa0-b093640dee59", "33449baf-3516-4ba0-a9f5-b878ac1da501", "c9a5c3b3-caf2-40c6-9282-83800a4a72c9"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "5613ee31-0542-41f7-b117-92bc049b7a4d", "fields": {"ip": "73.73.73.73", "hostname": "joan77", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.347Z", "comment": "", "groups": ["51d39285-f6c6-467b-8d6a-089c05c9670e", "4dd7deb8-18df-4c9a-9085-0abb84af419c", "55c19958-5101-4dbc-94c7-9e1512e4c4a2"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "587ca351-2a78-489d-bc18-2b287d7ceff6", "fields": {"ip": "27.27.27.27", "hostname": "anna69", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.780Z", "comment": "", "groups": ["8c045cf6-befa-40f9-8f86-84f8c4b0aa30", "6c64d761-87e4-4277-8210-f63bdf6641c7", "9164d22e-d5a4-4584-a073-5e8208d79d28"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "59749e11-2375-4adb-8728-fe96637623d3", "fields": {"ip": "38.38.38.38", "hostname": "denise93", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.131Z", "comment": "", "groups": ["cc5331db-4a80-45d9-88b9-62b7c164bcfd", "23714c28-4186-413a-b1c4-6f688c2ec85c", "544592b9-052b-4169-afd6-bc1cb722d8a3"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "5d06eb4a-c175-4dd3-a18a-c7098ed39de1", "fields": {"ip": "7.7.7.7", "hostname": "kimberly73", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.140Z", "comment": "", "groups": ["a274e6ce-b2d0-4ffe-a22e-6cdc4d3743be", "8fb62b59-6cae-499c-853d-d7d4c0e91a57", "1e5c7012-46e5-4c71-b95b-911b24f63a13"], "system_users": ["587dbf83-2f91-4c8b-8d75-59807dfbcefd", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "5fd6a42a-8226-4e0d-8dd8-585052b28a4b", "fields": {"ip": "81.81.81.81", "hostname": "lori85", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.657Z", "comment": "", "groups": ["ff36e4da-5156-48a1-9bec-f54b107cfa02", "4511fc92-9c49-4806-94b7-ea21ce11217d", "262f8fd6-a9e5-4687-b1bd-e6983fffe60f"], "system_users": ["6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "9fcfed52-7476-4345-ba2f-c246e8e27522", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "603e0f06-4453-42bb-ae58-a2e1193eeb98", "fields": {"ip": "24.24.24.24", "hostname": "marilyn79", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.681Z", "comment": "", "groups": ["0e8bcd4b-2163-4c15-90c0-9789f4232ba1", "9164d22e-d5a4-4584-a073-5e8208d79d28", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "617cf548-a72e-459c-bc83-7acc4da1f32d", "fields": {"ip": "21.21.21.21", "hostname": "frances77", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.586Z", "comment": "", "groups": ["8fb62b59-6cae-499c-853d-d7d4c0e91a57", "1f5f2fac-3463-4215-8290-ce84ae8809ac", "544592b9-052b-4169-afd6-bc1cb722d8a3"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "694215ef-23b3-4b90-899f-3af1aaed82fd", "fields": {"ip": "79.79.79.79", "hostname": "gloria72", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.581Z", "comment": "", "groups": ["8fb62b59-6cae-499c-853d-d7d4c0e91a57", "92d63bd2-4797-4789-a2dc-83aa9f9c9276", "a630b6ff-a7bb-4fb2-8073-75322865320b"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "f056becf-3b4b-400e-898d-211d9b5a1d99", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "6f6e3ba3-db28-4f9f-b403-95075b0aff40", "fields": {"ip": "97.97.97.97", "hostname": "andrew81", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.270Z", "comment": "", "groups": ["aff61d74-9aa1-4f90-af38-fd0f4985c9d4", "6fb8cec4-ed7a-40ae-9c13-36e514d05ce7", "5e3cc371-a2d1-49cb-af5b-56cf54e9912f"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "76f0d5a6-c66c-4436-9dee-c82c0f3f91f6", "fields": {"ip": "29.29.29.29", "hostname": "ruby76", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.845Z", "comment": "", "groups": ["8fb62b59-6cae-499c-853d-d7d4c0e91a57", "71a93e4a-7e0a-49b5-9d91-99c0d45ac2a9", "5e3cc371-a2d1-49cb-af5b-56cf54e9912f"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "7b6f3a7f-13e6-4aa0-94e0-de9d2128bd4f", "fields": {"ip": "65.65.65.65", "hostname": "kathleen73", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.063Z", "comment": "", "groups": ["a851f4f0-532b-4d1a-a610-5b02eb0027af", "4c145ce1-c3e3-441a-a86d-69df17b7101f", "6e4f95c0-3aba-4301-bfe2-e6dc9a370048"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "f056becf-3b4b-400e-898d-211d9b5a1d99", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "7ccb267c-5943-40fa-a9df-2593fa34c2e4", "fields": {"ip": "37.37.37.37", "hostname": "lois67", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.100Z", "comment": "", "groups": ["ff36e4da-5156-48a1-9bec-f54b107cfa02", "7f472514-ded2-4a09-8ff0-b9b91f85ca8e", "92cbd38e-f65b-4a3b-8956-5d53d00cc1ab"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "f056becf-3b4b-400e-898d-211d9b5a1d99", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "7da0b957-0e51-466d-896d-f96104aefebf", "fields": {"ip": "23.23.23.23", "hostname": "catherine80", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.648Z", "comment": "", "groups": ["e919d5b9-f718-4205-b16c-55a5b45f2e50", "23714c28-4186-413a-b1c4-6f688c2ec85c"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "7e4d3f2e-93ab-4dc2-95b1-551b96716805", "fields": {"ip": "41.41.41.41", "hostname": "linda77", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.227Z", "comment": "", "groups": ["94707978-527b-4782-8451-519620c3ce38", "a630b6ff-a7bb-4fb2-8073-75322865320b"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "7e610acd-d3ad-4c96-9b61-a0504bc3423d", "fields": {"ip": "64.64.64.64", "hostname": "laura94", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.025Z", "comment": "", "groups": ["8fb62b59-6cae-499c-853d-d7d4c0e91a57", "33449baf-3516-4ba0-a9f5-b878ac1da501", "1b66354b-2a36-423e-a59c-88ac6f73c928"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "a08c8830-7838-4660-9072-fd038ecb02f4", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "7fade84a-c1f2-4bf2-8670-0aba91a4fec9", "fields": {"ip": "22.22.22.22", "hostname": "judy94", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.617Z", "comment": "", "groups": ["e3063d5f-25a8-402a-9b46-51cfb8235db6", "ff83212a-498d-49ce-abbc-22d13119871c", "5e3cc371-a2d1-49cb-af5b-56cf54e9912f"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "81f090e4-c564-47c7-8637-a5982ce26d0f", "fields": {"ip": "42.42.42.42", "hostname": "pamela79", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.258Z", "comment": "", "groups": ["d7ba405e-5cc8-40e2-98c5-d2cdbfb2c1bb", "90f583be-21d6-43b0-af42-6a6d22b4e15f", "6e4f95c0-3aba-4301-bfe2-e6dc9a370048"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "2e83e252-b84c-4fab-b055-389d07c3acd8"]}}, {"model": "assets.asset", "pk": "823cf499-388e-4626-8d47-c4872d7ce140", "fields": {"ip": "20.20.20.20", "hostname": "betty78", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.554Z", "comment": "", "groups": ["81f2bad8-24ab-4f14-81c9-1c0b11e2e158", "8c963f9a-52b0-47ce-8d56-41d8810513f2", "4511fc92-9c49-4806-94b7-ea21ce11217d"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "83164ebf-dab8-47c3-90fa-bce35be99e98", "fields": {"ip": "40.40.40.40", "hostname": "judith75", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.196Z", "comment": "", "groups": ["55c19958-5101-4dbc-94c7-9e1512e4c4a2", "1336c3b8-4c15-493d-a180-e0fc6ad060b2", "a12acc55-4021-4df9-b591-5a03245a5208"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "9fcfed52-7476-4345-ba2f-c246e8e27522", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "89c24676-008b-4ef3-b487-f18630a1b8bb", "fields": {"ip": "95.95.95.95", "hostname": "jean88", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.190Z", "comment": "", "groups": ["1154dbfa-b520-462f-a169-a560b1598f44", "92cbd38e-f65b-4a3b-8956-5d53d00cc1ab", "6e4f95c0-3aba-4301-bfe2-e6dc9a370048"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "2e83e252-b84c-4fab-b055-389d07c3acd8", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "8a56b198-b7a5-464e-aef8-71e54ba87956", "fields": {"ip": "39.39.39.39", "hostname": "kathryn84", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.163Z", "comment": "", "groups": ["09168b5c-4d5f-484b-8166-d9026063ab0b", "71a93e4a-7e0a-49b5-9d91-99c0d45ac2a9", "9164d22e-d5a4-4584-a073-5e8208d79d28"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "8d5c67c1-3aab-4a98-a4a0-acf24b16b18a", "fields": {"ip": "10.10.10.10", "hostname": "virginia94", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.237Z", "comment": "", "groups": ["e46c7191-8f2a-4c01-be61-90445d409c47", "51d39285-f6c6-467b-8d6a-089c05c9670e", "dec1d0de-875a-4930-b4c8-f17f60f9af2f"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "8db73974-5081-4d16-a398-8dde704cc4eb", "fields": {"ip": "67.67.67.67", "hostname": "diane83", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.137Z", "comment": "", "groups": ["fffe1e01-b3d8-43e6-a92c-a651eda567ec", "1f128730-d0eb-4e96-b144-f8425bc226dc", "1ed242df-3e7b-459a-876b-3e9be645ef70"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "913b0950-9d03-4d20-aa0a-3075fd67e450", "fields": {"ip": "78.78.78.78", "hostname": "jessica83", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.535Z", "comment": "", "groups": ["19c435b1-bf74-4870-a16c-8ebf462fa6da", "4a24f49f-2d90-4474-bb4a-93295db257ce", "87a4a0fb-7f42-49f2-add9-dac68c528586"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "f056becf-3b4b-400e-898d-211d9b5a1d99", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "96a7b054-fa30-4274-809c-f6ae7e6b13fd", "fields": {"ip": "35.35.35.35", "hostname": "nancy85", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.035Z", "comment": "", "groups": ["68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "8c963f9a-52b0-47ce-8d56-41d8810513f2", "fa887c60-4c10-426c-ad53-f1724c012af5"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "97e8f7d4-1f55-4242-9eb8-df6ba3e74c1e", "fields": {"ip": "13.13.13.13", "hostname": "deborah67", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.329Z", "comment": "", "groups": ["51d39285-f6c6-467b-8d6a-089c05c9670e", "68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "4511fc92-9c49-4806-94b7-ea21ce11217d"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "f056becf-3b4b-400e-898d-211d9b5a1d99"]}}, {"model": "assets.asset", "pk": "986aa470-91cf-4d6b-a33d-b4af5bf36358", "fields": {"ip": "49.49.49.49", "hostname": "diane94", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.508Z", "comment": "", "groups": ["628f77e6-4410-4779-88a6-2f622a92a784", "f5f374b4-5784-412f-b83c-60f42b3ed2b1", "29ad2563-c5eb-4963-9314-d1fc6a49f51a"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "99949c8f-cf5a-41a7-8c81-42da6d457a52", "fields": {"ip": "63.63.63.63", "hostname": "teresa81", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.988Z", "comment": "", "groups": ["4a437dbf-ae1a-47e8-8e21-0687891a479b", "0e8bcd4b-2163-4c15-90c0-9789f4232ba1", "ef8818e7-1e9c-4868-9d9a-7985618ae897"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "9c2b3703-0df0-46d0-a0c8-19b96ec519e8", "fields": {"ip": "84.84.84.84", "hostname": "susan86", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.768Z", "comment": "", "groups": ["19c435b1-bf74-4870-a16c-8ebf462fa6da", "7f99a303-baf6-4a3a-b2d5-38b42083c6ed", "1336c3b8-4c15-493d-a180-e0fc6ad060b2"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "9f3f9503-7a27-4c11-b1a1-b36cd2288c5b", "fields": {"ip": "33.33.33.33", "hostname": "diana73", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.972Z", "comment": "", "groups": ["e3063d5f-25a8-402a-9b46-51cfb8235db6", "544592b9-052b-4169-afd6-bc1cb722d8a3", "1ed242df-3e7b-459a-876b-3e9be645ef70"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "a266ea31-4c68-4038-a06f-1b294b14692a", "fields": {"ip": "70.70.70.70", "hostname": "janice76", "port": 22, "admin_user": "f247e2af-7e72-40ea-9ec7-15a1dd2cbbc3", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.241Z", "comment": "", "groups": ["4a437dbf-ae1a-47e8-8e21-0687891a479b", "6ef8cd9a-1995-4ff8-a83a-907d97b67762", "50048717-231c-47d0-94c1-801f098f6814"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3"]}}, {"model": "assets.asset", "pk": "a3f4e0ec-cb1b-4905-ac6a-92eb937eebe5", "fields": {"ip": "5.5.5.5", "hostname": "katherine66", "port": 22, "admin_user": "26267cd3-4b22-41a6-ae76-327195767ee7", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.075Z", "comment": "", "groups": ["7f472514-ded2-4a09-8ff0-b9b91f85ca8e", "50048717-231c-47d0-94c1-801f098f6814", "ba8ebaa3-499d-4afe-9e29-a3069b5470df"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "a490a8b4-4e0c-4a23-82d0-ddfd8a868ea6", "fields": {"ip": "92.92.92.92", "hostname": "joan88", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.073Z", "comment": "", "groups": ["d7ba405e-5cc8-40e2-98c5-d2cdbfb2c1bb", "a630b6ff-a7bb-4fb2-8073-75322865320b", "ff83212a-498d-49ce-abbc-22d13119871c"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "a9c60e1a-345f-43fd-af43-6ca2d1376c13", "fields": {"ip": "77.77.77.77", "hostname": "emily68", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.498Z", "comment": "", "groups": ["a851f4f0-532b-4d1a-a610-5b02eb0027af", "7fa66d80-3134-483b-add5-3082d5fc2829", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "a9dbbd26-33ab-419a-b5a5-9e461c81d3b6", "fields": {"ip": "34.34.34.34", "hostname": "mary65", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.004Z", "comment": "", "groups": ["ff36e4da-5156-48a1-9bec-f54b107cfa02", "4c145ce1-c3e3-441a-a86d-69df17b7101f", "7a313985-9460-41df-bd86-7f3c19ed85fa"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "aefe5248-7ff4-4c44-886e-56d71face029", "fields": {"ip": "46.46.46.46", "hostname": "carolyn87", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.402Z", "comment": "", "groups": ["7f99a303-baf6-4a3a-b2d5-38b42083c6ed", "a630b6ff-a7bb-4fb2-8073-75322865320b", "dec1d0de-875a-4930-b4c8-f17f60f9af2f"], "system_users": ["9fcfed52-7476-4345-ba2f-c246e8e27522", "587dbf83-2f91-4c8b-8d75-59807dfbcefd", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "afbecdda-b4bc-4aa7-a8dc-ea5ecca2b322", "fields": {"ip": "80.80.80.80", "hostname": "karen93", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.617Z", "comment": "", "groups": ["19c435b1-bf74-4870-a16c-8ebf462fa6da", "881a0460-7989-42af-a588-957efe57fb8e", "83810313-256d-4a42-9be7-b8254d37111f"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "b519b4d8-0c09-4bde-a9e7-f83a54526289", "fields": {"ip": "99.99.99.99", "hostname": "judy72", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.338Z", "comment": "", "groups": ["fd6b95d7-57ae-4351-b37b-067772887179", "94707978-527b-4782-8451-519620c3ce38", "822af801-f8ab-4980-9c50-9fbe3ef66e02"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "b738b7aa-81fa-4789-bf86-ab6b42e609da", "fields": {"ip": "30.30.30.30", "hostname": "virginia74", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.877Z", "comment": "", "groups": ["13e7438c-a4ec-4c75-b09f-422c157bd76c", "fc7fc3d1-903e-4109-a712-26e0c8936dfa", "37f2a85d-be6f-498e-9847-3a071fb22544"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "b902cf41-a9fb-4c0c-9ad1-9141676c1a33", "fields": {"ip": "62.62.62.62", "hostname": "phyllis74", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.950Z", "comment": "", "groups": ["8c045cf6-befa-40f9-8f86-84f8c4b0aa30", "2da084a8-bdd6-42ee-a39e-9d78c7cf0535", "9164d22e-d5a4-4584-a073-5e8208d79d28"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "bfa5238f-ba6a-40dd-92bb-71a475eaaa23", "fields": {"ip": "71.71.71.71", "hostname": "gloria71", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.277Z", "comment": "", "groups": ["8738ff4e-64a3-419d-8fa0-b093640dee59", "a274e6ce-b2d0-4ffe-a22e-6cdc4d3743be", "f5f374b4-5784-412f-b83c-60f42b3ed2b1"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3"]}}, {"model": "assets.asset", "pk": "c620b7e1-0466-42a0-93a0-c475ee8f7fff", "fields": {"ip": "12.12.12.12", "hostname": "mary70", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.298Z", "comment": "", "groups": ["62a70279-caef-49bb-8af9-14d9c15ea855", "90f583be-21d6-43b0-af42-6a6d22b4e15f", "1336c3b8-4c15-493d-a180-e0fc6ad060b2"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "c69e28c5-5762-45cb-8529-982ef7c4aec5", "fields": {"ip": "59.59.59.59", "hostname": "doris66", "port": 22, "admin_user": "992c01fa-241d-4fc5-9c2f-92ebf130fc41", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.844Z", "comment": "", "groups": ["1f128730-d0eb-4e96-b144-f8425bc226dc", "37f2a85d-be6f-498e-9847-3a071fb22544", "e11fcf30-c50b-4df6-8457-736208b1a3a1"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "ca39d0c2-4557-45dc-8be8-84d124ac7659", "fields": {"ip": "68.68.68.68", "hostname": "cynthia68", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.171Z", "comment": "", "groups": ["4a24f49f-2d90-4474-bb4a-93295db257ce", "5b117b17-c720-4c86-bd8f-ddcdf770515f", "4c145ce1-c3e3-441a-a86d-69df17b7101f"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "cd1e8581-93be-4884-a810-1098011ca39a", "fields": {"ip": "32.32.32.32", "hostname": "mary80", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.940Z", "comment": "", "groups": ["68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "913f9232-bd66-40f8-80cf-21593dddb59b", "7a9da454-b9bb-46e1-bcf7-05232f263138"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "cdd42e4c-df6c-4ebc-ab46-052fea50eb6b", "fields": {"ip": "52.52.52.52", "hostname": "ashley69", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.612Z", "comment": "", "groups": ["51d39285-f6c6-467b-8d6a-089c05c9670e", "8fb62b59-6cae-499c-853d-d7d4c0e91a57", "e919d5b9-f718-4205-b16c-55a5b45f2e50"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "2e83e252-b84c-4fab-b055-389d07c3acd8", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "ced65bbb-2016-47e8-87ef-73fca713fff1", "fields": {"ip": "45.45.45.45", "hostname": "catherine90", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.364Z", "comment": "", "groups": ["fffe1e01-b3d8-43e6-a92c-a651eda567ec", "4a437dbf-ae1a-47e8-8e21-0687891a479b", "23714c28-4186-413a-b1c4-6f688c2ec85c"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "2e83e252-b84c-4fab-b055-389d07c3acd8"]}}, {"model": "assets.asset", "pk": "cfcfb53b-5ffe-4e27-ab8b-75b95644191e", "fields": {"ip": "86.86.86.86", "hostname": "catherine93", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.842Z", "comment": "", "groups": ["1f5f2fac-3463-4215-8290-ce84ae8809ac", "7f99a303-baf6-4a3a-b2d5-38b42083c6ed", "83810313-256d-4a42-9be7-b8254d37111f"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "d3f3cde0-b4b8-4dc1-89ad-5473e6d85c93", "fields": {"ip": "53.53.53.53", "hostname": "kathleen75", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.649Z", "comment": "", "groups": ["a274e6ce-b2d0-4ffe-a22e-6cdc4d3743be", "67be35c1-440a-41ef-aa33-20c17ba1ecb6", "50048717-231c-47d0-94c1-801f098f6814"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "daeaee6e-ec14-48f4-86e7-bfb0845e8aa5", "fields": {"ip": "90.90.90.90", "hostname": "alice92", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.997Z", "comment": "", "groups": ["81f2bad8-24ab-4f14-81c9-1c0b11e2e158", "ff36e4da-5156-48a1-9bec-f54b107cfa02", "37f2a85d-be6f-498e-9847-3a071fb22544"], "system_users": ["a08c8830-7838-4660-9072-fd038ecb02f4", "9fcfed52-7476-4345-ba2f-c246e8e27522"]}}, {"model": "assets.asset", "pk": "de19760b-87de-43a5-bb61-3298ee528c7b", "fields": {"ip": "14.14.14.14", "hostname": "helen65", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.360Z", "comment": "", "groups": ["68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "1154dbfa-b520-462f-a169-a560b1598f44", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e"], "system_users": ["587dbf83-2f91-4c8b-8d75-59807dfbcefd", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "df93cb9c-9c1a-40d5-943a-d788b182a0ee", "fields": {"ip": "25.25.25.25", "hostname": "alice73", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.715Z", "comment": "", "groups": ["cc5331db-4a80-45d9-88b9-62b7c164bcfd", "822af801-f8ab-4980-9c50-9fbe3ef66e02", "37f2a85d-be6f-498e-9847-3a071fb22544"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "e4177209-0df9-4a29-92bf-080a7a80e5b1", "fields": {"ip": "98.98.98.98", "hostname": "maria77", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.306Z", "comment": "", "groups": ["881a0460-7989-42af-a588-957efe57fb8e", "6fb8cec4-ed7a-40ae-9c13-36e514d05ce7", "7a9da454-b9bb-46e1-bcf7-05232f263138"], "system_users": ["c1611e85-00a2-45e8-a94e-410dfc8ce8b3", "383481b8-6fbf-4e94-b648-0d2de1f07f77", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "e62badbb-d053-4ae6-83ca-1b7bbb3724c3", "fields": {"ip": "75.75.75.75", "hostname": "kathy84", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "df56ab04-6a2c-43b3-a5a2-9730e28e4e73", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.424Z", "comment": "", "groups": ["ce263cf4-3210-42fa-8869-06783f1e8973", "913f9232-bd66-40f8-80cf-21593dddb59b", "6c64d761-87e4-4277-8210-f63bdf6641c7"], "system_users": ["383481b8-6fbf-4e94-b648-0d2de1f07f77", "a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "e6a84edb-2bb4-4e48-8932-ce497c2aa8f5", "fields": {"ip": "43.43.43.43", "hostname": "nancy74", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.296Z", "comment": "", "groups": ["fffe1e01-b3d8-43e6-a92c-a651eda567ec", "556852cc-b5b6-41df-b24b-4d443de4dfdf", "dec1d0de-875a-4930-b4c8-f17f60f9af2f"], "system_users": ["587dbf83-2f91-4c8b-8d75-59807dfbcefd", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "e9370b0d-324b-4c59-bc0d-2c5e00beef0b", "fields": {"ip": "26.26.26.26", "hostname": "ruth75", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "c0df1aa0-bde7-4226-a69a-d02976888456", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.747Z", "comment": "", "groups": ["c9a5c3b3-caf2-40c6-9282-83800a4a72c9", "8c963f9a-52b0-47ce-8d56-41d8810513f2", "ff83212a-498d-49ce-abbc-22d13119871c"], "system_users": ["f056becf-3b4b-400e-898d-211d9b5a1d99", "2e83e252-b84c-4fab-b055-389d07c3acd8", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "eaec3237-d344-4099-83a1-73c2f3c4c01d", "fields": {"ip": "91.91.91.91", "hostname": "anna88", "port": 22, "admin_user": "5e9a3c79-4b3b-4ddc-9f12-7c99b1edf976", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:56.035Z", "comment": "", "groups": ["5503bc69-fc4d-4e34-9ef9-b780a654576c", "6a158957-3ab2-4af6-8ba0-2b30e22428ad", "18fede16-2309-40eb-a9b7-e159d1fefa41"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8"]}}, {"model": "assets.asset", "pk": "eb0187b1-d448-421a-8aa0-36b3d7ae0954", "fields": {"ip": "9.9.9.9", "hostname": "sharon86", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.206Z", "comment": "", "groups": ["cc5331db-4a80-45d9-88b9-62b7c164bcfd", "d2adba2e-73ac-4036-871e-db4b4c2a1a70", "09168b5c-4d5f-484b-8166-d9026063ab0b"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "assets.asset", "pk": "eb8ead8e-7fa0-42f7-977b-938aa514235b", "fields": {"ip": "4.4.4.4", "hostname": "diana86", "port": 22, "admin_user": "61423c66-048f-4125-9844-6a15557cd345", "cluster": "5782020d-58a5-4e69-ae9f-157caf64e7f0", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.041Z", "comment": "", "groups": ["7f472514-ded2-4a09-8ff0-b9b91f85ca8e", "8182f741-e273-49e3-b0cc-c531391da513", "6c64d761-87e4-4277-8210-f63bdf6641c7"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "a08c8830-7838-4660-9072-fd038ecb02f4", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a"]}}, {"model": "assets.asset", "pk": "f1e5be58-0ddc-442a-be07-67e84b648e01", "fields": {"ip": "55.55.55.55", "hostname": "pamela70", "port": 22, "admin_user": "7f4d01fb-e8b7-471c-8cf8-ef1ea75e5bb5", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.724Z", "comment": "", "groups": ["e3063d5f-25a8-402a-9b46-51cfb8235db6", "cc5331db-4a80-45d9-88b9-62b7c164bcfd", "f5e7a82d-95a1-494d-91e0-8a56608b8c8e"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "587dbf83-2f91-4c8b-8d75-59807dfbcefd"]}}, {"model": "assets.asset", "pk": "f9d062aa-4cf8-4e02-8d7c-a3675f35288f", "fields": {"ip": "19.19.19.19", "hostname": "carol69", "port": 22, "admin_user": "7de29b0c-15ba-4471-9c51-96c3cf6a44e7", "cluster": "7cf2ee9e-9cea-4a5f-b822-38c37c449a97", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:53.521Z", "comment": "", "groups": ["913f9232-bd66-40f8-80cf-21593dddb59b", "c9a5c3b3-caf2-40c6-9282-83800a4a72c9", "29ad2563-c5eb-4963-9314-d1fc6a49f51a"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "fb5a8c7d-1208-45d2-b07f-4d313050b6a4", "fields": {"ip": "69.69.69.69", "hostname": "lois64", "port": 22, "admin_user": "5c986676-bfd7-4ade-8b9d-3631a7b9b50e", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.207Z", "comment": "", "groups": ["67be35c1-440a-41ef-aa33-20c17ba1ecb6", "29ad2563-c5eb-4963-9314-d1fc6a49f51a", "1dd09ace-5b53-4a6e-90a7-fbb9c718d0f5"], "system_users": ["2e83e252-b84c-4fab-b055-389d07c3acd8", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "fc9b4ee5-4e5c-47bb-9f55-e144cd4b3027", "fields": {"ip": "74.74.74.74", "hostname": "susan87", "port": 22, "admin_user": "68d875b0-162f-4360-abcf-b10bfae3f451", "cluster": "6a75b014-2fb3-494c-910d-fd6f39a5e409", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:55.387Z", "comment": "", "groups": ["d7ba405e-5cc8-40e2-98c5-d2cdbfb2c1bb", "dec1d0de-875a-4930-b4c8-f17f60f9af2f", "37f2a85d-be6f-498e-9847-3a071fb22544"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "6ba87731-d4c4-4acc-bd97-c7be78d60b3a", "7540c5c1-6380-4928-ba1b-0eab77de20e9"]}}, {"model": "assets.asset", "pk": "fd61d29a-6513-4b26-94dc-63cf9d252770", "fields": {"ip": "36.36.36.36", "hostname": "carol94", "port": 22, "admin_user": "6617bb42-6281-4095-ad30-4cefa0e2231e", "cluster": "39db8373-d161-4832-83e3-6139d10e827b", "is_active": true, "type": "Server", "env": "Prod", "status": "In use", "public_ip": null, "remote_card_ip": null, "cabinet_no": null, "cabinet_pos": null, "number": null, "vendor": null, "model": null, "sn": null, "cpu_model": null, "cpu_count": null, "cpu_cores": null, "memory": null, "disk_total": null, "disk_info": null, "platform": null, "os": null, "os_version": null, "os_arch": null, "hostname_raw": null, "created_by": "Fake", "date_created": "2017-12-07T08:20:54.068Z", "comment": "", "groups": ["fffe1e01-b3d8-43e6-a92c-a651eda567ec", "68aea94a-2a82-4a6a-87f4-1e280e1bbbe4", "c9a5c3b3-caf2-40c6-9282-83800a4a72c9"], "system_users": ["a7786710-df8c-4abd-9946-f7ceceaed688", "2e83e252-b84c-4fab-b055-389d07c3acd8", "a08c8830-7838-4660-9072-fd038ecb02f4"]}}, {"model": "users.user", "pk": "01545644-ae90-4a64-935a-04776b70c8c0", "fields": {"password": "pbkdf2_sha256$36000$ekPadeuXH0YD$B3MpYATjENErBYzMcKlaIN1pjAlctTQDe+6KGCYRelM=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.888Z", "username": "robin91", "name": "Heather Nichols", "email": "kimberly@twitternation.name", "role": "App", "avatar": "", "wechat": "brenda93", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.888Z", "created_by": "ruth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "0174b307-b625-4734-9258-6d1c1a84af00", "fields": {"password": "pbkdf2_sha256$36000$jWY6Tjg0AbC5$lCJOQ8V6tDeefutsMx/ku+fEfOzPca5b05SllmTRdSY=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.290Z", "username": "lisa90", "name": "Kelly Carpenter", "email": "anna@voolia.biz", "role": "App", "avatar": "", "wechat": "wanda93", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Pellentesque eget nunc.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.290Z", "created_by": "christine83", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "03c53c8b-258d-4e25-9739-b511288d38e1", "fields": {"password": "pbkdf2_sha256$36000$OFR3TTgmcE15$bxK6/Y8U/O7uAfidX0tlouOVUpT1c6QWwNYgnKHOBZU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.215Z", "username": "kimberly70", "name": "Carol Thomas", "email": "jacqueline@thoughtbridge.org", "role": "Admin", "avatar": "", "wechat": "robin73", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi a ipsum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.215Z", "created_by": "cynthia70", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "05de0183-7c0b-41d1-9023-e0a2fcde256e", "fields": {"password": "pbkdf2_sha256$36000$ZEdnpLFBzY84$dA3O+/96yI+mzIjmwYaAO3Jf9Nt5NGsbGht3DnuaGDM=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:44.938Z", "username": "cynthia70", "name": "Frances Alexander", "email": "carolyn@linktype.net", "role": "Admin", "avatar": "", "wechat": "marie70", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Donec semper sapien a libero.", "is_first_login": false, "date_expired": "2087-11-20T08:20:44.939Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "0bfe154a-14df-4ddf-85b8-1df0d2ec91a2", "fields": {"password": "pbkdf2_sha256$36000$DI77WJQFbxNV$NfLn+H46T0ZNNtR5OegxGPLbYw61hpZeDt0rPsIm3UI=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.357Z", "username": "maria71", "name": "Jacqueline Henry", "email": "kathryn@eire.org", "role": "User", "avatar": "", "wechat": "linda73", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.357Z", "created_by": "brenda80", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "0fab488e-2237-4b61-811f-482a95580e05", "fields": {"password": "pbkdf2_sha256$36000$W0HfNiZd6mBZ$aht8c0BpMydvOawE6Rx66zlHoGno9wN/Jt2di7uAcIc=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.080Z", "username": "doris76", "name": "Lois Brooks", "email": "diane@avaveo.org", "role": "User", "avatar": "", "wechat": "susan92", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Duis ac nibh.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.080Z", "created_by": "rachel76", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "106384fb-22d3-4380-853a-bfd112f3d9bf", "fields": {"password": "pbkdf2_sha256$36000$0OkKTb7jZsM3$EL5H0IgRclu/vJ2KRLBUTi7Zmr8X0wMQW4S1kBBVn9M=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.038Z", "username": "katherine67", "name": "Diana Hunter", "email": "doris@fadeo.mil", "role": "Admin", "avatar": "", "wechat": "joan79", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Aenean sit amet justo.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.038Z", "created_by": "judith70", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "11946ae8-f14e-4e35-8b80-431dd3e43c6a", "fields": {"password": "pbkdf2_sha256$36000$XDsnwsQKLSHU$rM3WVBBHaaTSlhKFb6zwhDPVzpGnRm8i1ZRc42pLgKw=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.688Z", "username": "teresa94", "name": "Heather Cole", "email": "amanda@dabvine.edu", "role": "User", "avatar": "", "wechat": "ruth81", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi sem mauris, laoreet ut, rhoncus aliquet, pulvinar sed, nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.688Z", "created_by": "cynthia75", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "129cfef8-32aa-4d30-a6ca-c591468b7b2f", "fields": {"password": "pbkdf2_sha256$36000$dUSbLiakjtuL$dJk6vp78lzsW8wYkUZU0sI3FD27jZmgW9Afj1S1n1Qg=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.021Z", "username": "mary85", "name": "Teresa Payne", "email": "sandra@voomm.net", "role": "Admin", "avatar": "", "wechat": "frances82", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Praesent blandit.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.021Z", "created_by": "deborah79", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "13d4be0b-b02c-4e23-a7ed-3f2813a2d6f4", "fields": {"password": "pbkdf2_sha256$36000$eivp88seIbfP$2xP0MG8vEmuRz/UkgmAqbvN+UvEgWwYWvPnDnilSnrc=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.813Z", "username": "cheryl72", "name": "Kathleen Jacobs", "email": "virginia@dabfeed.edu", "role": "Admin", "avatar": "", "wechat": "diana79", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi ut odio.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.814Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "19a40886-4756-4a98-a5f7-71205ebe7f9f", "fields": {"password": "pbkdf2_sha256$36000$JpQ7M699PJZE$T+TrPlf5TOO4T/R6wNL+5gmGcHSdxzTA/FSRtSgNmGk=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.750Z", "username": "barbara67", "name": "Phyllis Reyes", "email": "beverly@avamm.mil", "role": "Admin", "avatar": "", "wechat": "nancy72", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Praesent id massa id nisl venenatis lacinia.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.750Z", "created_by": "elizabeth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "19f072c2-ad1f-4437-be07-dcca2436e937", "fields": {"password": "pbkdf2_sha256$36000$w42gsygNqjBe$LUahp6/Un0oCF8tT5s+1CLZa3eMn0J7wKH42iJGvYJ0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.436Z", "username": "janice76", "name": "Paula Rivera", "email": "lori@eamia.net", "role": "User", "avatar": "", "wechat": "denise78", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Mauris sit amet eros.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.436Z", "created_by": "doris76", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "1a1b6569-4f63-4c02-b3c5-ce83cbba32c7", "fields": {"password": "pbkdf2_sha256$36000$yqJuNTFxvcB2$UV4cASSnwfssde9aL32use1eejlxCj1U4G27eQNLAx0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.729Z", "username": "sandra90", "name": "Janice Johnson", "email": "katherine@tekfly.mil", "role": "User", "avatar": "", "wechat": "mary88", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nam congue, risus semper porta volutpat, quam pede lobortis ligula, sit amet eleifend pede libero quis orci.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.729Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "1bf05b47-b4e3-421b-a733-1cff53582818", "fields": {"password": "pbkdf2_sha256$36000$80X7Jk8wxsiI$DErHf832Y3dK9NwaX/fPqXwPVELjmpvIkZkPk/JaFBU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.613Z", "username": "deborah92", "name": "Ann Knight", "email": "jean@skaboo.info", "role": "Admin", "avatar": "", "wechat": "paul69", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Quisque arcu libero, rutrum ac, lobortis vel, dapibus at, diam.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.613Z", "created_by": "helen87", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "2400a442-7509-4f15-b998-3adae95236cb", "fields": {"password": "pbkdf2_sha256$36000$0JwwziwRnWNz$UUctXyvVOCnwdOlt5l9s44eWTtFTiDWwIulv+J9i+8c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.100Z", "username": "lisa94", "name": "Sandra Wells", "email": "rebecca@gigabox.biz", "role": "Admin", "avatar": "", "wechat": "patricia70", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Proin interdum mauris non ligula pellentesque ultrices.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.100Z", "created_by": "sandra90", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "254daec5-b5be-4ebc-9f91-b9cf694845db", "fields": {"password": "pbkdf2_sha256$36000$bIVONZZdpAcA$ZHNw+HzzVKCck8v1wGuwvWU2dXsYG8Pk3TsiKEZxbm0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.421Z", "username": "anna85", "name": "Doris Carr", "email": "sharon@zoonder.biz", "role": "App", "avatar": "", "wechat": "deborah94", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Donec quis orci eget orci vehicula condimentum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.422Z", "created_by": "margaret68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "28900216-560f-4bea-ba8d-b0806efb1cd3", "fields": {"password": "pbkdf2_sha256$36000$Z452ZHWkW0rO$cWb6IKyFlUNge+G9pjU/hIgxRG4pac6SqQ5KQU6WH8c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.834Z", "username": "mildred74", "name": "Barbara Evans", "email": "lillian@zoozzy.gov", "role": "Admin", "avatar": "", "wechat": "diane84", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Quisque erat eros, viverra eget, congue eget, semper rutrum, nulla.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.834Z", "created_by": "jane91", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "293bec40-fa3a-43c4-b4e5-b0df85818a93", "fields": {"password": "pbkdf2_sha256$36000$5nr48OR1SqlE$mRqb8SV1YjU0VehQl+KjpwbBBPZncWNDtY5vju46qb0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.746Z", "username": "marie94", "name": "Norma Turner", "email": "carol@demivee.info", "role": "Admin", "avatar": "", "wechat": "doris67", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Mauris ullamcorper purus sit amet nulla.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.746Z", "created_by": "ruth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "2dbdca73-6145-42ee-84ba-fd62d61f3837", "fields": {"password": "pbkdf2_sha256$36000$n3NvgEK3TGPH$YlfKknOdBngsAtfQ866vTHR5rcnAqMPi+/ekTPz0gmM=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.882Z", "username": "doris86", "name": "Helen Peterson", "email": "betty@skipstorm.info", "role": "Admin", "avatar": "", "wechat": "stephanie85", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi vel lectus in quam fringilla rhoncus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.882Z", "created_by": "amy74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "3a8ea16b-a521-4370-b5b1-94768fd0292b", "fields": {"password": "pbkdf2_sha256$36000$7lReZD1aqZ25$E021ZGjB2p9YPTQ3M2elMV7cBJrT4fexUybzOilEttg=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.039Z", "username": "elizabeth84", "name": "Elizabeth Wright", "email": "marie@midel.net", "role": "App", "avatar": "", "wechat": "doris72", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Cras pellentesque volutpat dui.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.039Z", "created_by": "cheryl74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "3b7ea257-76cd-4ac9-988d-2e633a819fcc", "fields": {"password": "pbkdf2_sha256$36000$XcVLJ00m76u4$kKbm0F47WAj++Xjhyv7SSuy6Qd5yYEWMfirLAcOtSj0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.952Z", "username": "helen87", "name": "Rachel Chavez", "email": "frances@shufflebeat.gov", "role": "App", "avatar": "", "wechat": "rebecca67", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Praesent id massa id nisl venenatis lacinia.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.952Z", "created_by": "katherine74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "3cc3641d-8a9a-47d0-bd2e-07a342ad25d1", "fields": {"password": "pbkdf2_sha256$36000$mE1B13oy3VqR$SLpFkzBYIUg+3snAua5n9qj51kDjpbYe8o7/cLpgc/Y=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.013Z", "username": "amanda67", "name": "Louise Hernandez", "email": "carol@thoughtstorm.name", "role": "User", "avatar": "", "wechat": "deborah66", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vestibulum quam sapien, varius ut, blandit non, interdum in, ante.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.013Z", "created_by": "margaret68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "3f285d25-1fb2-41aa-ad99-20aa9332053a", "fields": {"password": "pbkdf2_sha256$36000$HMffFit6jPUQ$n446iBJ1mxqijaUMtyFKyUNcT8af8mI/j3iKB/TFPrM=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.147Z", "username": "lisa84", "name": "Norma Watkins", "email": "sarah@edgeclub.mil", "role": "App", "avatar": "", "wechat": "deborah87", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Aenean auctor gravida sem.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.147Z", "created_by": "denise86", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "3f58b94c-ae39-4f24-ab06-49ecda9ed96b", "fields": {"password": "pbkdf2_sha256$36000$GZQxdWAAfpLM$PSzrA2VNWpJ41zhK67Rc0cp9XAN0MXPvMjdDzzkiWwY=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:44.998Z", "username": "gloria82", "name": "Marilyn Hansen", "email": "janice@meetz.gov", "role": "User", "avatar": "", "wechat": "mary71", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Sed sagittis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:44.999Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "43c468cf-ecc3-4d7b-b1fc-ff033a45f529", "fields": {"password": "pbkdf2_sha256$36000$FET05R16KsGU$30yYgWTJJ6g5gTaodnG8uFnwH0WlQNlrEXl6vrhVhmM=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.547Z", "username": "sharon84", "name": "Brenda Hamilton", "email": "maria@twitterbeat.gov", "role": "User", "avatar": "", "wechat": "denise91", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi sem mauris, laoreet ut, rhoncus aliquet, pulvinar sed, nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.547Z", "created_by": "sarah64", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "46e736be-8937-47d1-8244-857106feff0b", "fields": {"password": "pbkdf2_sha256$36000$GQJtJua0fxpq$uZyJjo+MkO2tyHEwlr+ukbU9bLbxNjb1Z4KEK+1M4Ug=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.680Z", "username": "joan88", "name": "Kathryn Martinez", "email": "kathleen@miboo.biz", "role": "User", "avatar": "", "wechat": "bonnie94", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "In quis justo.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.680Z", "created_by": "sandra90", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "4df1d5a9-9627-431c-a079-b880fd21323e", "fields": {"password": "pbkdf2_sha256$36000$0djue4WLyNAC$qexjZ5iUzUmRZrJjBSJ9F+49HbQ0YcXUujF0jB7KAwE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.561Z", "username": "marilyn69", "name": "Betty Spencer", "email": "heather@riffpedia.biz", "role": "User", "avatar": "", "wechat": "wanda67", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam varius.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.561Z", "created_by": "mary85", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "54d963e9-9712-435e-8d58-085fc6fc88b1", "fields": {"password": "pbkdf2_sha256$36000$cJDQogliyC6D$t4zTZasnmtp2XWrvg3WV4ztL0a3m7EZtVYPhIUPuz14=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.104Z", "username": "jennifer76", "name": "Diana Sanders", "email": "shirley@livez.net", "role": "Admin", "avatar": "", "wechat": "diana80", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Quisque id justo sit amet sapien dignissim vestibulum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.104Z", "created_by": "emily88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "5d130adc-4e26-4251-9175-818c65bea65f", "fields": {"password": "pbkdf2_sha256$36000$zklFW4UIlY5m$UfKnn+HTKfo1Luuqqh2TzPvh3hiolSBqEu8RRSCjEr0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.916Z", "username": "kathleen72", "name": "Norma Fuller", "email": "lori@camimbo.name", "role": "Admin", "avatar": "", "wechat": "deborah71", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam molestie nibh in lectus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.916Z", "created_by": "bonnie74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "61196f61-b30e-4533-b190-8ebf9cb2016c", "fields": {"password": "pbkdf2_sha256$36000$Txvk8KyVUqjC$NfTgG1B2HSoBgerUeqgpXiaVGFGqkaGBV3MwcUKiryY=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.153Z", "username": "alice65", "name": "Michelle Hicks", "email": "kimberly@leexo.edu", "role": "App", "avatar": "", "wechat": "doris81", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "In sagittis dui vel nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.153Z", "created_by": "doris73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "6508bcc6-1ca0-40d7-8feb-f0a371c26364", "fields": {"password": "pbkdf2_sha256$36000$3ULJd9tQzGv6$My0v36L+qhqP8J44ngW1FIwFUnCj3x5GzavMKW7rS7k=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.676Z", "username": "catherine91", "name": "Doris Willis", "email": "lisa@mymm.gov", "role": "Admin", "avatar": "", "wechat": "phyllis64", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Mauris ullamcorper purus sit amet nulla.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.676Z", "created_by": "elizabeth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "658d9699-1f02-4237-ae63-f25337cd4c38", "fields": {"password": "pbkdf2_sha256$36000$3SD0C1qH16ej$ztF0l/soLgQm/dMPlOWxF+PQnAain/Oso7RViaGkMGU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.815Z", "username": "linda93", "name": "Lisa Palmer", "email": "denise@rhybox.com", "role": "Admin", "avatar": "", "wechat": "andrea94", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vestibulum ac est lacinia nisi venenatis tristique.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.815Z", "created_by": "doris86", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "67637b7f-1717-4f52-b07f-d8bdb4eeebdd", "fields": {"password": "pbkdf2_sha256$36000$KY3hpdOCLA9V$T1M618Ce/keRem5/+zu75WjBnJ43DbZqHXOqOqRnil4=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:44.822Z", "username": "jean73", "name": "Dorothy Walker", "email": "michael@feednation.mil", "role": "User", "avatar": "", "wechat": "cheryl67", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vestibulum quam sapien, varius ut, blandit non, interdum in, ante.", "is_first_login": false, "date_expired": "2087-11-20T08:20:44.822Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "6b9a5f80-1a91-4c4b-b088-003470c09959", "fields": {"password": "pbkdf2_sha256$36000$jXuvMOkXTKwn$Rg5hTIMvpDyv34NixRSvSYFzZpEiEqRLvIa6DdC7O+c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.234Z", "username": "mildred72", "name": "Kelly Ruiz", "email": "lisa@browsedrive.mil", "role": "App", "avatar": "", "wechat": "louise79", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Integer pede justo, lacinia eget, tincidunt eget, tempus vel, pede.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.234Z", "created_by": "denise86", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "6dfb5d80-e8cf-404e-84f5-e42a56421990", "fields": {"password": "pbkdf2_sha256$36000$pE7DY2lLRGVr$f20EcKdtPmSs2v9JTd/EICXZMaAuH4wEpHNtWee71NE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.054Z", "username": "rachel86", "name": "Barbara Foster", "email": "lori@devpoint.net", "role": "App", "avatar": "", "wechat": "cynthia75", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "In tempor, turpis nec euismod scelerisque, quam turpis adipiscing lorem, vitae mattis nibh ligula nec sem.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.054Z", "created_by": "bobby67", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "6ef7f455-500c-4ad0-b813-235822d037fa", "fields": {"password": "pbkdf2_sha256$36000$JQ9Ng8CvX3qw$JFEAn3ThP05iaQet1L9mmsLYdO8sxXJ+WN5rn3wm11c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.222Z", "username": "kathryn81", "name": "Ruby Hawkins", "email": "tina@snaptags.info", "role": "Admin", "avatar": "", "wechat": "judith81", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Duis at velit eu est congue elementum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.222Z", "created_by": "amanda67", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "74e8a737-6499-4411-bce0-6170e609dc4b", "fields": {"password": "pbkdf2_sha256$36000$DUDY3gC963EF$A0swyBoH4+/v892DUjZshnK8aq5y2hN21R/usqu345c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.560Z", "username": "shirley87", "name": "Ann Oliver", "email": "paula@quinu.name", "role": "User", "avatar": "", "wechat": "judith91", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nam ultrices, libero non mattis pulvinar, nulla pede ullamcorper augue, a suscipit nulla elit ac nulla.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.560Z", "created_by": "nancy94", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "76b83bc0-122b-4f65-8613-d49728e4f7c0", "fields": {"password": "pbkdf2_sha256$36000$IjBHf1wVhrVr$CzuNfhwTM11SCWBKMUvPhRVLqvHD8sQGiMW+lueeEJE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.305Z", "username": "gloria75", "name": "Sarah Barnes", "email": "carol@tazzy.name", "role": "App", "avatar": "", "wechat": "jennifer72", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Maecenas ut massa quis augue luctus tincidunt.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.305Z", "created_by": "karen75", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "77d8bd16-a79d-46ab-b56b-1a2aeb2bb4e7", "fields": {"password": "pbkdf2_sha256$36000$e7dB98TLCYc0$njPZU/eJb79K8eQmYygA4ScIDudgz2D/w0gAqIEM6T8=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.598Z", "username": "robin65", "name": "Julie Brown", "email": "teresa@brightdog.info", "role": "User", "avatar": "", "wechat": "carolyn68", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Sed sagittis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.598Z", "created_by": "christine83", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "84690e31-6c78-43b4-af27-d004eeea72c8", "fields": {"password": "pbkdf2_sha256$36000$S2kN49YESsQo$dhOcKIR4dZsv17saaBG5L5A6+2bURHyYNZkYQXQlMYU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.481Z", "username": "deborah79", "name": "Janice Berry", "email": "sarah@fivechat.com", "role": "App", "avatar": "", "wechat": "denise74", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.481Z", "created_by": "jane94", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "84a8e881-8baa-4048-9c36-906cfd768a73", "fields": {"password": "pbkdf2_sha256$36000$C00pW8X6PWLQ$r+sm+WxJtFzMOzr7j20ee0jrvTg6fNFBfO44mMF0uTQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.283Z", "username": "angela93", "name": "Julia Snyder", "email": "elizabeth@meedoo.mil", "role": "User", "avatar": "", "wechat": "susan74", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Donec odio justo, sollicitudin ut, suscipit a, feugiat et, eros.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.283Z", "created_by": "wanda88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "893efcfd-83b4-4391-93e8-1a439e83a78e", "fields": {"password": "pbkdf2_sha256$36000$dZuppxeYK2Wn$4y6SCVkq3YMv01e01yPTYRFFcxiPK5Cs+LkPsDHJsug=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.427Z", "username": "katherine74", "name": "Christine Rogers", "email": "kimberly@innotype.gov", "role": "Admin", "avatar": "", "wechat": "cynthia81", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.427Z", "created_by": "melissa87", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "8ae47e89-b1aa-46c0-b889-f39ec7c9d524", "fields": {"password": "pbkdf2_sha256$36000$psKjG67S6RJ1$FTBpXPptZhxwa+MP1TOA+wxrSIEVPjKEqfMVRe7QC8o=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.172Z", "username": "michelle67", "name": "Laura Frazier", "email": "norma@demivee.name", "role": "User", "avatar": "", "wechat": "maria77", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vestibulum ac est lacinia nisi venenatis tristique.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.172Z", "created_by": "cynthia70", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "8f30a514-aade-4179-85be-dfde6fbf29ae", "fields": {"password": "pbkdf2_sha256$36000$FQX8iBKyklSD$/uXjllZXSbukeyPHQ6ANtqjkrxYwDdXx5fK8oCxiPbQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.088Z", "username": "andrea85", "name": "Cheryl Cooper", "email": "evelyn@babblestorm.net", "role": "User", "avatar": "", "wechat": "virginia75", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.088Z", "created_by": "wanda88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "900ad3c2-20ab-41c4-9073-0db26d9e7062", "fields": {"password": "pbkdf2_sha256$36000$Y2RhGz7QZ2iT$PuB1fTERaUcNKz0ALtgPafW8bMKYqN+SZVn6Hi6rbF4=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.417Z", "username": "sarah64", "name": "Brenda Robinson", "email": "tina@rhynoodle.gov", "role": "User", "avatar": "", "wechat": "kathy88", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam porttitor lacus at turpis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.417Z", "created_by": "katherine74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "95cdcde0-593a-4280-a954-1c66a064fdf2", "fields": {"password": "pbkdf2_sha256$36000$rzMzLpd6G1nO$TbNohXyfh4GiBV+hIiRiiOCzeDvshn0yFIQcw9mnqEk=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.948Z", "username": "stephanie64", "name": "Amanda Bradley", "email": "louise@shufflester.edu", "role": "Admin", "avatar": "", "wechat": "sharon84", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nulla suscipit ligula in lacus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.948Z", "created_by": "kelly79", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "976db0b2-6471-4e74-83bb-22d1edf9d07a", "fields": {"password": "pbkdf2_sha256$36000$zUEvDDyaWk0h$VbDEFx9DJc2jAIAuo1D2GGuNKWK8bHjD8dZfGeYj5Y8=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.816Z", "username": "lisa75", "name": "Sandra Brooks", "email": "paula@flashdog.name", "role": "App", "avatar": "", "wechat": "betty65", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nulla justo.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.816Z", "created_by": "amy74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "988ed037-fbc7-49a5-8ed6-6ba21443adf9", "fields": {"password": "pbkdf2_sha256$36000$CzKIzoR8JKMg$AKw9eZo+svCzAo7328hgBAC9DS8jEPnky1xEGSchLGQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.764Z", "username": "theresa89", "name": "Elizabeth Jordan", "email": "ann@babbleopia.name", "role": "Admin", "avatar": "", "wechat": "martha68", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi vel lectus in quam fringilla rhoncus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.764Z", "created_by": "jean73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "997fb6db-5319-4831-a930-a03b584bf231", "fields": {"password": "pbkdf2_sha256$36000$QthLyekDYiUV$llkyfwgHXmpey8ItJwJZgGap11gkHr427eY2rH0lkIY=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.115Z", "username": "cheryl74", "name": "Nancy Rodriguez", "email": "judith@feedfish.edu", "role": "User", "avatar": "", "wechat": "louise85", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Donec semper sapien a libero.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.115Z", "created_by": "rachel86", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "9ac9786b-9b27-423a-8461-df8bb351517e", "fields": {"password": "pbkdf2_sha256$36000$72qCogFSa5tJ$ioBGLjf2/bpaGtztTtfg41Je4Xnc7IazJGLUCqsrc20=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.967Z", "username": "linda78", "name": "Irene Howell", "email": "lori@skajo.biz", "role": "Admin", "avatar": "", "wechat": "nancy87", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nunc purus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.967Z", "created_by": "deborah79", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "9ce5cb35-b73a-43df-8db3-b5b9da2cfb80", "fields": {"password": "pbkdf2_sha256$36000$MMWxi7JlGqpu$QOTCNcSkUtny58A1jR/8nZiA4Tn0O+yg7OlyRoBayvs=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.295Z", "username": "christine83", "name": "Alice Johnston", "email": "tina@ooba.biz", "role": "User", "avatar": "", "wechat": "tammy69", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Cras in purus eu magna vulputate luctus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.295Z", "created_by": "emily88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "9d96f826-82c8-48bb-8e66-41eacf413685", "fields": {"password": "pbkdf2_sha256$36000$kEus08UgzXZk$Ak5DWw0MvDPlv/dxZCj9Jeob+YzlbjUDba+VxUVy6qU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.604Z", "username": "amy74", "name": "Margaret Taylor", "email": "robin@rhyloo.edu", "role": "User", "avatar": "", "wechat": "martha79", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Maecenas tincidunt lacus at velit.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.604Z", "created_by": "betty87", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "9e0e7c8e-553b-456a-b094-fda19397e3c2", "fields": {"password": "pbkdf2_sha256$36000$bN66TMdazmSv$ZrtIdvydQKk0dzN7BvWg2tfZUWxN5eo7laoAOtjKOZw=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.689Z", "username": "christine86", "name": "Ann Clark", "email": "debra@skivee.info", "role": "App", "avatar": "", "wechat": "kathleen85", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam porttitor lacus at turpis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.690Z", "created_by": "ruth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "a1fc1d65-0b93-431e-90d0-2ee614a85ac5", "fields": {"password": "pbkdf2_sha256$36000$HkM2ryYWSC45$4GmctDFRnDgAPL6g4kOUvPZCJ8PZbwHOEtezF/kfamw=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.885Z", "username": "janice65", "name": "Anne Crawford", "email": "katherine@lazzy.edu", "role": "Admin", "avatar": "", "wechat": "judith91", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Proin eu mi.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.885Z", "created_by": "christine83", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "a7e872b9-3996-4472-86e6-360472786a01", "fields": {"password": "pbkdf2_sha256$36000$Wrqb3zlqjgJj$FafGjmmEhYQZuKNXbzhsSLUBfYLVhe+VsEyMvrJ5mqI=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.492Z", "username": "diane63", "name": "Kathryn Jordan", "email": "katherine@geba.edu", "role": "Admin", "avatar": "", "wechat": "carol74", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Aenean lectus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.492Z", "created_by": "kathryn81", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "a918e434-49de-4d8e-a31c-b579ce5caac4", "fields": {"password": "pbkdf2_sha256$36000$NUM8iFHKTJNj$DC2PKnWoflXTaDA4oWOffSANvBVbJ/UPH58/txeSQLc=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.492Z", "username": "cynthia75", "name": "Judith Diaz", "email": "heather@jabbersphere.com", "role": "Admin", "avatar": "", "wechat": "judith72", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "In sagittis dui vel nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.492Z", "created_by": "marie94", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "a9ef8ad6-e8ff-4ff0-a52f-de9e60c7a538", "fields": {"password": "pbkdf2_sha256$36000$Y7SVa80wf4J2$Rg1aqJW1hDa7VVfL+kWHz/pyIq/0/ezTRwwYojBLE4M=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.410Z", "username": "tammy68", "name": "Laura Wood", "email": "julia@jaxspan.name", "role": "User", "avatar": "", "wechat": "irene65", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.410Z", "created_by": "michelle67", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "abbd32ac-f1a8-42df-8cf8-bdb33de6a422", "fields": {"password": "pbkdf2_sha256$36000$nSps6waft4W6$BEtvLVbNzNdLt8EdVwocfgYWkQqfAlYvm1wbCWd/rfs=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.899Z", "username": "catherine89", "name": "Tina Ray", "email": "linda@eare.edu", "role": "App", "avatar": "", "wechat": "bonnie66", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "In hac habitasse platea dictumst.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.899Z", "created_by": "brenda85", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "adba40a0-d9e8-4f17-b61f-023f0efc5c71", "fields": {"password": "pbkdf2_sha256$36000$pE7q8btYLdBG$Li5n43ady+BPnogN9OyvMZP6H1WUcElhwDffY70iBjQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.622Z", "username": "jane94", "name": "Theresa Evans", "email": "janet@skilith.net", "role": "User", "avatar": "", "wechat": "jennifer72", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vivamus tortor.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.622Z", "created_by": "wanda88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "aeeff980-5eca-4348-82fd-b728edad73df", "fields": {"password": "pbkdf2_sha256$36000$2W6LZl4pLNz9$7sd1/teKLDGYCa19oJS030Y/kbP8TxYT68HXEjUN8Yw=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.456Z", "username": "wanda88", "name": "Linda Edwards", "email": "kathy@dablist.com", "role": "Admin", "avatar": "", "wechat": "sarah85", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nulla mollis molestie lorem.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.456Z", "created_by": "doris73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "b1305e47-a5fd-4a96-9ad4-1b42e1ff02ab", "fields": {"password": "pbkdf2_sha256$36000$ispYVWEwhld1$fBI4sKsYg1kN1GxAcpPWo2akYpYr+e4ZHJTBr9GGwvg=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.964Z", "username": "wanda76", "name": "Linda Kennedy", "email": "diana@wikizz.com", "role": "Admin", "avatar": "", "wechat": "judith94", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Pellentesque eget nunc.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.964Z", "created_by": "cheryl74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "b6ba2c18-4c1d-4bfc-b797-7b08a0716510", "fields": {"password": "pbkdf2_sha256$36000$qjlVpHgp4L3N$3JBdqZn2lUQAEW2iDj6P8G8UPnGtEdGJfZUVhEMa14c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.363Z", "username": "deborah91", "name": "Patricia Kim", "email": "louise@skiptube.org", "role": "User", "avatar": "", "wechat": "christine89", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam sit amet turpis elementum ligula vehicula consequat.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.363Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "b85ef060-fe34-439e-9ba1-80830c6b1154", "fields": {"password": "pbkdf2_sha256$36000$vXYezntEBYrO$yxVQbywPPzS6X739/FXf7jn0mOf9OV9QWB2rl2GjOPQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.884Z", "username": "jane91", "name": "Amanda Ward", "email": "heather@vinder.com", "role": "User", "avatar": "", "wechat": "jacqueline88", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Aenean fermentum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.884Z", "created_by": "kimberly76", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "b999c5a8-bf0c-4b75-a947-7d2ebefe937a", "fields": {"password": "pbkdf2_sha256$36000$5iE8awzRgDmB$CrXjLEN4I1GZiXpGlW6LL2etCUnpw2cHM+rp0HGfdKI=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.977Z", "username": "marilyn92", "name": "Margaret Cruz", "email": "denise@skimia.edu", "role": "Admin", "avatar": "", "wechat": "jean84", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vivamus vel nulla eget eros elementum pellentesque.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.977Z", "created_by": "michelle67", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "bac381b9-bc3d-405f-8ec2-fe63e38cf642", "fields": {"password": "pbkdf2_sha256$36000$ieFjMrLRH9D9$fvgRX8vuyXPTrh8qe95OGt5UDPHj3a/H9OTjGH6N9YQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.478Z", "username": "bonnie74", "name": "Debra Crawford", "email": "maria@devshare.info", "role": "User", "avatar": "", "wechat": "mildred93", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Suspendisse potenti.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.478Z", "created_by": "cheryl74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "baf87b84-f58e-4f7e-8237-305fb031fb42", "fields": {"password": "pbkdf2_sha256$36000$x4p6j1gtzDyh$sKywBUyC1CYsJZU/4N48KfMdxACnYJw15h6gUfCsSPM=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.234Z", "username": "judith91", "name": "Andrea Diaz", "email": "lori@trilith.org", "role": "App", "avatar": "", "wechat": "pamela89", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Mauris enim leo, rhoncus sed, vestibulum sit amet, cursus id, turpis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.234Z", "created_by": "mary85", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "bd5c73f2-d42e-4def-b032-1dde457eff9f", "fields": {"password": "pbkdf2_sha256$36000$tiZlhQDhDmM2$UE+GwjLORRbWu6/5XAVXE0vhLzrtLE4TFOSNUudneoI=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.231Z", "username": "maria72", "name": "Sandra Owens", "email": "katherine@linkbuzz.com", "role": "App", "avatar": "", "wechat": "michelle66", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi porttitor lorem id ligula.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.231Z", "created_by": "anna68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "bf894606-81e4-4285-8f05-74a681b074e2", "fields": {"password": "pbkdf2_sha256$36000$3BnPvXORCEYA$wag/o7EnBJf+CR2W1byLqIAd56jAJKiKkn3pkpBL9XA=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.287Z", "username": "betty87", "name": "Lillian Barnes", "email": "anne@gabspot.gov", "role": "User", "avatar": "", "wechat": "jane84", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nunc nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.287Z", "created_by": "cynthia70", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "c23e3afa-42a0-4336-b57c-c8bfdde80e8c", "fields": {"password": "pbkdf2_sha256$36000$4NcioMUKB3nf$KgDvjCpDccUTk5U6AQG2OyM7YzM0pX27tyrg3lmIrSc=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.018Z", "username": "ruth67", "name": "Deborah Parker", "email": "katherine@riffpath.edu", "role": "Admin", "avatar": "", "wechat": "wanda74", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Duis bibendum, felis sed interdum venenatis, turpis enim blandit mi, in porttitor pede justo eu massa.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.018Z", "created_by": "jean73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "c72887dd-2629-42ce-a781-719415dc2376", "fields": {"password": "pbkdf2_sha256$36000$Vl4z5b4ML07c$Fws7ChAspG1fhm5XYPoFaGPcx0phq+IImPj2PbA9OyI=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.950Z", "username": "diane88", "name": "Sara Burns", "email": "angela@ainyx.edu", "role": "Admin", "avatar": "", "wechat": "amanda65", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vivamus vestibulum sagittis sapien.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.950Z", "created_by": "sharon84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "c759f080-d06a-4266-9626-2b76d98f274c", "fields": {"password": "pbkdf2_sha256$36000$Eyilxpy2FODw$uFy7ZheueWfuQnI7JIj7draAlHJas7SMXqbgQZN/JG4=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.792Z", "username": "anna68", "name": "Irene Andrews", "email": "brenda@dynabox.net", "role": "App", "avatar": "", "wechat": "amanda83", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nam dui.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.792Z", "created_by": "bonnie74", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "c86f492a-7ba7-43cb-aa30-65217190056c", "fields": {"password": "pbkdf2_sha256$36000$lhH7D2Q9po5S$huBkHUy22xssZieRDnNuAZpIBIl/D+mEi0Z5OTp+qsk=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.820Z", "username": "nancy94", "name": "Linda Lynch", "email": "debra@yabox.biz", "role": "Admin", "avatar": "", "wechat": "carolyn81", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nunc purus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.820Z", "created_by": "wanda88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "c88eaa6a-0991-4bbf-accd-01639316b5b7", "fields": {"password": "pbkdf2_sha256$36000$Q0baEgcoCokf$QJUjraa4FX1lhOpPPcl8n9zMrFPV/PyNjdIZ+BkiXTA=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.230Z", "username": "phyllis92", "name": "Frances Wells", "email": "julia@vinte.name", "role": "User", "avatar": "", "wechat": "maria66", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi quis tortor id nulla ultrices aliquet.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.230Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "c9bd556f-5d95-40f7-b827-ce165a84a497", "fields": {"password": "pbkdf2_sha256$36000$aOKSaSe20zFK$De+cDQazS8vbI/K0E5emmD6PB5zqaaNfcuHlOG77UPE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:44.882Z", "username": "bobby67", "name": "Jane Perry", "email": "annie@jatri.gov", "role": "User", "avatar": "", "wechat": "stephanie78", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Donec posuere metus vitae ipsum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:44.882Z", "created_by": "jean73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "ca62a021-f557-4158-969a-b14aafc30a55", "fields": {"password": "pbkdf2_sha256$36000$baahuyfFqrof$Q3xb+dKNlJfwDoLc06QgIeTruvV4g0LsWX2w9T7HsPc=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.301Z", "username": "kelly79", "name": "Julia Moore", "email": "gloria@tagopia.info", "role": "User", "avatar": "", "wechat": "debra87", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Praesent lectus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.302Z", "created_by": "gloria82", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "cbd5fcae-728e-4fce-9cff-e21279475db8", "fields": {"password": "pbkdf2_sha256$36000$EsdCABCYFCmk$4PKD08PlCDFS+B/eIjEf0OUwWGEy8UTB/eErANceBRA=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.854Z", "username": "melissa87", "name": "Angela Wilson", "email": "sandra@brainverse.edu", "role": "App", "avatar": "", "wechat": "nancy89", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Aliquam erat volutpat.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.854Z", "created_by": "margaret68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "cc00cb90-3e2b-47ea-ac01-21a7c14b4010", "fields": {"password": "pbkdf2_sha256$36000$d4IV0ba51pDb$AoJIunbxHi83NLprK+cXuRohCvqKyjli2i7EGyE0MUU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.349Z", "username": "emily88", "name": "Laura Garcia", "email": "irene@trupe.com", "role": "App", "avatar": "", "wechat": "donna78", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "In hac habitasse platea dictumst.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.349Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "cc97024b-003d-4b10-8166-221a5a5c4ad4", "fields": {"password": "pbkdf2_sha256$36000$g4RAXiMBcQoq$UzocQ6FRPTSUs5NelpUMorVga29rHGMuEiGch2cRQtE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.627Z", "username": "brenda85", "name": "Linda Romero", "email": "sarah@gigabox.biz", "role": "User", "avatar": "", "wechat": "mildred66", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Maecenas rhoncus aliquam lacus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.628Z", "created_by": "anna85", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "ccdc9718-ca0a-4cf9-bc6f-0b3294db3dd0", "fields": {"password": "pbkdf2_sha256$36000$cFhZPJr62jYU$2IMi4Zmz0DUkOWrcM6mrTi9rZ5VDGFswjOxUmla/h9o=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.557Z", "username": "kimberly76", "name": "Catherine Griffin", "email": "betty@midel.net", "role": "User", "avatar": "", "wechat": "phyllis79", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Suspendisse accumsan tortor quis turpis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.557Z", "created_by": "emily88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "d0df0f52-e192-48e1-abdd-76599036db0d", "fields": {"password": "pbkdf2_sha256$36000$5CIt1BMId38U$DOUs3pzqsdLyNCU7n+JkhUyhbMNq10xDirEREHBTj0Q=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.166Z", "username": "brenda80", "name": "Teresa Crawford", "email": "jacqueline@wikizz.org", "role": "App", "avatar": "", "wechat": "debra93", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Proin risus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.166Z", "created_by": "melissa87", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "d3be688a-57ed-42c3-941c-bf64b337ff1a", "fields": {"password": "pbkdf2_sha256$36000$MKJYXuqE9zsA$+0LCYWZ2YDoEzcVIDiOhxKDtMdn1WHjzVeePh8v/EN0=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.164Z", "username": "doris73", "name": "Stephanie Stevens", "email": "lillian@chatterbridge.info", "role": "Admin", "avatar": "", "wechat": "ann83", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Proin at turpis a pede posuere nonummy.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.164Z", "created_by": "anna68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "dc98b1fe-814f-4aa4-b2ef-816d4dcd0cd8", "fields": {"password": "pbkdf2_sha256$36000$sTyK1iWh1Phq$shM3tDQxsHTkxmqa0V6L2ya59oCe4J9ybhpxqO96Rto=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.427Z", "username": "kimberly82", "name": "Jacqueline Greene", "email": "sandra@thoughtmix.org", "role": "App", "avatar": "", "wechat": "sarah63", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Duis faucibus accumsan odio.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.427Z", "created_by": "melissa79", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "ddf3ad0c-da0e-4c17-9700-b3280721c936", "fields": {"password": "pbkdf2_sha256$36000$7CEJewV0ogIh$0g9IgP/DVu3uZiEcrs8SLGcL+DOvKl5QujvDc8Fb4VA=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.090Z", "username": "ruth71", "name": "Norma Martinez", "email": "tina@skaboo.mil", "role": "Admin", "avatar": "", "wechat": "judy64", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Curabitur gravida nisi at nibh.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.090Z", "created_by": "wanda88", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "df237a5b-5c4d-43ea-ab81-de884bba2c59", "fields": {"password": "pbkdf2_sha256$36000$jGI2I4XD11MZ$9ESz8XB/fLX45r1Z92nLr1MKOx2atRIowtTP6S42ymU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.363Z", "username": "karen75", "name": "Wanda Kelley", "email": "donna@npath.gov", "role": "App", "avatar": "", "wechat": "cynthia63", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Proin risus.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.363Z", "created_by": "doris73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "df4c346e-2813-4e70-8b75-ae22c615c0d7", "fields": {"password": "pbkdf2_sha256$36000$cXwp6rlD0xcr$XlHVK8SKPUmek6w8RwiBiaTfXFvpaen9kh64Wc97C3I=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.495Z", "username": "rachel76", "name": "Heather Alvarez", "email": "katherine@kanoodle.name", "role": "Admin", "avatar": "", "wechat": "sarah84", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Quisque porta volutpat erat.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.495Z", "created_by": "karen75", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "e00a494e-8a75-4a32-a3d4-8146d5943383", "fields": {"password": "pbkdf2_sha256$36000$DMD8RAEYTMni$XSXVQ7yHM+3YEpe8vtyMU37On9EBPkoQuD8W+SUzhOE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.352Z", "username": "joan86", "name": "Diane Moreno", "email": "andrea@feedmix.org", "role": "Admin", "avatar": "", "wechat": "nancy80", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Curabitur convallis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.352Z", "created_by": "gloria82", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "e2419c14-bad8-41c2-b0a6-6af0647d9861", "fields": {"password": "pbkdf2_sha256$36000$VG90MjpKpZq9$HD5qgv/+VCJWL9whQePuhOqGWvIk812WZoSE7Xw75lQ=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.623Z", "username": "sara67", "name": "Carol Harrison", "email": "judith@reallinks.mil", "role": "User", "avatar": "", "wechat": "louise74", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Sed sagittis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.623Z", "created_by": "brenda80", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "e2bb5ed2-7ef9-4645-841d-622e8600ba10", "fields": {"password": "pbkdf2_sha256$36000$pWyXKcODSv1S$BaJvNB0wGxH/2EivCZ98gx44uxM/pgwiNTy9n7vxQRE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.215Z", "username": "frances91", "name": "Sara Harrison", "email": "joan@teklist.net", "role": "Admin", "avatar": "", "wechat": "beverly90", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nulla mollis molestie lorem.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.215Z", "created_by": "janice65", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "e5c687d5-2287-483d-850a-49a2fc50fb62", "fields": {"password": "pbkdf2_sha256$36000$YZf2tNqNLcnO$sCkn27Co5bVcjxm9Vf4zBkYwOoXfDQoXDhYHjV8cPQA=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.368Z", "username": "christina73", "name": "Wanda Bradley", "email": "judith@jabbertype.gov", "role": "Admin", "avatar": "", "wechat": "diane84", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi quis tortor id nulla ultrices aliquet.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.368Z", "created_by": "judy68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "e8c3b8f8-fa07-4612-abc0-6027449da1e2", "fields": {"password": "pbkdf2_sha256$36000$eZ4yYmSXYUiS$iTM47iUrc9vMmO37bhmvNA4OlVZ2pKAOIHLWMB0pR4w=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:51.169Z", "username": "sarah87", "name": "Susan Fields", "email": "julie@gabtune.edu", "role": "Admin", "avatar": "", "wechat": "diane90", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam sit amet turpis elementum ligula vehicula consequat.", "is_first_login": false, "date_expired": "2087-11-20T08:20:51.170Z", "created_by": "admin", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "edc529d5-0377-4456-831f-ec42cf5b34d2", "fields": {"password": "pbkdf2_sha256$36000$3VcSL8Ap6zHd$14Y4+uZHRU8gwFgEXdIEZZ2+NWV15sRBV2YWgWbdyhY=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:09.494Z", "username": "admin", "name": "Administrator", "email": "admin@jumpserver.org", "role": "Admin", "avatar": "", "wechat": "", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Administrator is the super user of system", "is_first_login": false, "date_expired": "2087-11-20T08:20:09.494Z", "created_by": "System", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "ee6783eb-e28a-46de-af4d-5f141b5d00ff", "fields": {"password": "pbkdf2_sha256$36000$PE8tb0ELw96J$eVcNnYpmeItf5IxmQ6SzxyE37WgY+sCTsxKuNrswqfw=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.696Z", "username": "jennifer88", "name": "Frances Lawson", "email": "brenda@twitterwire.biz", "role": "User", "avatar": "", "wechat": "helen80", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi a ipsum.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.696Z", "created_by": "ruth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "eec71fff-0071-4540-abd7-c04e5f4c1253", "fields": {"password": "pbkdf2_sha256$36000$sRs2tOHUXeOf$Sv08+zpL65DatVkLKvmFQzXuuetmD/8VTFJEvDoT074=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.667Z", "username": "theresa73", "name": "Ruby Wilson", "email": "michelle@centimia.mil", "role": "App", "avatar": "", "wechat": "judy63", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Suspendisse potenti.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.667Z", "created_by": "phyllis92", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "eee9d142-acf6-47c0-ac34-753b8fe6a79a", "fields": {"password": "pbkdf2_sha256$36000$PDgyhClJSgk5$54bSRv/LASscHDwEaa21531m3mWKU6gnI1Q/r2v2tZw=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.361Z", "username": "denise86", "name": "Teresa Anderson", "email": "norma@gevee.mil", "role": "App", "avatar": "", "wechat": "donna94", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Morbi sem mauris, laoreet ut, rhoncus aliquet, pulvinar sed, nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.361Z", "created_by": "elizabeth84", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "f5c41b9b-506f-425e-a2ba-7e671888e6be", "fields": {"password": "pbkdf2_sha256$36000$3pLuPgNpQKcf$oMNe1NkI9JWnqQQQ3HGgwzGd5LPdsaApOimTxa1Dqp8=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:49.747Z", "username": "judith70", "name": "Paula Little", "email": "lori@feedspan.gov", "role": "Admin", "avatar": "", "wechat": "debra86", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Fusce congue, diam id ornare imperdiet, sapien urna pretium nisl, ut volutpat sapien arcu sed augue.", "is_first_login": false, "date_expired": "2087-11-20T08:20:49.747Z", "created_by": "rachel86", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "f6dcb401-6db4-4f35-b430-1e57bb042ab6", "fields": {"password": "pbkdf2_sha256$36000$ERbzYcpezZ1B$CuvGMj7LhEcVaNouIi3nocUEzbpL1RVLvAQZH8vLLhE=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:45.540Z", "username": "margaret68", "name": "Rachel White", "email": "wanda@edgeclub.com", "role": "App", "avatar": "", "wechat": "rebecca67", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nam nulla.", "is_first_login": false, "date_expired": "2087-11-20T08:20:45.540Z", "created_by": "jean73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "f921ca32-0cfe-4e42-8c94-7d6b3625d402", "fields": {"password": "pbkdf2_sha256$36000$qn44GrsBcawS$YYlPQrCcHV1YblGlt3rqHC6dU16VhDd8HcWu3hH+g6I=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:46.528Z", "username": "ruth84", "name": "Stephanie Lopez", "email": "heather@gigazoom.info", "role": "User", "avatar": "", "wechat": "melissa83", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Ut at dolor quis odio consequat varius.", "is_first_login": false, "date_expired": "2087-11-20T08:20:46.528Z", "created_by": "margaret68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "f956dff0-53a4-4ece-a245-9e046e50abdc", "fields": {"password": "pbkdf2_sha256$36000$3MYJAB1Ck8xG$jhxDJGKJRbSskDKAv52OC4U9WjcizaLArpMHFAnv1Dk=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:50.156Z", "username": "judy68", "name": "Laura Evans", "email": "deborah@feedfire.edu", "role": "App", "avatar": "", "wechat": "rose81", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Vivamus metus arcu, adipiscing molestie, hendrerit at, vulputate vitae, nisl.", "is_first_login": false, "date_expired": "2087-11-20T08:20:50.156Z", "created_by": "anna68", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "fc46c58e-b3e4-49ce-baed-cd316dc8f5cb", "fields": {"password": "pbkdf2_sha256$36000$BDLiryRYnwLq$IUnDvbsiAJPtLosybtjZ7GGPNV8UlFhlZfyN87nb7Qs=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.754Z", "username": "margaret94", "name": "Irene Phillips", "email": "pamela@quimm.com", "role": "App", "avatar": "", "wechat": "bonnie73", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Proin leo odio, porttitor id, consequat in, consequat ut, nulla.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.754Z", "created_by": "michelle67", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "fc50d1b3-e794-4ada-9380-72d74f232a24", "fields": {"password": "pbkdf2_sha256$36000$vg4IGE06ODw4$an5eZ5ffmXbTfWWjW+lLNgmmL6I2Lb5t0hA86+8cf9c=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:47.094Z", "username": "stephanie79", "name": "Tina Cook", "email": "mary@aimbo.name", "role": "App", "avatar": "", "wechat": "joyce91", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Ut at dolor quis odio consequat varius.", "is_first_login": false, "date_expired": "2087-11-20T08:20:47.095Z", "created_by": "doris73", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}, {"model": "users.user", "pk": "fe868e28-5c1d-4c79-b56b-7631b6c7793f", "fields": {"password": "pbkdf2_sha256$36000$0PVjqtfrlrJt$xmJUXi2oK8NpDtFTmnF6V38FvB8AFU9kaK2KkH5kx1I=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-07T08:20:48.285Z", "username": "melissa79", "name": "Jessica Morris", "email": "maria@divape.name", "role": "App", "avatar": "", "wechat": "ruth89", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Nullam orci pede, venenatis non, sodales sed, tincidunt eu, felis.", "is_first_login": false, "date_expired": "2087-11-20T08:20:48.286Z", "created_by": "jane94", "user_permissions": [], "groups": ["2e0b2a25-b32f-44a0-b087-f0f17de66e26"]}}] \ No newline at end of file diff --git a/apps/fixtures/init.json b/apps/fixtures/init.json deleted file mode 100644 index 802c2e85d..000000000 --- a/apps/fixtures/init.json +++ /dev/null @@ -1 +0,0 @@ -[{"model": "users.usergroup", "pk": "f3c6b021-59a9-43e7-b022-c2e9bfac84d7", "fields": {"is_discard": false, "discard_time": null, "name": "Default", "comment": "Default user group", "date_created": "2017-12-12T08:13:20.906Z", "created_by": "System"}}, {"model": "users.loginlog", "pk": "328c7d0f-214d-4665-8c7b-f3063718530e", "fields": {"username": "admin", "type": "ST", "ip": "127.0.0.1", "city": "Unknown", "user_agent": "", "datetime": "2017-12-12T08:10:28.973Z"}}, {"model": "users.loginlog", "pk": "a72fa02e-3b2c-40a0-8cb1-0c2f98d8f248", "fields": {"username": "admin", "type": "ST", "ip": "127.0.0.1", "city": "Unknown", "user_agent": "", "datetime": "2017-12-12T08:10:28.980Z"}}, {"model": "assets.cluster", "pk": "a950b8aa-073b-45ab-b72e-5bdfbb614653", "fields": {"name": "Default", "admin_user": null, "bandwidth": "", "contact": "", "phone": "", "address": "", "intranet": "", "extranet": "", "date_created": "2017-12-12T08:13:20.919Z", "operator": "", "created_by": "System", "comment": "Default Cluster"}}, {"model": "assets.assetgroup", "pk": "d742a7be-faf1-4c29-ae0a-e6aa640ab395", "fields": {"name": "Default", "created_by": "", "date_created": "2017-12-12T08:13:20.923Z", "comment": "Default asset group"}}, {"model": "captcha.captchastore", "pk": 1, "fields": {"challenge": "EQEI", "response": "eqei", "hashkey": "c993e8e245252eb8ca40a57c67a63ee9c61dce5c", "expiration": "2017-12-12T08:17:50.235Z"}}, {"model": "users.user", "pk": "61c39c1f-5b57-4268-8180-b6dda235aadd", "fields": {"password": "pbkdf2_sha256$36000$yhYWUEo4DNqj$SpxtdIOm9nwRG+X76jUUlGvdDcLaMBl7Z+rJ8sfSMcU=", "last_login": null, "first_name": "", "last_name": "", "is_active": true, "date_joined": "2017-12-12T08:13:20.827Z", "username": "admin", "name": "Administrator", "email": "admin@jumpserver.org", "role": "Admin", "avatar": "", "wechat": "", "phone": null, "enable_otp": false, "secret_key_otp": "", "_private_key": "", "_public_key": "", "comment": "Administrator is the super user of system", "is_first_login": false, "date_expired": "2087-11-25T08:13:20.827Z", "created_by": "System", "user_permissions": [], "groups": ["f3c6b021-59a9-43e7-b022-c2e9bfac84d7"]}}] \ No newline at end of file diff --git a/apps/jumpserver/settings.py b/apps/jumpserver/settings.py index 60aa609f0..324741bd0 100644 --- a/apps/jumpserver/settings.py +++ b/apps/jumpserver/settings.py @@ -100,7 +100,7 @@ MIDDLEWARE = [ 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'authentication.openid.middleware.OpenIDAuthenticationMiddleware', # openid + 'authentication.backends.openid.middleware.OpenIDAuthenticationMiddleware', 'jumpserver.middleware.TimezoneMiddleware', 'jumpserver.middleware.DemoMiddleware', 'jumpserver.middleware.RequestMiddleware', @@ -135,7 +135,7 @@ TEMPLATES = [ # WSGI_APPLICATION = 'jumpserver.wsgi.applications' LOGIN_REDIRECT_URL = reverse_lazy('index') -LOGIN_URL = reverse_lazy('users:login') +LOGIN_URL = reverse_lazy('authentication:login') SESSION_COOKIE_DOMAIN = CONFIG.SESSION_COOKIE_DOMAIN CSRF_COOKIE_DOMAIN = CONFIG.CSRF_COOKIE_DOMAIN @@ -343,10 +343,10 @@ REST_FRAMEWORK = { ), 'DEFAULT_AUTHENTICATION_CLASSES': ( # 'rest_framework.authentication.BasicAuthentication', - 'users.authentication.AccessKeyAuthentication', - 'users.authentication.AccessTokenAuthentication', - 'users.authentication.PrivateTokenAuthentication', - 'users.authentication.SessionAuthentication', + 'authentication.backends.api.AccessKeyAuthentication', + 'authentication.backends.api.AccessTokenAuthentication', + 'authentication.backends.api.PrivateTokenAuthentication', + 'authentication.backends.api.SessionAuthentication', ), 'DEFAULT_FILTER_BACKENDS': ( 'django_filters.rest_framework.DjangoFilterBackend', @@ -395,7 +395,7 @@ AUTH_LDAP_CONNECTION_OPTIONS = { } AUTH_LDAP_GROUP_CACHE_TIMEOUT = 1 AUTH_LDAP_ALWAYS_UPDATE_USER = True -AUTH_LDAP_BACKEND = 'authentication.ldap.backends.LDAPAuthorizationBackend' +AUTH_LDAP_BACKEND = 'authentication.backends.ldap.LDAPAuthorizationBackend' if AUTH_LDAP: AUTHENTICATION_BACKENDS.insert(0, AUTH_LDAP_BACKEND) @@ -409,18 +409,19 @@ AUTH_OPENID_REALM_NAME = CONFIG.AUTH_OPENID_REALM_NAME AUTH_OPENID_CLIENT_ID = CONFIG.AUTH_OPENID_CLIENT_ID AUTH_OPENID_CLIENT_SECRET = CONFIG.AUTH_OPENID_CLIENT_SECRET AUTH_OPENID_BACKENDS = [ - 'authentication.openid.backends.OpenIDAuthorizationPasswordBackend', - 'authentication.openid.backends.OpenIDAuthorizationCodeBackend', + 'authentication.backends.openid.backends.OpenIDAuthorizationPasswordBackend', + 'authentication.backends.openid.backends.OpenIDAuthorizationCodeBackend', ] if AUTH_OPENID: - LOGIN_URL = reverse_lazy("authentication:openid-login") + LOGIN_URL = reverse_lazy("authentication:openid:openid-login") + LOGIN_COMPLETE_URL = reverse_lazy("authentication:openid:openid-login-complete") AUTHENTICATION_BACKENDS.insert(0, AUTH_OPENID_BACKENDS[0]) AUTHENTICATION_BACKENDS.insert(0, AUTH_OPENID_BACKENDS[1]) # Radius Auth AUTH_RADIUS = CONFIG.AUTH_RADIUS -AUTH_RADIUS_BACKEND = 'authentication.radius.backends.RadiusBackend' +AUTH_RADIUS_BACKEND = 'authentication.backends.radius.RadiusBackend' RADIUS_SERVER = CONFIG.RADIUS_SERVER RADIUS_PORT = CONFIG.RADIUS_PORT RADIUS_SECRET = CONFIG.RADIUS_SECRET diff --git a/apps/jumpserver/urls.py b/apps/jumpserver/urls.py index bdae17a44..8cc9c6eb4 100644 --- a/apps/jumpserver/urls.py +++ b/apps/jumpserver/urls.py @@ -21,6 +21,7 @@ api_v1_patterns = [ path('audits/v1/', include('audits.urls.api_urls', namespace='api-audits')), path('orgs/v1/', include('orgs.urls.api_urls', namespace='api-orgs')), path('settings/v1/', include('settings.urls.api_urls', namespace='api-settings')), + path('authentication/v1/', include('authentication.urls.api_urls', namespace='api-auth')), ])) ] diff --git a/apps/orgs/signals_handler.py b/apps/orgs/signals_handler.py index a60ab3b7d..64c222136 100644 --- a/apps/orgs/signals_handler.py +++ b/apps/orgs/signals_handler.py @@ -23,7 +23,7 @@ def on_org_create_or_update(sender, instance=None, created=False, **kwargs): set_current_org(old_org) if instance and not created: - instance.expire_cache() + instance.expire_user_cache() @receiver(m2m_changed, sender=Organization.users.through) diff --git a/apps/perms/migrations/0002_auto_20171228_0025_squashed_0009_auto_20180903_1132.py b/apps/perms/migrations/0002_auto_20171228_0025_squashed_0009_auto_20180903_1132.py new file mode 100644 index 000000000..15915a453 --- /dev/null +++ b/apps/perms/migrations/0002_auto_20171228_0025_squashed_0009_auto_20180903_1132.py @@ -0,0 +1,159 @@ +# Generated by Django 2.1.7 on 2019-02-28 10:21 + +import common.utils.django +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import uuid + + +# Functions from the following migrations need manual copying. +# Move them and any dependencies into this file, then update the +# RunPython operations to refer to the local versions: +# perms.migrations.0005_migrate_data_20180411_1144 + +def migrate_node_permissions(apps, schema_editor): + node_perm_model = apps.get_model("perms", "NodePermission") + asset_perm_model = apps.get_model("perms", "AssetPermission") + db_alias = schema_editor.connection.alias + for old in node_perm_model.objects.using(db_alias).all(): + perm = asset_perm_model.objects.using(db_alias).create( + name="{}-{}-{}".format( + old.node.value, + old.user_group.name, + old.system_user.name + ), + is_active=old.is_active, + date_expired=old.date_expired, + created_by=old.date_expired, + date_created=old.date_created, + comment=old.comment, + ) + perm.user_groups.add(old.user_group) + perm.nodes.add(old.node) + perm.system_users.add(old.system_user) + + +def migrate_system_assets_relation(apps, schema_editor): + system_user_model = apps.get_model("assets", "SystemUser") + db_alias = schema_editor.connection.alias + for s in system_user_model.objects.using(db_alias).all(): + nodes = list(s.nodes.all()) + s.nodes.set([]) + s.nodes.set(nodes) + + +class Migration(migrations.Migration): + + replaces = [('perms', '0002_auto_20171228_0025'), ('perms', '0003_auto_20180225_1815'), ('perms', '0004_auto_20180411_1135'), ('perms', '0005_migrate_data_20180411_1144'), ('perms', '0006_auto_20180606_1505'), ('perms', '0007_auto_20180807_1116'), ('perms', '0008_auto_20180816_1652'), ('perms', '0009_auto_20180903_1132')] + + dependencies = [ + ('users', '0002_auto_20171225_1157'), + ('assets', '0007_auto_20180225_1815'), + ('assets', '0013_auto_20180411_1135'), + ('users', '0004_auto_20180125_1218'), + ('perms', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AddField( + model_name='assetpermission', + name='user_groups', + field=models.ManyToManyField(blank=True, related_name='asset_permissions', to='users.UserGroup', verbose_name='User group'), + ), + migrations.AddField( + model_name='assetpermission', + name='users', + field=models.ManyToManyField(blank=True, related_name='asset_permissions', to=settings.AUTH_USER_MODEL, verbose_name='User'), + ), + migrations.CreateModel( + name='NodePermission', + fields=[ + ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), + ('is_active', models.BooleanField(default=True, verbose_name='Active')), + ('date_expired', models.DateTimeField(default=common.utils.django.date_expired_default, verbose_name='Date expired')), + ('created_by', models.CharField(blank=True, max_length=128, verbose_name='Created by')), + ('date_created', models.DateTimeField(auto_now_add=True, verbose_name='Date created')), + ('comment', models.TextField(blank=True, verbose_name='Comment')), + ('node', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.Node', verbose_name='Node')), + ('system_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='assets.SystemUser', verbose_name='System user')), + ('user_group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.UserGroup', verbose_name='User group')), + ], + options={ + 'verbose_name': 'Asset permission', + }, + ), + migrations.AlterUniqueTogether( + name='nodepermission', + unique_together={('node', 'user_group', 'system_user')}, + ), + migrations.RemoveField( + model_name='assetpermission', + name='asset_groups', + ), + migrations.AddField( + model_name='assetpermission', + name='date_start', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Date start'), + ), + migrations.AddField( + model_name='assetpermission', + name='nodes', + field=models.ManyToManyField(blank=True, related_name='granted_by_permissions', to='assets.Node', verbose_name='Nodes'), + ), + migrations.RunPython( + code=migrate_node_permissions, + ), + migrations.RunPython( + code=migrate_system_assets_relation, + ), + migrations.AlterField( + model_name='assetpermission', + name='date_expired', + field=models.DateTimeField(db_index=True, default=common.utils.django.date_expired_default, verbose_name='Date expired'), + ), + migrations.AlterField( + model_name='assetpermission', + name='date_start', + field=models.DateTimeField(db_index=True, default=django.utils.timezone.now, verbose_name='Date start'), + ), + migrations.AddField( + model_name='assetpermission', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AddField( + model_name='nodepermission', + name='org_id', + field=models.CharField(blank=True, default=None, max_length=36, null=True), + ), + migrations.AlterField( + model_name='assetpermission', + name='name', + field=models.CharField(max_length=128, verbose_name='Name'), + ), + migrations.AlterUniqueTogether( + name='assetpermission', + unique_together={('org_id', 'name')}, + ), + migrations.AlterUniqueTogether( + name='nodepermission', + unique_together=set(), + ), + migrations.AlterField( + model_name='assetpermission', + name='org_id', + field=models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization'), + ), + migrations.AlterField( + model_name='nodepermission', + name='org_id', + field=models.CharField(blank=True, db_index=True, default='', max_length=36, verbose_name='Organization'), + ), + migrations.AlterModelOptions( + name='assetpermission', + options={'verbose_name': 'Asset permission'}, + ), + ] diff --git a/apps/templates/_header_bar.html b/apps/templates/_header_bar.html index c2764cce3..7c7f696b3 100644 --- a/apps/templates/_header_bar.html +++ b/apps/templates/_header_bar.html @@ -94,10 +94,10 @@
{% trans "More login options" %}