forked from alexanderrichtertd/plex
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathusers.py
More file actions
113 lines (85 loc) · 3.15 KB
/
users.py
File metadata and controls
113 lines (85 loc) · 3.15 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#*********************************************************************
# content = set und get user data
# version = 0.1.0
# date = 2019-10-06
#
# license = MIT <https://github.com/alexanderrichtertd>
# author = Alexander Richter <alexanderrichtertd.com>
#*********************************************************************
# why users? because user is already taken by python
import os
import sys
import getpass
import pipefunc
import tank
from tank import Tank
#*********************************************************************
# VARIABLE
TITLE = os.path.splitext(os.path.basename(__file__))[0]
LOG = Tank().log.init(script=TITLE)
USER = getpass.getuser()
#*********************************************************************
# USER
class User(tank.Singleton):
def setup(self, user_id=USER):
self.create()
if os.path.exists(os.path.dirname(self.sandbox_path)):
pipefunc.create_folder(self.sandbox_path)
def create(self, user_id=USER, name=USER, settings = {}, rights = 'artist'):
self._id = user_id # arichter
self._name = name # Alexander Richter
self._settings = settings # {'arLoad': []}
self._rights = rights # admin, artist
# self._task = task # {'LIGHT': [110, 120]}
# self._position = position # Pipeline
def __call__(self):
return (self.id, ': ', self.name,
'\nBirth: ', self.birth,
'\nTask: ', self.task,
'\nPosition: ', self.position,
'\nSettings: ', self.settings)
#*********************************************************************
# VARIABLES
@property
def id(self):
return self._id
@property
def name(self):
return self._name
@property
def rights(self):
return self._rights
@property
def is_admin(self):
return True if self._rights == 'admin' else False
@property
def data_path(self):
return os.getenv('DATA_USER_PATH')
@property
def data_user_path(self):
data_user_path = '{}/{}.yml'.format(self.data_path, self.name)
if not os.path.exists(data_user_path):
data_user_path = ''
return data_user_path
@property
def stats_path(self):
return '{}/{}.stats'.format(self.data_path, self.name)
@property
def log_path(self):
return '{}/{}.log'.format(self.data_path, self.name)
@property
def sandbox_path(self):
return Tank().data_project['PATH']['sandbox'] + '/' + self._id
#*********************************************************************
# FUNCTIONS
def write_data(self, scriptSettings):
currentChange = self.read_user()
currentChange.__dict__["settings"].update(scriptSettings)
setUser(currentChange)
def delete_data(self):
deletePath = os.path.join(DATA.PATH['data_user'], self.id)
if os.path.exists(deletePath):
LOG.info("DONE : " + self.id + " removed")
os.remove(deletePath)
else:
LOG.info("FAIL : " + self.id + " - user doesnt exists")