This repository was archived by the owner on Oct 22, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmodels.py
More file actions
59 lines (49 loc) · 1.75 KB
/
Copy pathmodels.py
File metadata and controls
59 lines (49 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
from utils import db, misc
import random
import string
import redis_lock
class User():
def __init__(self, user_id, user_email=None):
self.user_id = user_id
self.lock = redis_lock.Lock(db.r, user_id)
if db.get_user_dict(user_id):
self.__dict__.update(db.get_user_dict(user_id))
else:
self.email = user_email
self.ivle_token = ''
self.modules = []
self.enabled = False
self.uploadable_folder = False
self.target = None
self.last_target = None
self.target_settings = {}
self.synced_files = []
self.key = misc.generate_random_string(16)
self.update()
def update_ivle_token(self, new_token):
with self.lock:
self.sync_from_db()
self.ivle_token = new_token
self.update()
def unauth_target(self, clear_synced_files=True):
with self.lock:
self.sync_from_db()
self.last_target = None # This should always be manually called by user so no need to save last_target
self.target = None
if clear_synced_files:
self.synced_files = []
self.enabled = False
self.update()
def to_dict(self):
return self.__dict__
def sync_from_db(self):
self.__dict__.update(db.get_user_dict(self.user_id))
def update(self):
db.update_user(self)
def generate_emergency_code(self):
return db.generate_user_emergency(self.user_id)
def check_emergency_code(self, auth_code):
return db.check_user_emergency(self.user_id, auth_code)
@classmethod
def user_exists(cls, user_id):
return bool(db.get_user_dict(user_id))