| 1306 | |
| 1307 | |
| 1308 | class SyncplayUser(object): |
| 1309 | def __init__(self, username=None, room=None, file_=None): |
| 1310 | self.ready = None |
| 1311 | self.username = username |
| 1312 | self.room = room |
| 1313 | self.file = file_ |
| 1314 | self._controller = False |
| 1315 | self._features = {} |
| 1316 | |
| 1317 | def setFile(self, filename, duration, size, path=None): |
| 1318 | file_ = { |
| 1319 | "name": filename, |
| 1320 | "duration": duration, |
| 1321 | "size": size, |
| 1322 | "path": path |
| 1323 | } |
| 1324 | self.file = file_ |
| 1325 | |
| 1326 | def isFileSame(self, file_): |
| 1327 | if not self.file: |
| 1328 | return False |
| 1329 | sameName = utils.sameFilename(self.file['name'], file_['name']) |
| 1330 | sameSize = utils.sameFilesize(self.file['size'], file_['size']) |
| 1331 | sameDuration = utils.sameFileduration(self.file['duration'], file_['duration']) |
| 1332 | return sameName and sameSize and sameDuration |
| 1333 | |
| 1334 | def __lt__(self, other): |
| 1335 | if self.isController() == other.isController(): |
| 1336 | return self.username.lower() < other.username.lower() |
| 1337 | else: |
| 1338 | return self.isController() > other.isController() |
| 1339 | |
| 1340 | def __repr__(self, *args, **kwargs): |
| 1341 | if self.file: |
| 1342 | return "{}: {} ({}, {})".format(self.username, self.file['name'], self.file['duration'], self.file['size']) |
| 1343 | else: |
| 1344 | return "{}".format(self.username) |
| 1345 | |
| 1346 | def setControllerStatus(self, isController): |
| 1347 | self._controller = isController |
| 1348 | |
| 1349 | def isController(self): |
| 1350 | return self._controller |
| 1351 | |
| 1352 | def canControl(self): |
| 1353 | if self.isController() or not utils.RoomPasswordProvider.isControlledRoom(self.room): |
| 1354 | return True |
| 1355 | else: |
| 1356 | return False |
| 1357 | |
| 1358 | def isReadyWithFile(self): |
| 1359 | if self.file is None: |
| 1360 | return None |
| 1361 | return self.ready |
| 1362 | |
| 1363 | def isReady(self): |
| 1364 | return self.ready |
| 1365 | |