def POST(self): if self.input['oper'] == 'del': d = Delete(self.input) return d.delete() elif self.input['oper'] == 'edit': u = Update(self.input) return u.update()
def delete(self): delete = Delete() if self.args['sample'] is not None: delete.delete_sample(self.args['sample']) elif self.args['collection'] is not None: delete.delete_collection(self.args['collection']) else: print "See please --help to specify something to delete."
def handler(event, contest): logger.info("Start!") main_loop = IOLoop.instance() poll = Poll(main_loop) cal = poll.cal delete = Delete() update_and_delete = UpdateAndDelete(main_loop, delete) table = event['table'] queue_url = event['queueUrl'] message_count = event['messageCount'] poll.messages(sqs_receive_message, queue_url, message_count) logger.info("Receive API count: {}".format(poll.fetch_count)) logger.info("Fetched messages: {}".format(poll.message_count)) update_and_delete.execute(sqs_delete_message_batch, db_update_item, queue_url, table, cal.stats) logger.info("Update API count: {}".format(update_and_delete.update_count)) logger.info("Delete API count: {}".format(delete.delete_count)) logger.info("Delete Message count: {}".format(delete.message_count)) return "Lambda job finished successfully."
def delete(jdID, content): date, time, detail = content['dDate'], content['dSTime'], content['dEvent'] year, month, day, hour, minute, __, detail = get_properties(date=date, time=time, detail=detail) nearest = True if 'value' in content['nearest'] else False #print(nearest) selftime = None if 'value' not in content['SeTime'] else content['SeTime']['value'] cmd = None if 'value' not in content['dAll'] else content['dAll']['value'] cmd = cmd if nearest is False else '最近一次' event = Event(jdID=jdID, year=year, month=month, day=day, hour=hour, minute=minute, event_detail=detail, isDelete=True) delete = Delete(db=db, jdID=jdID, event=event, selftime=selftime, cmd=cmd) rst = delete.delete() return rst
def delete(self): ''' Функция вызывает класс Delete для удаления элемента таблицы Получает: - Возвращает: - Автор: - ''' global tree Delete(tree)
def main(): print('Available Options: C=Create, R=Read, U=Update, D=Delete ') choice = input('Choose your option = ') if choice == 'C': createObj=Create() createObj.func_CreateData() elif choice == 'R': readObj = Read() readObj.func_ReadData() elif choice == 'U': updateObj = Update() updateObj.func_UpdateData() elif choice == 'D': deleteObj = Delete() deleteObj.func_DeleteData() else: print('Wrong choice, You are going exist.')
def delete(self): """ This is what is carried out when the delete option is chosen. :return: """ delete = Delete() # This deletes a specific sample if self.args['sample'] is not None: delete.delete_sample(self.args['sample']) # This deletes a specific collection elif self.args['collection'] is not None: delete.delete_collection(self.args['collection']) else: print "See please --help to specify something to delete."
def selBtnEvent(self): for widget in self.workFrm.winfo_children(): widget.destroy() if self.selV.get() == 1: Merge(self) if self.selV.get() == 2: Split(self) if self.selV.get() == 3: Insert(self) if self.selV.get() == 4: Delete(self)
def main(): while 1: print( 'Available Options: C=Create, R=Read, U=Update, D=Delete, E=Exit ') choice = input('Choose your option = ') if choice == 'C': createObj = Create() createObj.func_CreateData() elif choice == 'R': readObj = Read() readObj.func_ReadData() elif choice == 'U': updateObj = Update() updateObj.func_UpdateData() elif choice == 'D': deleteObj = Delete() deleteObj.func_DeleteData() elif choice == 'E': break
def __init__(self): super(Window, self).__init__() self.layout = QBoxLayout(QBoxLayout.TopToBottom) self.setLayout(self.layout) self.setWindowTitle("GUI") self.setFixedSize(500, 500) Encrypt(self) Add(self) Delete(self) self.Dcheck.toggle() self.Acheck.toggle() self.Echeck.toggle()
def deleteActionExec(self, window, item): msg = QtGui.QMessageBox() msg.setText(QtGui.QApplication.translate("ImportWindow", "Are you sure you want to delete selected item?", None, QtGui.QApplication.UnicodeUTF8)) msg.setStandardButtons(msg.No | msg.Yes) msg.setDefaultButton(msg.No) msg.show() msgResult = msg.exec_() if msgResult == msg.Yes: self.delete = Delete(self) self.delete.show() self.delete.normalizeSizeWidget() self.connect(self.delete, QtCore.SIGNAL("deleteFinished()"), self.deleteFinished) self.delete.processDelete(series = self.getSeriesFromItem(item))
def handler(event, context): logger.info("Start!") poll = Poll() cal = Sum() update = Update() delete = Delete() table = event['table'] queue_url = event['queueUrl'] message_count = event['messageCount'] def on_error(e): raise e def on_poll_completed(): logger.info("Receive API count: {}".format(poll.fetch_count)) logger.info("Fetched messages: {}".format(poll.message_count)) update_and_delete() def update_and_delete_one(key): updated_message_ids = update.execute(db, table, cal.stats[key]) return delete.execute(sqs_client, queue_url, updated_message_ids) def update_and_delete(): delete_results = [] async_one = rx.Observable.to_async(update_and_delete_one) for key in cal.stats: delete_results.append(async_one(key)) rx.Observable.merge(delete_results).to_blocking().for_each(block) on_next_message = cal.add messages = poll.messages(sqs, queue_url, message_count).to_blocking() messages_observer = rx.Observer(on_next_message, on_error, on_poll_completed) messages.subscribe(messages_observer) messages.for_each(block) logger.info("Update API count: {}".format(update.update_count)) logger.info("Delete API count: {}".format(delete.delete_count)) logger.info("Delete Message count: {}".format(delete.message_count))
def update_and_delete_one(sqs, db, queue_url, table, stats, executor): ids = update(db, table, stats) delete = Delete(executor) delete.execute(sqs, queue_url, ids) return delete
from read import Read from update import Update from delete import Delete from raw_crud import connection_to_server conn = connection_to_server() #Default localhost i połączenie z bazą TheShips if conn: while True: print('c=Create, r=Read, u=Update, d=Delete, anything else=Exit ') choice = input('What do you want to do? Choose one option: ') if choice == 'c': create1 = Create() create1.insert_row(conn) elif choice == 'r': read1 = Read() read1.display_table(conn) elif choice == 'u': update1 = Update() update1.update_rows(conn) elif choice == 'd': delete1 = Delete() delete1.delete_rows(conn) else: print('Bye :)') break else: print('Failed to connect to database')
login_window = LogIn() if login_window.is_closed: is_true = False if login_window.create_homepage: homepage_window = HomePage(login_window.table_name) while not homepage_window.is_closed: if homepage_window.expense: expense_window = Expense(login_window.table_name) homepage_window = HomePage(login_window.table_name) if homepage_window.income: income_window = Income(login_window.table_name) homepage_window = HomePage(login_window.table_name) if homepage_window.transaction: transaction_window = Transaction(login_window.table_name) homepage_window = HomePage(login_window.table_name) if homepage_window.delete: delete_window = Delete(login_window.table_name) homepage_window = HomePage(login_window.table_name) if homepage_window.analysis: analysis_window = Analysis(login_window.table_name) homepage_window = HomePage(login_window.table_name) if homepage_window.suggestion: suggestion_window = Savings(login_window.table_name) homepage_window = HomePage(login_window.table_name) login_window = LogIn() if login_window.is_closed: is_true = False else: is_true = False
def test_deletebucket_second(self): '''TEST : Checking S3 Bucket data deletion''' self.assertTrue(Delete.delete_from_bucket('test11/test22/test33/'))
from handinserting import * hi = HandInserting() hi.insert_terms() elif ec == "4": from handinserting import * tables = [] hi = HandInserting() hi.insert_phrases() elif ec == "5": from testing import * tph = TestPhrases() tph.start(["all_phrases"]) elif ec == "6": from add import Add ad = Add() ad.add_term() elif ec == "7": from delete import Delete delete = Delete() delete.del_term() elif ec == "8": from change import Change ch = Change() ch.change_term()
class ImportWindow(QtGui.QWidget, Ui_ImportWindow): def __init__(self, parent=None): logging.debug("In ImportWindow::__init__()") super(ImportWindow, self).__init__(parent) self.setupUi(self) self.setWindowTitle(constant.TITLE_PROGRAM) self.createComponents() self.createSignals() self.importSearch = ImportSearch() self.createActions() self.filters = [] self.createPreviews() self.updateTree() self.series = [] self._contextMenuProviders = [] self.outsideMenuContext = None def createComponents(self): logging.debug("In ImportWindow::createComponents()") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap(":/static/default/icon/22x22/dialog-close.png")) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap(":/static/default/icon/22x22/document-export.png")) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap(":/static/default/icon/22x22/clear.png")) icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap(":/static/default/icon/22x22/im-status-message-edit.png")) icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap(":/static/default/icon/22x22/edit-paste.png")) self.deleteAction = QtGui.QAction(self) self.deleteAction.setText(QtGui.QApplication.translate( "ImportWindow", "Delete", None, QtGui.QApplication.UnicodeUTF8)) self.deleteAction.setIconVisibleInMenu(True) self.deleteAction.setObjectName("deleteAction") self.deleteAction.setIcon(icon1) self.exportAction = QtGui.QAction(self) self.exportAction.setText(QtGui.QApplication.translate( "ImportWindow", "Export", None, QtGui.QApplication.UnicodeUTF8)) self.exportAction.setIconVisibleInMenu(True) self.exportAction.setObjectName("exportAction") self.exportAction.setIcon(icon2) self.resetAction = QtGui.QAction(self) self.resetAction.setText(QtGui.QApplication.translate( "ImportWindow", "Reset", None, QtGui.QApplication.UnicodeUTF8)) self.resetAction.setIconVisibleInMenu(True) self.resetAction.setObjectName("resetAction") self.resetAction.setIcon(icon3) self.duplicateSerieAction = QtGui.QAction(self) self.duplicateSerieAction.setText(QtGui.QApplication.translate( "ImportWindow", "Duplicate", None, QtGui.QApplication.UnicodeUTF8)) self.duplicateSerieAction.setIconVisibleInMenu(True) self.duplicateSerieAction.setObjectName("resetAction") self.duplicateSerieAction.setIcon(icon5) self.renameSerieAction = QtGui.QAction(self) self.renameSerieAction.setText(QtGui.QApplication.translate( "ImportWindow", "Rename", None, QtGui.QApplication.UnicodeUTF8)) self.renameSerieAction.setIconVisibleInMenu(True) self.renameSerieAction.setObjectName("renameSerieAction") self.renameSerieAction.setIcon(icon4) self.renamePatientAction = QtGui.QAction(self) self.renamePatientAction.setText(QtGui.QApplication.translate( "ImportWindow", "Rename", None, QtGui.QApplication.UnicodeUTF8)) self.renamePatientAction.setIconVisibleInMenu(True) self.renamePatientAction.setObjectName("renamePatientAction") self.renamePatientAction.setIcon(icon4) self.renameStudyAction = QtGui.QAction(self) self.renameStudyAction.setText(QtGui.QApplication.translate( "ImportWindow", "Rename", None, QtGui.QApplication.UnicodeUTF8)) self.renameStudyAction.setIconVisibleInMenu(True) self.renameStudyAction.setObjectName("renameStudyAction") self.renameStudyAction.setIcon(icon4) self.treeMenu = QtGui.QMenu(self.treeWidget) self.rename = Rename(self) # self.treeMenu.addAction(self.deleteAction) # self.treeMenu.addAction(self.exportAction) # self.treeMenu.addAction(self.resetAction) self.treeMenu.setIcon(icon1) def createActions(self): logging.debug("In ImportWindow::createActions()") self.treeWidget.contextMenuEvent = self.treeContextEvent self.connect(self.treeWidget, QtCore.SIGNAL("itemClicked(QTreeWidgetItem*, int)"), self.slotTreeWidgetClicked) self.connect(self.treeWidget, QtCore.SIGNAL("itemEntered (QTreeWidgetItem*, int)"), self.slotTreeWidgetClicked) self.connect(self.splitter, QtCore.SIGNAL("splitterMoved(int, int)"), self.slotHSplit) self.connect(self.horizontalSlider, QtCore.SIGNAL("valueChanged(int)"), self.slotSliderMoved) self.connect(self.spinBox, QtCore.SIGNAL("valueChanged(int)"), self.slotSpinChanged) self.connect(self.importButton, QtCore.SIGNAL("clicked()"), self.slotImportClicked) self.connect(self.treeWidget, QtCore.SIGNAL("itemExpanded(QTreeWidgetItem*)"), self.slotTreeWidgetExpanded) self.connect(self.treeWidget, QtCore.SIGNAL("itemCollapsed(QTreeWidgetItem*)"), self.slotTreeWidgetExpanded) self.connect(self.searchButton, QtCore.SIGNAL("clicked()"), self.slotSearchButtonClicked) self.connect(self.searchText, QtCore.SIGNAL( "textChanged ( QString)"), self.slotSearchTextChanged) self.connect(self.importSearch.searchButton, QtCore.SIGNAL("clicked()"), self.slotImportSearchButtonClicked) self.connect(self.importSearch.cancelButton, QtCore.SIGNAL("clicked()"), self.slotImportCancelButtonClicked) self.connect(self.resetButton, QtCore.SIGNAL("clicked()"), self.slotResetButtonClicked) self.connect(self.rename.Ok, QtCore.SIGNAL("clicked()"), self.slotRenameOkButtonClicked) self.connect(self.rename.Cancel, QtCore.SIGNAL("clicked()"), self.slotRenameCancelButtonClicked) def slotRenameOkButtonClicked(self): if self.rename.action == self.renameSerieAction: description = utils.decode_string(self.rename.newName.text()) id = self.rename.serie.uid if list(Serie.select("uid='{0}' AND description='{1}'".format(id, description))): QtGui.QMessageBox.critical(self.rename, "Error", QtGui.QApplication.translate( "ImportWindow", "This serie is already registered in database with this name. \nTry another one.", None, QtGui.QApplication.UnicodeUTF8)) return else: basePath = os.path.join(constant.INSTALL_DIR, "data") patientPath = os.path.join(basePath, hashStr(self.rename.serie.study.patient.uid)) oldSeriePath = os.path.join(patientPath,"{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(self.rename.serie.description))) filePath = file(os.path.join(oldSeriePath , "{0}{1}".format(hashStr(self.rename.serie.uid),".yaml")), 'r') vti = yaml.load(filePath) vti["vti"] = vti["vti"].replace("{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(self.rename.serie.description)), "{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(description))) filePath.close() filePath = file(os.path.join(oldSeriePath , "{0}{1}".format(hashStr(self.rename.serie.uid),".yaml")), 'w') yaml.dump(vti, filePath) filePath.close() self.rename.serie.description = description.encode("utf-8") self.rename.serie.file = os.path.join("{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(description)) , "{0}{1}".format(hashStr(self.rename.serie.uid),".yaml")) newSeriePath = os.path.join(patientPath,"{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(description))) if os.path.exists(newSeriePath): shutil.rmtree(newSeriePath) shutil.move(oldSeriePath, newSeriePath) elif self.rename.action == self.renamePatientAction: name = utils.decode_string(self.rename.newName.text()) self.rename.patient.name = name.encode("utf-8") elif self.rename.action == self.renameStudyAction: description = utils.decode_string(self.rename.newName.text()) self.rename.study.description = description.encode("utf-8") else: #copy files to new directory description = utils.decode_string(self.rename.newName.text()) id = self.rename.serie.uid if list(Serie.select("uid='{0}' AND description='{1}'".format(id, description))): QtGui.QMessageBox.critical(self.rename, "Error", QtGui.QApplication.translate( "ImportWindow", "This serie is already registered in database with this name. \nTry another one.", None, QtGui.QApplication.UnicodeUTF8)) return basePath = os.path.join(constant.INSTALL_DIR, "data") patientPath = os.path.join(basePath, hashStr(self.rename.serie.study.patient.uid)) oldSeriePath = os.path.join(patientPath,"{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(self.rename.serie.description))) newSeriePath = os.path.join(patientPath,"{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(description))) if os.path.exists(newSeriePath): shutil.rmtree(newSeriePath) shutil.copytree(oldSeriePath, newSeriePath) yamlFile = os.path.join("{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(description)) , "{0}{1}".format(hashStr(self.rename.serie.uid),".yaml")) filePath = file(os.path.join(newSeriePath , "{0}{1}".format(hashStr(self.rename.serie.uid),".yaml")), 'r') vti = yaml.load(filePath) vti["vti"] = vti["vti"].replace("{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(self.rename.serie.description)), "{0}{1}".format(hashStr(self.rename.serie.uid), hashStr(description))) filePath.close() filePath = file(os.path.join(newSeriePath , "{0}{1}".format(hashStr(self.rename.serie.uid),".yaml")), 'w') yaml.dump(vti, filePath) filePath.close() #create new serie Serie(uid=self.rename.serie.uid, file=yamlFile, description=description, thickness=self.rename.serie.thickness, size=self.rename.serie.size, zSpacing=self.rename.serie.zSpacing, tmp = False, dicomImages=self.rename.serie.dicomImages, study=self.rename.serie.study) self.rename.hide() self.updateTree() def slotRenameCancelButtonClicked(self): self.rename.hide() def createSignals(self): logging.debug("In ImportWindow::createSignals()") self.confirmImportSignal = QtCore.SIGNAL( "importConfirmed(PyObject, PyObject, PyObject)") def createPreviews(self): logging.debug("In ImportWindow::createPreviews()") imageLayout = QtGui.QGridLayout(self.imageViewWidget) self.image = VTKImageView(self.imageViewWidget) self.selectedNumber = -1 imageLayout.addWidget(self.image) self.previewWidgets = [] self.previewWidgetsMap = {} def imageClicked(self,obj, evt): logging.debug("In ImportWindow::imageClicked()") self.preview(self.previewWidgetsMap[obj]) def preview(self, preview): logging.debug("In ImportWindow::preview()") backgroundColor = self.palette().color(self.palette().Highlight) color = self.palette().color(self.palette().HighlightedText) preview.setStyleSheet( " background-color : rgb(" + str(backgroundColor.red()) + "," + str(backgroundColor.green()) + "," + str(backgroundColor.blue()) + ");" + "color : rgb(" + str(color.red()) + "," + str(color.green()) + "," + str(color.blue()) + ");") dicomPath = preview.getImagePath() self.imageTabWidget.setTabText(0,QtGui.QApplication.translate( "ImportWindow", "image ", None, QtGui.QApplication.UnicodeUTF8)+preview.getText()) self.image.setImagePath(dicomPath) for i,currentPreview in enumerate(self.previewWidgets): if currentPreview == preview: self.selectedNumber = i continue currentPreview.setStyleSheet("") self.horizontalSlider.setSliderPosition(self.selectedNumber) def setSliderRange(self, minRange, maxRange): logging.debug("In ImportWindow::setSliderRange()") self.horizontalSlider.setRange(minRange, maxRange) def removeAllItems(self): logging.debug("In ImportWindow::removeAllItems()") self.treeWidget.clear() def updateTree(self, qtd=0): logging.debug("In ImportWindow::updateTree()") self.seriesDictionary = {} patients = Patient.findContaining(self.importSearch.patientName.text()) self.removeAllItems() for patient in patients: item = QtGui.QTreeWidgetItem(self.treeWidget) if patient.sex: item.setText(2, patient.sex) if patient.birthdate: age = (datetime.datetime.now().toordinal() - patient.birthdate.toordinal()) / 365 item.setText(3, "{0}".format(age)) item.setText(7, patient.birthdate.strftime("%x")) self.seriesDictionary[item] = patient studies = Study.findContaining(patient=patient, description=self.importSearch.studyDescription.text(), modality=self.importSearch.modality.text(), institution= self.importSearch.institution.text()) item.setText(0, "Ok") item.setText(1, QtGui.QApplication.translate( "ImportWindow", "Patient: {0} ({1} studies)", None, QtGui.QApplication.UnicodeUTF8).format(patient.name, len(studies))) totalPatientImages = 0 for study in studies: studyItem = QtGui.QTreeWidgetItem(item) if study.modality: studyItem.setText(4, study.modality) if study.institution: studyItem.setText(6, study.institution) self.seriesDictionary[studyItem] = study try: series = Serie.findContaining(study=study, description=self.importSearch.serieDescription.text()) except: DBUtils.updateTable() series = Serie.findContaining(study=study, description=self.importSearch.serieDescription.text()) if not series: item.removeChild(studyItem) self.seriesDictionary.pop(studyItem) if study.description: studyItem.setText(1, QtGui.QApplication.translate( "ImportWindow", "Study: {0} ({1} series)", None, QtGui.QApplication.UnicodeUTF8).format(study.description, len(series))) else: studyItem.setText(1, QtGui.QApplication.translate( "ImportWindow", "Study: ({0} series)", None, QtGui.QApplication.UnicodeUTF8).format(len(series))) totalStudyImages = 0 for serie in series: serieItem = QtGui.QTreeWidgetItem(studyItem) serieItem.setText(1,QtGui.QApplication.translate( "ImportWindow", "Serie: {0}({1} images)", None, QtGui.QApplication.UnicodeUTF8).format( serie.description, serie.dicomImages)) serieItem.setText(5,"{0}".format(serie.dicomImages)) self.seriesDictionary[serieItem] = serie totalStudyImages = totalStudyImages + serie.dicomImages studyItem.setText(5,"{0}".format(totalStudyImages)) totalPatientImages = totalPatientImages + totalStudyImages item.setText(5,"{0}".format(totalPatientImages)) if item.childCount() == 0: self.treeWidget.takeTopLevelItem(self.treeWidget.topLevelItemCount()-1) self.seriesDictionary.pop(item) self.resizeTreeColumns() self.emit(QtCore.SIGNAL("treeUpdated()")) def slotHSplit(self, pos, index): logging.debug("In ImportWindow::slotHSplit()") self.organizePreviews() def createItemFromSerie(self, serie, parent): logging.debug("In ImportWindow::createItemFromSerie()") item = QtGui.QTreeWidgetItem(parent) item.setText(0, serie.firstDicom.seriesDescription+"("+ serie.getSerieLengthString()+")") for subSerie in serie.getSubSeries().values(): self.createItemFromSerie(subSerie, item) self.seriesDictionary[item] = serie return item def normalizeSizeWidget(self): logging.debug("In ImportWindow::normalizeSizeWidget()") self.splitter.setSizes([6000,4000]) def slotCancel(self): logging.debug("In ImportWindow::slotCancel()") self.series = [] self.seriesDictionary = {} self.close() self.parentWidget().close() def slotTreeWidgetClicked(self, item, column): logging.debug("In ImportWindow::slotTreeWidgetClicked()") try: self.series = [] if isinstance(self.seriesDictionary[item], Patient) : for study in self.seriesDictionary[item].studies: for serie in study.series: self.series.append(serie) elif isinstance(self.seriesDictionary[item], Study) : for serie in self.seriesDictionary[item].series: self.series.append(serie) elif isinstance(self.seriesDictionary[item], Serie) : self.series.append(self.seriesDictionary[item]) self.showPreview() except Exception as e: logging.warning(e) def deleteActionExec(self, window, item): msg = QtGui.QMessageBox() msg.setText(QtGui.QApplication.translate("ImportWindow", "Are you sure you want to delete selected item?", None, QtGui.QApplication.UnicodeUTF8)) msg.setStandardButtons(msg.No | msg.Yes) msg.setDefaultButton(msg.No) msg.show() msgResult = msg.exec_() if msgResult == msg.Yes: self.delete = Delete(self) self.delete.show() self.delete.normalizeSizeWidget() self.connect(self.delete, QtCore.SIGNAL("deleteFinished()"), self.deleteFinished) self.delete.processDelete(series = self.getSeriesFromItem(item)) def exportActionExec(self, window, item): lastdir = "{0}{1}{2}".format(profile.get_last_directory_action_new(), os.path.sep, "exporter.st") caption = QtGui.QApplication.translate( "ImportWindow", "Select the output directory", None, QtGui.QApplication.UnicodeUTF8) dialog = QtGui.QFileDialog.getSaveFileName(self, caption, lastdir, "File (*.st)") if dialog[0]: outputDirectory = os.path.abspath(dialog[0]) msg = QtGui.QMessageBox() msg.setText(QtGui.QApplication.translate( "ImportWindow", "Would you like to export Dicom Images?", None, QtGui.QApplication.UnicodeUTF8)) msg.setStandardButtons(msg.No | msg.Yes) msg.setDefaultButton(msg.No) msg.show() dicomImages = msg.exec_() == msg.Yes series = self.getSeriesFromItem(item) exporter = SerieExporter(self, outputDirectory, series, dicomImages) exporter.start() def resetActionExec(self, window, item): msg = QtGui.QMessageBox() msg.setText(QtGui.QApplication.translate( "ImportWindow", "Are you sure you want to reset selected serie?", None, QtGui.QApplication.UnicodeUTF8)) msg.setStandardButtons(msg.No | msg.Yes) msg.setDefaultButton(msg.No) msg.show() msgResult = msg.exec_() if msgResult == msg.Yes: series = self.getSeriesFromItem(item) reset = Reset(self) reset.processReset(series[0]) def duplicateSerieActionExec(self, window, item): self.rename.action = self.duplicateSerieAction self.rename.setWindowTitle(QtGui.QApplication.translate( "ImportWindow", "Duplicate Serie:", None, QtGui.QApplication.UnicodeUTF8)) self.rename.label.setText(QtGui.QApplication.translate( "ImportWindow", "New Serie Description:", None, QtGui.QApplication.UnicodeUTF8)) self.rename.serie = self.getSeriesFromItem(item)[0] self.rename.setWindowIcon(self.duplicateSerieAction.icon()) self.rename.newName.setText(self.rename.serie.description) self.rename.setDisabled(False) self.rename.show() def renameSerieActionExec(self, window, item): self.rename.setDisabled(False) if isinstance(self.seriesDictionary[item], Patient): self.rename.patient = self.seriesDictionary[item] self.rename.setWindowTitle(QtGui.QApplication.translate( "ImportWindow", "Rename Patient", None, QtGui.QApplication.UnicodeUTF8)) self.rename.label.setText(QtGui.QApplication.translate( "ImportWindow", "Name:", None, QtGui.QApplication.UnicodeUTF8)) self.rename.action = self.renamePatientAction self.rename.newName.setText(self.rename.patient.name) elif isinstance(self.seriesDictionary[item], Study): self.rename.study = self.seriesDictionary[item] self.rename.setWindowTitle(QtGui.QApplication.translate( "ImportWindow", "Rename Study", None, QtGui.QApplication.UnicodeUTF8)) self.rename.label.setText(QtGui.QApplication.translate( "ImportWindow", "Description:", None, QtGui.QApplication.UnicodeUTF8)) self.rename.action = self.renameStudyAction self.rename.newName.setText(self.rename.study.description) else: self.rename.serie = self.seriesDictionary[item] self.rename.setWindowTitle(QtGui.QApplication.translate( "ImportWindow", "Rename Serie", None, QtGui.QApplication.UnicodeUTF8)) self.rename.label.setText(QtGui.QApplication.translate( "ImportWindow", "Description:", None, QtGui.QApplication.UnicodeUTF8)) self.rename.action = self.renameSerieAction self.rename.newName.setText(self.rename.serie.description) self.rename.setWindowIcon(self.renameSerieAction.icon()) self.rename.show() def getTreeContextMenuActions(self, window, item): result = [] try: if item: result.append((self.deleteAction, self.deleteActionExec)) result.append((self.exportAction, self.exportActionExec)) result.append((self.renameSerieAction, self.renameSerieActionExec)) if isinstance(self.seriesDictionary[item], Serie): result.append((self.resetAction, self.resetActionExec)) result.append((self.duplicateSerieAction, self.duplicateSerieActionExec)) for provider in self._contextMenuProviders: actions = provider(window, item) if actions: result = result + actions except: if self.outsideMenuContext: return self.outsideMenuContext(window, item) return [] return result def treeContextEvent(self, event): logging.debug("In ImportWindow::treeContextEvent()") item = self.treeWidget.itemAt(event.pos()) if item: actions = self.getTreeContextMenuActions(self, item) self.treeMenu.clear() for action, callback in actions: self.treeMenu.addAction(action) result = self.treeMenu.exec_(QtGui.QCursor.pos()) if result: for action, callback in actions: if action == result: callback(self, item) break def getSeriesFromItem(self, item): series = [] if isinstance(self.seriesDictionary[item], Patient) : for study in self.seriesDictionary[item].studies: for serie in study.series: series.append(serie) elif isinstance(self.seriesDictionary[item], Study) : for serie in self.seriesDictionary[item].series: series.append(serie) elif isinstance(self.seriesDictionary[item], Serie) : series.append(self.seriesDictionary[item]) return series def deleteFinished(self): self.updateTree() self.image.setImage(None) self.image.removeAllTexts() self.setSliderRange(0, 0) def slotTreeWidgetExpanded(self, item): logging.debug("In ImportWindow::slotTreeWidgetExpanded()") self.resizeTreeColumns() def resizeTreeColumns(self): logging.debug("In ImportWindow::resizeTreeColumns()") for i in range(self.treeWidget.columnCount()): self.treeWidget.resizeColumnToContents(i) def cleanPreviewWidgets(self): logging.debug("In ImportWindow::cleanPreviewWidgets()") for preview in self.previewWidgets: self.removePreview(preview) self.previewWidgets = [] self.previewWidgetsMap = {} def removePreview(self, preview): logging.debug("In ImportWindow::removePreview()") preview.close() def showPreview(self): logging.debug("In ImportWindow::showPreview()") self.spinBox.setMinimum(1) self.spinBox.setMaximum(len(self.series)) folder = os.path.join(self.series[self.spinBox.value()-1].study.patient.directory, "{0}/images/".format(hashStr(self.series[self.spinBox.value()-1].uid))) files = os.listdir(folder) minRange = sys.maxint maxRange = 0 for f in files: try: value = int (f[:-4]) minRange = min(minRange, value) maxRange = max(maxRange, value) except: pass self.setSliderRange(minRange, maxRange) self.horizontalSlider.setValue(minRange) self.slotSliderMoved(minRange) self.image.removeAllTexts() self.image.addText(self.series[self.spinBox.value()-1].study.patient.name, y=0.10) self.image.addText(self.series[self.spinBox.value()-1].description, y=0.05) def organizePreviews(self): logging.debug("In ImportWindow::organizePreviews()") if self.previewWidgets: w = self.previewWidgets[0].width() h = self.previewWidgets[0].height() n = len(self.previewWidgets) lines = int(self.scrollArea.width()/w) if lines: columns = (n/lines)+1 self.previewWidget.resize(self.scrollArea.width(),columns*h) i = 0 j=-1 for preview in self.previewWidgets: if i%lines == 0: j = j+1 preview.setGeometry((i%lines)*w, j*h, w, h) preview.update() i = i+1 def slotSliderMoved(self, i): logging.debug("In ImportWindow::slotSliderMoved()") try: self.image.setImage(os.path.join(self.series[self.spinBox.value()-1].study.patient.directory, "{0}/images/{1}.dcm".format(hashStr(self.series[self.spinBox.value()-1].uid), i))) except: pass def slotSpinChanged(self, i): logging.debug("In ImportWindow::slotSpinChanged()") self.showPreview() def slotSearchButtonClicked(self): logging.debug("In ImportWindow::slotSearchButtonClicked()") self.importSearch.show() def slotSearchTextChanged(self): logging.debug("In ImportWindow::slotSearchTextChanged()") self.importSearch.clearFields() self.importSearch.patientName.setText(self.searchText.text()) self.updateTree() def slotImportSearchButtonClicked(self): logging.debug("In ImportWindow::slotImportSearchButtonClicked()") self.importSearch.hide() self.updateTree() def slotImportCancelButtonClicked(self): logging.debug("In ImportWindow::slotImportCancelButtonClicked()") self.importSearch.hide() def slotResetButtonClicked(self): logging.debug("In ImportWindow::slotImportCancelButtonClicked()") self.importSearch.clearFields() self.searchText.setText("") self.updateTree() def slotImportClicked(self): logging.debug("In ImportWindow::slotImportClicked()") curr = self.seriesDictionary.get(self.treeWidget.currentItem()) if curr: series = [] if isinstance(curr, Patient): for study in curr.studies: for serie in study.series: series.append(serie) elif isinstance(curr, Study): for serie in curr.series: series.append(serie) elif isinstance(curr, Serie): series.append(curr) else: logging.warning("Is not instance of: (Patient, Study, Serie)") raise Exception("Is not instance of: (Patient, Study, Serie)") self.emit(self.confirmImportSignal, series, 0, False) else: logging.warning("There's no dicom to be importer =(") raise Exception("There's no dicom to be importer =(") def addContextMenuProvider(self, provider): self._contextMenuProviders.append(provider) def removeContextMenuProvider(self, provider): if self._contextMenuProviders.count(provider): self._contextMenuProviders.remove(provider)
import flask from flask.views import MethodView from index import Index from todo import Todo from submit import Submit from delete import Delete app = flask.Flask(__name__) app.add_url_rule('/', view_func=Index.as_view('index')) app.add_url_rule('/todo/', view_func=Todo.as_view('todo'), methods=['GET']) app.add_url_rule('/submit/', view_func=Submit.as_view('submit'), methods=['POST']) app.add_url_rule('/delete/', view_func=Delete.as_view('delete'), methods=['POST']) if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
def Del(self): delete = Delete()