Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • djangoldp-packages/djangoldp
  • decentral1se/djangoldp
  • femmefaytale/djangoldp
  • jvtrudel/djangoldp
4 results
Show changes
Showing
with 1944 additions and 0 deletions
This diff is collapsed.
This diff is collapsed.
from django.conf import settings
from django.contrib.auth.models import AbstractUser, Group
from django.db import models
from django.utils.datetime_safe import date
from djangoldp.models import Model, DynamicNestedField
from djangoldp.permissions import ACLPermissions, AuthenticatedOnly, ReadOnly, \
ReadAndCreate, AnonymousReadOnly, OwnerPermissions, InheritPermissions
from .permissions import Only2WordsForToto, ReadOnlyStartsWithA
class User(AbstractUser, Model):
class Meta(AbstractUser.Meta, Model.Meta):
ordering = ['pk']
serializer_fields = ['@id', 'username', 'first_name', 'last_name', 'email', 'userprofile',
'conversation_set','groups', 'projects', 'owned_circles']
permission_classes = [ReadAndCreate|OwnerPermissions]
rdf_type = 'foaf:user'
nested_fields = ['owned_circles']
class Skill(Model):
title = models.CharField(max_length=255, blank=True, null=True)
obligatoire = models.CharField(max_length=255)
slug = models.SlugField(blank=True, null=True, unique=True)
date = models.DateTimeField(auto_now_add=True, blank=True)
def recent_jobs(self):
return self.joboffer_set.filter(date__gte=date.today())
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
serializer_fields = ["@id", "title", "recent_jobs", "slug", "obligatoire"]
nested_fields = ['joboffer_set']
lookup_field = 'slug'
rdf_type = 'hd:skill'
class JobOffer(Model):
title = models.CharField(max_length=255, null=True)
skills = models.ManyToManyField(Skill, blank=True)
slug = models.SlugField(blank=True, null=True, unique=True)
date = models.DateTimeField(auto_now_add=True, blank=True)
def recent_skills(self):
return self.skills.filter(date__gte=date.today())
def some_skill(self):
return self.skills.all().first()
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly, ReadOnly|OwnerPermissions]
serializer_fields = ["@id", "title", "skills", "recent_skills", "resources", "slug", "some_skill", "urlid"]
nested_fields = ['skills', 'resources', 'recent_skills']
container_path = "job-offers/"
lookup_field = 'slug'
rdf_type = 'hd:joboffer'
JobOffer.recent_skills.field = DynamicNestedField(Skill, 'recent_skills')
class Conversation(models.Model):
description = models.CharField(max_length=255, blank=True, null=True)
author_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
peer_user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name="peers_conv",
on_delete=models.DO_NOTHING)
observers = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='observed_conversations')
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
nested_fields=["message_set", "observers"]
owner_field = 'author_user'
class Resource(Model):
joboffers = models.ManyToManyField(JobOffer, blank=True, related_name='resources')
description = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
serializer_fields = ["@id", "joboffers"]
nested_fields = ['joboffers']
depth = 1
rdf_type = 'hd:Resource'
# a resource in which only the owner has permissions (for testing owner permissions)
class OwnedResource(Model):
description = models.CharField(max_length=255, blank=True, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name="owned_resources",
on_delete=models.CASCADE)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [OwnerPermissions]
owner_field = 'user'
serializer_fields = ['@id', 'description', 'user']
nested_fields = ['owned_resources']
depth = 1
class OwnedResourceVariant(Model):
description = models.CharField(max_length=255, blank=True, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name="owned_variant_resources",
on_delete=models.CASCADE)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ReadOnly|OwnerPermissions]
owner_field = 'user'
serializer_fields = ['@id', 'description', 'user']
depth = 1
class OwnedResourceNestedOwnership(Model):
description = models.CharField(max_length=255, blank=True, null=True)
parent = models.ForeignKey(OwnedResource, blank=True, null=True, related_name="owned_resources",
on_delete=models.CASCADE)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [OwnerPermissions]
owner_field = 'parent__user'
serializer_fields = ['@id', 'description', 'parent']
nested_fields = ['owned_resources']
depth = 1
class OwnedResourceTwiceNestedOwnership(Model):
description = models.CharField(max_length=255, blank=True, null=True)
parent = models.ForeignKey(OwnedResourceNestedOwnership, blank=True, null=True, related_name="owned_resources",
on_delete=models.CASCADE)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [OwnerPermissions]
owner_field = 'parent__parent__user'
serializer_fields = ['@id', 'description', 'parent']
depth = 1
class UserProfile(Model):
description = models.CharField(max_length=255, blank=True, null=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='userprofile', on_delete=models.CASCADE)
slug = models.SlugField(blank=True, null=True, unique=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AuthenticatedOnly,ReadOnly|OwnerPermissions]
owner_field = 'user'
lookup_field = 'slug'
serializer_fields = ['@id', 'description', 'settings', 'user']
depth = 1
class NotificationSetting(Model):
user = models.OneToOneField(UserProfile, on_delete=models.CASCADE, related_name="settings")
receiveMail = models.BooleanField(default=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ReadAndCreate|OwnerPermissions]
class Message(models.Model):
text = models.CharField(max_length=255, blank=True, null=True)
conversation = models.ForeignKey(Conversation, on_delete=models.DO_NOTHING)
author_user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
class Dummy(models.Model):
some = models.CharField(max_length=255, blank=True, null=True)
slug = models.SlugField(blank=True, null=True, unique=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
class LDPDummy(Model):
some = models.CharField(max_length=255, blank=True, null=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
nested_fields = ['anons']
# model used in django-guardian permission tests (no permission to anyone except suuperusers)
class PermissionlessDummy(Model):
some = models.CharField(max_length=255, blank=True, null=True)
slug = models.SlugField(blank=True, null=True, unique=True)
parent = models.ForeignKey(LDPDummy, on_delete=models.DO_NOTHING, related_name="anons", blank=True, null=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ACLPermissions]
lookup_field='slug'
permissions = (('custom_permission_permissionlessdummy', 'Custom Permission'),)
class Post(Model):
content = models.CharField(max_length=255)
author = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
peer_user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name="peers_post",
on_delete=models.SET_NULL)
class Meta(Model.Meta):
ordering = ['pk']
auto_author = 'author'
rdf_type = 'hd:post'
class AnonymousReadOnlyPost(Model):
content = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AnonymousReadOnly]
class AuthenticatedOnlyPost(Model):
content = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [AuthenticatedOnly]
class ReadOnlyPost(Model):
content = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ReadOnly]
class ReadAndCreatePost(Model):
content = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ReadAndCreate]
class ANDPermissionsDummy(Model):
title = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ReadOnlyStartsWithA&Only2WordsForToto]
class ORPermissionsDummy(Model):
title = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ReadOnlyStartsWithA|Only2WordsForToto]
class Invoice(Model):
title = models.CharField(max_length=255, blank=True, null=True)
date = models.DateField(blank=True, null=True)
class Meta(Model.Meta):
ordering = ['pk']
depth = 2
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
nested_fields = ['batches']
class Circle(Model):
name = models.CharField(max_length=255, blank=True)
description = models.CharField(max_length=255, blank=True)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="owned_circles", on_delete=models.DO_NOTHING, null=True, blank=True)
members = models.OneToOneField(Group, related_name="circle", on_delete=models.SET_NULL, null=True, blank=True)
admins = models.OneToOneField(Group, related_name="admin_circle", on_delete=models.SET_NULL, null=True, blank=True)
class Meta(Model.Meta):
ordering = ['pk']
auto_author = 'owner'
depth = 1
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions|ACLPermissions]
permission_roles = {
'members': {'perms': ['view'], 'add_author': True},
'admins': {'perms': ['view', 'change', 'control'], 'add_author': True},
}
serializer_fields = ['@id', 'name', 'description', 'members', 'owner', 'space']
rdf_type = 'hd:circle'
Group._meta.inherit_permissions += ['circle','admin_circle']
Group._meta.serializer_fields += ['circle', 'admin_circle']
class RestrictedCircle(Model):
name = models.CharField(max_length=255, blank=True)
description = models.CharField(max_length=255, blank=True)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="owned_restrictedcircles", on_delete=models.DO_NOTHING, null=True, blank=True)
members = models.ForeignKey(Group, related_name="restrictedcircles", on_delete=models.SET_NULL, null=True, blank=True)
admins = models.ForeignKey(Group, related_name="admin_restrictedcircles", on_delete=models.SET_NULL, null=True, blank=True)
class Meta(Model.Meta):
ordering = ['pk']
auto_author = 'owner'
permission_classes = [ACLPermissions]
permission_roles = {
'members': {'perms': ['view'], 'add_author': True},
'admins': {'perms': ['view', 'change', 'control'], 'add_author': True},
}
rdf_type = 'hd:circle'
class RestrictedResource(Model):
content = models.CharField(max_length=255, blank=True)
circle = models.ForeignKey(RestrictedCircle, on_delete=models.CASCADE)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [InheritPermissions]
inherit_permissions = ['circle']
class DoubleInheritModel(Model):
content = models.CharField(max_length=255, blank=True)
ro_ancestor = models.ForeignKey(ReadOnlyPost, on_delete=models.CASCADE, null=True, blank=True)
circle = models.ForeignKey(RestrictedCircle, on_delete=models.CASCADE, null=True, blank=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [InheritPermissions]
inherit_permissions = ['circle', 'ro_ancestor']
class Space(Model):
name = models.CharField(max_length=255, blank=True)
circle = models.OneToOneField(to=Circle, null=True, blank=True, on_delete=models.CASCADE, related_name='space')
class Meta(Model.Meta):
ordering = ['pk']
class Batch(Model):
invoice = models.ForeignKey(Invoice, on_delete=models.CASCADE, related_name='batches')
title = models.CharField(max_length=255, blank=True, null=True)
class Meta(Model.Meta):
ordering = ['pk']
serializer_fields = ['@id', 'title', 'invoice', 'tasks']
permission_classes = [ReadAndCreate|OwnerPermissions]
depth = 1
rdf_type = 'hd:batch'
class Task(models.Model):
batch = models.ForeignKey(Batch, on_delete=models.CASCADE, related_name='tasks')
title = models.CharField(max_length=255)
class Meta(Model.Meta):
ordering = ['pk']
serializer_fields = ['@id', 'title', 'batch']
permission_classes = [AnonymousReadOnly,ReadAndCreate|OwnerPermissions]
class ModelTask(Model, Task):
class Meta(Model.Meta):
ordering = ['pk']
STATUS_CHOICES = [
('Public', 'Public'),
('Private', 'Private'),
('Archived', 'Archived'),
]
class Project(Model):
description = models.CharField(max_length=255, null=True, blank=False)
status = models.CharField(max_length=8, choices=STATUS_CHOICES, default='Private', null=True, blank=True)
members = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='projects')
class Meta(Model.Meta):
ordering = ['pk']
rdf_type = 'hd:project'
nested_fields = ['members']
class DateModel(Model):
excluded = models.CharField(max_length=255, null=True, default='test')
value = models.DateField()
class Meta(Model.Meta):
ordering = ['pk']
rdf_type = "hd:date"
serializer_fields_exclude = ['excluded']
class DateChild(Model):
parent = models.ForeignKey(DateModel, on_delete=models.CASCADE, related_name='children')
class Meta(Model.Meta):
ordering = ['pk']
rdf_type = 'hd:datechild'
class MyAbstractModel(Model):
defaultsomething = models.CharField(max_length=255, blank=True)
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ACLPermissions]
abstract = True
rdf_type = "wow:defaultrdftype"
class NoSuperUsersAllowedModel(Model):
class Meta(Model.Meta):
ordering = ['pk']
permission_classes = [ACLPermissions]
\ No newline at end of file
Machine,Date,Auth,WithPermsCache,volume,test+AF8-get+AF8-resource,test+AF8-get+AF8-container,test+AF8-get+AF8-filtered+AF8-fields,test+AF8-get+AF8-reverse+AF8-filtered+AF8-fields,test+AF8-get+AF8-nested,test+AF8-get+AF8-users+AF8-container,Prefetch,default depth
jbl+AC0-T440p,Sep 22 2020 10:50:51,False,False,200,0.003339644670486,0.006944504976273,0.038935685157776,0.024031536579132,0.000708421468735,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:51:46,False,False,200,0.0035072016716,0.006944673061371,0.039835988283157,0.025360778570175,0.000757339000702,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:52:42,False,False,200,0.003284044265747,0.006942090988159,0.038870732784271,0.023859632015228,0.000705161094666,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:53:16,False,False,100,0.003656179904938,0.005776383876801,0.025797350406647,0.01539302110672,0.000770201683044,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:53:33,False,False,100,0.003554759025574,0.005703027248383,0.024777753353119,0.015221126079559,0.000770528316498,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:53:49,False,False,100,0.003367004394531,0.005602278709412,0.023594326972962,0.014168989658356,0.000726828575134,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:54:03,False,False,50,0.003355793952942,0.005232772827148,0.016062431335449,0.009248399734497,0.000776686668396,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:54:09,False,False,50,0.003454508781433,0.005315055847168,0.016247057914734,0.009447617530823,0.00073832988739,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:54:15,False,False,50,0.003420171737671,0.005717425346375,0.016275815963745,0.009424614906311,0.001325125694275,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:57:41,False,False,300,0.003357520103455,0.009047945340474,0.055130259990692,0.033688295682271,0.000706691741943,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 10:59:35,False,False,300,0.003680046399434,0.009138919512431,0.056478141943614,0.0363059147199,0.000769446690877,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:01:29,False,False,300,0.003643860816956,0.008885918458303,0.059775860309601,0.035221153100332,0.000756018956502,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:47:40,False,False,100,0.003384988307953,0.006034939289093,0.024095425605774,0.014140074253082,0.000722093582153,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:47:57,False,False,100,0.003611071109772,0.005775241851807,0.023724327087402,0.014749829769135,0.000745611190796,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:48:15,False,False,100,0.003316740989685,0.005551462173462,0.023505146503449,0.014274184703827,0.000737235546112,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:51:06,False,False,200,0.003252120018005,0.006922056674957,0.038872839212418,0.025012502670288,0.000715854167938,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:52:07,False,False,200,0.003315222263336,0.007173013687134,0.039467182159424,0.0239526450634,0.000736322402954,,FALSE,0
jbl+AC0-T440p,Sep 22 2020 11:53:59,False,False,200,0.003276619911194,0.006898198127747,0.038627609014511,0.023467609882355,0.000708512067795,,FALSE,0
jbl+AC0-T440p,Sep 23 2020 15:19:39,True,False,100,0.006617827415466,0.245147013664246,0.261345520019531,0.209938230514526,0.001274492740631,0.01203465461731,TRUE,0
jbl+AC0-T440p,Sep 23 2020 15:23:58,True,False,100,0.006518981456757,0.263970799446106,0.139407794475555,0.113074848651886,0.001235642433167,0.642078399658203,TRUE,0
jbl+AC0-T440p,Sep 23 2020 15:25:33,True,False,100,0.006539282798767,0.263329057693481,0.143536510467529,0.115545327663422,0.00125715970993,0.520937442779541,TRUE,0
jbl+AC0-T440p,Sep 23 2020 15:47:31,True,True,100,0.003864502906799,0.019258742332459,0.01636646270752,0.008915212154388,0.000782597064972,0.354249000549316,TRUE,0
jbl+AC0-T440p,Sep 23 2020 15:48:30,True,True,100,0.003590517044067,0.019879310131073,0.016916983127594,0.009615495204926,0.000798478126526,0.364127635955811,TRUE,0
jbl+AC0-T440p,Sep 23 2020 15:49:19,True,True,100,0.003716588020325,0.023860175609589,0.016380727291107,0.009003615379334,0.000774307250977,0.35044002532959,TRUE,0
jbl+AC0-T440p,Sep 23 2020 16:56:57,True,True,100,0.004425497055054,0.019956090450287,0.017114706039429,0.010911240577698,0.000832149982452,0.336694478988647,TRUE,0
jbl+AC0-T440p,Sep 23 2020 16:57:23,True,True,100,0.004397692680359,0.021222379207611,0.01826550245285,0.010625832080841,0.000812151432037,0.344640016555786,TRUE,0
jbl+AC0-T440p,Sep 23 2020 16:57:45,True,True,100,0.004602279663086,0.020297501087189,0.017129955291748,0.010850946903229,0.000865814685822,0.339866161346436,TRUE,0
jbl+AC0-T440p,Sep 23 2020 16:58:37,True,True,200,0.004463336467743,0.036689649820328,0.025502071380615,0.015932221412659,0.000898872613907,0.681740045547485,TRUE,0
jbl+AC0-T440p,Sep 23 2020 16:59:37,True,True,200,0.004517335891724,0.036278907060623,0.025654143095017,0.01576028585434,0.000849905014038,0.660790681838989,TRUE,0
jbl+AC0-T440p,Sep 23 2020 17:14:05,True,False,100,0.006808481216431,0.252511320114136,0.139744215011597,0.111351528167725,0.001188087463379,0.564764976501465,TRUE,0
jbl+AC0-T440p,Sep 23 2020 17:16:58,True,False,100,0.006502165794373,0.242799952030182,0.137602522373199,0.108403618335724,0.001143708229065,0.556174516677856,TRUE,0
jbl+AC0-T440p,Sep 24 2020 06:53:53,True,False,100,0.007479875087738,0.252197952270508,0.141312582492828,0.109222292900085,0.001601278781891,0.52592396736145,TRUE,0
jbl+AC0-T440p,Sep 24 2020 06:56:06,True,False,100,0.020340206623077,1.31586099863052,0.729812262058258,0.577438371181488,0.00078241109848,1.78533124923706,FALSE,0
jbl+AC0-T440p,Sep 24 2020 07:04:00,True,False,100,0.006233677864075,0.242916750907898,0.135480484962463,0.10392139673233,0.000762076377869,0.569819927215576,TRUE,0
jbl+AC0-T440p,Sep 24 2020 07:05:19,True,True,100,0.006471273899078,0.023659512996674,0.020732533931732,0.015365273952484,0.000769484043121,0.549034357070923,FALSE,0
jbl+AC0-T440p,Sep 24 2020 07:05:50,True,True,100,0.005183663368225,0.021180493831635,0.016473467350006,0.010494797229767,0.000771188735962,0.321053028106689,TRUE,0
jbl+AC0-T440p,Sep 24 2020 07:33:51,True,True,100,0.004018228054047,0.019896368980408,0.024588730335236,0.015463829040527,0.000797684192657,0.375835657119751,TRUE,0
jbl+AC0-T440p,Oct 08 2020 15:01:01,True,True,100,0.004086337089539,0.022444577217102,1.26581408977509,0.014725821018219,0.002466685771942,0.310548305511475,TRUE,1
jbl+AC0-T440p,Oct 08 2020 15:25:42,True,True,100,0.004928917884827,0.020494124889374,1.19440255403519,0.01545866727829,0.000807287693024,0.304153442382812,TRUE,1
jbl+AC0-T440p,Oct 08 2020 15:44:13,True,True,100,0.00410740852356,0.020648219585419,1.24338629007339,0.01569117307663,0.00077033996582,0.33369255065918,TRUE,1
jbl+AC0-T440p,Oct 08 2020 16:19:05,True,True,100,0.004798595905304,0.022070643901825,1.24563392400742,0.015214123725891,0.000787632465363,0.333659410476685,TRUE,1
jbl+AC0-T440p,Oct 09 2020 11:23:54,True,True,100,0.004018263816834,0.020824022293091,1.16614150524139,0.015614166259766,0.000755190849304,0.34318208694458,TRUE,1
jbl+AC0-T440p,Oct 09 2020 11:54:15,True,True,100,0.003045120239258,0.005557940006256,0.009205477237701,0.003398790359497,0.00073746919632,0.356267929077148,TRUE,1
jbl+AC0-T440p,Oct 09 2020 11:56:19,True,True,100,0.003119325637817,0.005602471828461,0.009082851409912,0.003396863937378,0.000744948387146,0.303446769714356,TRUE,2
jbl+AC0-T440p,Oct 09 2020 11:58:22,True,True,100,0.003008058071136,0.005401248931885,0.010658957958222,0.003909242153168,0.000718443393707,0.301162958145142,TRUE,3
jbl+AC0-T440p,Oct 09 2020 11:59:16,True,True,100,0.003015418052673,0.005526115894318,0.010740044116974,0.00400491476059,0.000724492073059,0.313828229904175,TRUE,4
jbl+AC0-T440p,Oct 09 2020 12:00:32,True,True,100,0.002969658374786,0.005434756278992,0.018136837482452,0.003030817508698,0.000726938247681,0.320115327835083,TRUE,0
jbl+AC0-T440p,Oct 09 2020 12:21:00,True,True,100,0.003493466377258,0.006103293895721,0.01923253774643,0.003091294765472,0.000737550258636,0.369867086410522,TRUE,0
jbl+AC0-T440p,Oct 15 2020 22:00:10,True,True,100,0.003004941940308,0.00546817779541,0.018348352909088,0.003068554401398,0.000729415416718,0.320573329925537,TRUE,0
jbl+AC0-T440p,Oct 15 2020 22:15:26,True,True,100,0.003350086212158,0.005898218154907,0.011625332832337,0.004264788627625,0.000795011520386,0.319289922714233,TRUE,1
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.