| 537 | |
| 538 | |
| 539 | class Room(object): |
| 540 | STATE_PAUSED = 0 |
| 541 | STATE_PLAYING = 1 |
| 542 | |
| 543 | def __init__(self, name, roomsdbhandle): |
| 544 | self._name = name |
| 545 | self._roomsDbHandle = roomsdbhandle |
| 546 | self._watchers = {} |
| 547 | self._playState = self.STATE_PAUSED |
| 548 | self._setBy = None |
| 549 | self._playlist = [] |
| 550 | self._playlistIndex = None |
| 551 | self._lastUpdate = time.time() |
| 552 | self._lastSavedUpdate = 0 |
| 553 | self._position = 0 |
| 554 | self._permanent = False |
| 555 | |
| 556 | def __str__(self, *args, **kwargs): |
| 557 | return self.getName() |
| 558 | |
| 559 | def roomsCanPersist(self): |
| 560 | return self._roomsDbHandle is not None |
| 561 | |
| 562 | def isPersistent(self): |
| 563 | return self.roomsCanPersist() and not self.isMarkedAsTemporary() |
| 564 | |
| 565 | def isMarkedAsTemporary(self): |
| 566 | roomName = self.getName().lower() |
| 567 | return roomName.endswith("-temp") or "-temp:" in roomName |
| 568 | |
| 569 | def isPlaylistEmpty(self): |
| 570 | return len(self._playlist) == 0 |
| 571 | |
| 572 | def isPermanent(self): |
| 573 | return self._permanent |
| 574 | |
| 575 | def isNotPermanent(self): |
| 576 | return not self.isPermanent() |
| 577 | |
| 578 | def sanitizeFilename(self, filename, blacklist="<>:/\\|?*\"", placeholder="_"): |
| 579 | return ''.join([c if c not in blacklist and ord(c) >= 32 else placeholder for c in filename]) |
| 580 | |
| 581 | def writeToDb(self): |
| 582 | if not self.isPersistent(): |
| 583 | return |
| 584 | processed_playlist = getListAsMultilineString(self._playlist) |
| 585 | self._roomsDbHandle.saveRoom(self._name, processed_playlist, self._playlistIndex, self._position, self._lastSavedUpdate) |
| 586 | |
| 587 | def loadRoom(self, room): |
| 588 | name, playlist, playlistindex, position, lastupdate = room |
| 589 | self._name = name |
| 590 | self._playlist = convertMultilineStringToList(playlist) |
| 591 | self._playlistIndex = playlistindex |
| 592 | self._position = position |
| 593 | self._lastSavedUpdate = lastupdate |
| 594 | |
| 595 | def getName(self): |
| 596 | return self._name |