[Update] Merge dev

This commit is contained in:
ibuler
2018-07-27 12:12:32 +08:00
10 changed files with 56 additions and 10 deletions

View File

@@ -119,6 +119,8 @@ class SystemUser(AssetUser):
shell = models.CharField(max_length=64, default='/bin/bash', verbose_name=_('Shell'))
login_mode = models.CharField(choices=LOGIN_MODE_CHOICES, default=AUTO_LOGIN, max_length=10, verbose_name=_('Login mode'))
cache_key = "__SYSTEM_USER_CACHED_{}"
def __str__(self):
return '{0.name}({0.username})'.format(self)
@@ -155,6 +157,24 @@ class SystemUser(AssetUser):
else:
return False
def set_cache(self):
cache.set(self.cache_key.format(self.id), self, 3600)
def expire_cache(self):
cache.delete(self.cache_key.format(self.id))
@classmethod
def get_system_user_by_id_or_cached(cls, sid):
cached = cache.get(cls.cache_key.format(sid))
if cached:
return cached
try:
system_user = cls.objects.get(id=sid)
system_user.set_cache()
return system_user
except cls.DoesNotExist:
return None
class Meta:
ordering = ['name']
unique_together = [('name', 'org_id')]