def load_all_changes(self): """ get changes from api, clear listwidget, render them to ui """ data = {"token": self.token, "p_id": self.p_id} named_version_only = None if self.versionFilterCB.currentIndex() == 0: named_version_only = True query_string = url_encode({"named_version": named_version_only}) url_path = f'get_all_changes?{query_string}' url = url_join(self.mscolab_server_url, url_path) r = requests.get(url, data=data) changes = json.loads(r.text)["changes"] self.changes.clear() for change in changes: created_at = datetime.strptime(change["created_at"], "%Y-%m-%d, %H:%M:%S") local_time = utc_to_local_datetime(created_at) date = local_time.strftime('%d/%m/%Y') time = local_time.strftime('%I:%M %p') item_text = f'{change["username"]} made change on {date} at {time}' if change["version_name"] is not None: item_text = f'{change["version_name"]}\n{item_text}' item = QtWidgets.QListWidgetItem(item_text, parent=self.changes) item.id = change["id"] item.version_name = change["version_name"] self.changes.addItem(item)
def render_new_message(self, message, scroll=True): message_item = MessageItem(message, self) list_widget_item = QtWidgets.QListWidgetItem(self.messageList) list_widget_item.setSizeHint(message_item.sizeHint()) self.messageList.addItem(list_widget_item) self.messageList.setItemWidget(list_widget_item, message_item) if scroll: self.messageList.scrollToBottom()
def create_list_item(self, text): """ PyQt5 method : Add items in list and add checkbox functionality """ item = QtWidgets.QListWidgetItem(text) item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable) item.setCheckState(QtCore.Qt.Checked) self.listWidget.addItem(item)
def add_projects_to_ui(self, projects): logging.debug("adding projects to ui") self.listProjects.clear() selectedProject = None for project in projects: project_desc = f'{project["path"]} - {project["access_level"]}' widgetItem = QtWidgets.QListWidgetItem(project_desc, parent=self.listProjects) widgetItem.p_id = project["p_id"] widgetItem.access_level = project["access_level"] if widgetItem.p_id == self.active_pid: selectedProject = widgetItem self.listProjects.addItem(widgetItem) if selectedProject is not None: self.listProjects.setCurrentItem(selectedProject) self.listProjects.itemActivated.emit(selectedProject) self.listProjects.itemActivated.connect(self.set_active_pid)
def load_users(self): # load users to side-tab here # make request to get users data = {"token": self.token, "p_id": self.p_id} url = url_join(self.mscolab_server_url, 'authorized_users') r = requests.get(url, data=data) if r.text == "False": show_popup(self, "Error", "Some error occurred while fetching users!") else: self.collaboratorsList.clear() users = r.json()["users"] for user in users: item = QtWidgets.QListWidgetItem( f'{user["username"]} - {user["access_level"]}', parent=self.collaboratorsList) self.collaboratorsList.addItem(item)
def render_new_permission(self, p_id, u_id): """ p_id: project id u_id: user id to render new permission if added """ data = { 'token': self.token } r = requests.get(self.mscolab_server_url + '/user', data=data) _json = json.loads(r.text) if _json['user']['id'] == u_id: project = self.get_recent_project() project_desc = f'{project["path"]} - {project["access_level"]}' widgetItem = QtWidgets.QListWidgetItem(project_desc, parent=self.listProjects) widgetItem.p_id = project["p_id"] widgetItem.access_level = project["access_level"] self.listProjects.addItem(widgetItem) if self.chat_window is not None: self.chat_window.load_users()