class OperationWidget(FWidget): """docstring for OperationWidget""" def __init__(self, parent, *args, **kwargs): super(FWidget, self).__init__(parent=parent, *args, **kwargs) self.parent = parent vbox = QVBoxLayout() editbox = QGridLayout() self.search_field = LineEdit() # self.search_field.textChanged.connect(self.search) self.search_field.setToolTip(u"Taper le nom ou le numéro de " u"téléphone à chercher") editbox.addWidget(self.search_field, 0, 0) search_but = Button("") search_but.setIcon(QIcon.fromTheme('search', QIcon(''))) search_but.clicked.connect(self.search) editbox.addWidget(search_but, 0, 1) # self.empty = FLabel(u"") # editbox.addWidget(self.empty, 1, 0) addgroup_but = Button(u"Nouveau groupe") addgroup_but.setIcon(QIcon.fromTheme('document-new', QIcon(''))) addgroup_but.clicked.connect(self.addgroup) self.contact_grp = Button(u"Envoyer à groupe") self.contact_grp.setIcon(QIcon.fromTheme('document-new', QIcon(''))) self.contact_grp.clicked.connect(self.contact_group) self.contact_grp.setEnabled(False) editbox.addWidget(addgroup_but, 2, 0) editbox.addWidget(self.contact_grp, 1, 0) vbox.addLayout(editbox) self.setLayout(vbox) def search(self): search_term = self.search_field.text() self.search_field.setStyleSheet("") self.search_field.setText(u"") self.parent.table_contact.refresh_(search=search_term) self.search_field.clear() # self.search_field.setStyleSheet("font-size:20px; color: red") # self.search_field.setToolTip(u"{} n'existe pas".format(search_term)) def addgroup(self): """ Affiche un QDialog qui permet d'ajouter un nouveau groupe """ self.parent.open_dialog(GroupViewWidget, modal=True, table_group=self.parent) def contact_group(self): self.parent.open_dialog(SendGroupViewWidget, modal=True, table_group=self.parent)
class InfoTableWidget(FWidget): def __init__(self, parent, *args, **kwargs): super(FWidget, self).__init__(parent=parent, *args, **kwargs) self.parent = parent self.refresh() self.details = FLabel() self.edit_ow_but = Button(u"Mettre à jour") self.edit_ow_but.setIcon(QIcon.fromTheme('document-new', QIcon(u"{}edit_user.png".format(Config.img_cmedia)))) self.edit_ow_but.setEnabled(False) self.edit_ow_but.clicked.connect(self.edit_owner) self.formbox = QGridLayout() self.formbox.addWidget(self.details, 0, 0) self.formbox.addWidget(self.edit_ow_but, 0, 1) # self.formbox.ColumnStretch(4, 2) # self.formbox.RowStretch(6, 2) vbox = QVBoxLayout() vbox.addLayout(self.formbox) self.setLayout(vbox) def refresh_(self, owner): self.refresh() self.owner = owner if isinstance(self.owner, int): return self.details.setText( """<h2>Nom: {username}</h2> <h4><b>Active:</b> {isactive}</h4> <h4><b>Numéro tel:</b> {phone}</h4> <h4><b>Dernière login:</b> {last_login}</h4> <h4><b>Nombre de connexion:</b> {login_count}</h4> <h4><b>Groupe:</b> {group}</h4> """.format(group=self.owner.group, login_count=self.owner.login_count, last_login=self.owner.last_login.strftime(u"%c"), phone=self.owner.phone, isactive=self.owner.isactive, username=self.owner.username)) def edit_owner(self): self.parent.parent.open_dialog(NewOrEditUserViewWidget, owner=self.owner, modal=True, pp=self.parent.table_info)
class SendGroupViewWidget(QDialog, FWidget): def __init__(self, table_group, parent, *args, **kwargs): QDialog.__init__(self, parent, *args, **kwargs) self.parent = table_group group_id = self.parent.table_group.group.group_id self.group = Group.select().where(Group.id == group_id).get() vbox = QVBoxLayout() vbox.addWidget(FBoxTitle( u"<h2>Envoi pour les ({0}) contactes du groupe <b>{1}</b></h2>".format(len(self.group.contacts), self.group.name))) # form transfer self.amount = LineEdit() self.amount.setFont(QFont("Arial", 15)) self.amount.setValidator(QIntValidator()) self.amount.setToolTip(u"Taper le montant du transfert") self.amount_error = ErrorLabel(u"") self.password_field = EnterTabbedLineEdit() self.password_field.setEchoMode(LineEdit.Password) self.password_field.setToolTip(u"Taper le code orange money") self.send_butt = Button(u"Envoyer") self.send_butt.clicked.connect(self.sender) cancel_but = Button(u"Annuler") cancel_but.clicked.connect(self.cancel) formbox = QGridLayout() formbox.addWidget(FLabel(u"Montant: "), 0, 0) formbox.addWidget(self.amount, 0, 1) formbox.addWidget(FLabel(u"Code: "), 1, 0) formbox.addWidget(self.password_field, 1, 1) formbox.addWidget(self.send_butt, 2, 1) formbox.addWidget(cancel_but, 2, 0) self.isvalid() vbox.addLayout(formbox) self.setLayout(vbox) def cancel(self): self.close() def isvalid(self): self.list_phone_num = [(i.contact.number) for i in ContactGroup.filter(group__id=self.group.id)] if self.list_phone_num == []: self.send_butt.setEnabled(False) self.send_butt.setToolTip(u"""Ce groupe n'a pas le numéro de téléphone.""") def iscomplet(self): self.amount.setStyleSheet("") self.amount.setText(u"") self.password_field.setStyleSheet("") self.password_field.setText(u"") if unicode(self.amount.text()) == "": self.amount.setStyleSheet("font-size:20px; color: red") self.amount.setText(u"Ce champ est obligatoire.") return False if unicode(self.password_field.text()) == "": self.password_field.setStyleSheet("font-size:20px; color: red") self.password_field.setText(u"Ce champ est obligatoire.") return False return True def sender(self): if not self.iscomplet: return data = {"phone_num": self.list_phone_num, "code": unicode(self.password_field.text()), "amount": unicode(self.amount.text()) } multiple_sender(data) self.cancel() self.parent.table_group.refresh_()
class SendGroupViewWidget(QDialog, FWidget): def __init__(self, table_group, parent, *args, **kwargs): QDialog.__init__(self, parent, *args, **kwargs) self.parent = table_group group_id = self.parent.table_group.group.group_id self.group = Group.select().where(Group.id == group_id).get() vbox = QVBoxLayout() vbox.addWidget( FBoxTitle( u"<h2>Envoi pour les ({0}) contactes du groupe <b>{1}</b></h2>" .format(len(self.group.contacts), self.group.name))) # form transfer self.amount = LineEdit() self.amount.setFont(QFont("Arial", 15)) self.amount.setValidator(QIntValidator()) self.amount.setToolTip(u"Taper le montant du transfert") self.amount_error = ErrorLabel(u"") self.password_field = EnterTabbedLineEdit() self.password_field.setEchoMode(LineEdit.Password) self.password_field.setToolTip(u"Taper le code orange money") self.send_butt = Button(u"Envoyer") self.send_butt.clicked.connect(self.sender) cancel_but = Button(u"Annuler") cancel_but.clicked.connect(self.cancel) formbox = QGridLayout() formbox.addWidget(FLabel(u"Montant: "), 0, 0) formbox.addWidget(self.amount, 0, 1) formbox.addWidget(FLabel(u"Code: "), 1, 0) formbox.addWidget(self.password_field, 1, 1) formbox.addWidget(self.send_butt, 2, 1) formbox.addWidget(cancel_but, 2, 0) self.isvalid() vbox.addLayout(formbox) self.setLayout(vbox) def cancel(self): self.close() def isvalid(self): self.list_phone_num = [ (i.contact.number) for i in ContactGroup.filter(group__id=self.group.id) ] if self.list_phone_num == []: self.send_butt.setEnabled(False) self.send_butt.setToolTip(u"""Ce groupe n'a pas le numéro de téléphone.""") def iscomplet(self): self.amount.setStyleSheet("") self.amount.setText(u"") self.password_field.setStyleSheet("") self.password_field.setText(u"") if unicode(self.amount.text()) == "": self.amount.setStyleSheet("font-size:20px; color: red") self.amount.setText(u"Ce champ est obligatoire.") return False if unicode(self.password_field.text()) == "": self.password_field.setStyleSheet("font-size:20px; color: red") self.password_field.setText(u"Ce champ est obligatoire.") return False return True def sender(self): if not self.iscomplet: return data = { "phone_num": self.list_phone_num, "code": unicode(self.password_field.text()), "amount": unicode(self.amount.text()) } multiple_sender(data) self.cancel() self.parent.table_group.refresh_()
class MemberManagerWidget(FWidget, FPeriodHolder): def __init__(self, parent=0, dmd=None, *args, **kwargs): super(MemberManagerWidget, self).__init__( parent=parent, *args, **kwargs) FPeriodHolder.__init__(self, *args, **kwargs) self.parent = parent self.dmd = dmd self.search_field = LineEdit() self.search_field.setPlaceholderText("Rechercher un membre") # self.search_field.setMaximumWidth(400) self.search_field.setMaximumSize(900, 100) self.search_field.textChanged.connect(self.finder) self.string_list = [] self.title_field = FPageTitle( "Gestion des membres de la {}".format(self.dmd.scoop)) self.end_demande_btt = Button("Fin de l'ajout") self.end_demande_btt.setMaximumWidth(400) self.end_demande_btt.clicked.connect(self.goto_immatriculation) if self.dmd.scoop.membres().count() < 4: self.end_demande_btt.setEnabled(False) self.new_demande_btt = Button("Nouveau Membre") self.new_demande_btt.setMaximumWidth(400) self.new_demande_btt.setIcon(QIcon.fromTheme('save', QIcon( u"{}add.png".format(Config.img_media)))) self.new_demande_btt.clicked.connect(self.add_member) self.table = MemberTableWidget(parent=self) editbox = QGridLayout() editbox.addWidget(self.search_field, 1, 0) editbox.setColumnStretch(1, 1) editbox.addWidget(self.new_demande_btt, 1, 3) editbox.addWidget(self.end_demande_btt, 1, 4) vbox = QVBoxLayout() vbox.addWidget(self.title_field) vbox.addLayout(editbox) vbox.addWidget(self.table) self.setLayout(vbox) # def end_add_member(self): # self.dmd.status = self.dmd.CHECKLIST # self.dmd.save_() # from ui.check_list_view import CheckListViewWidget # self.change_main_context(CheckListViewWidget, dmd=self.dmd) def goto_immatriculation(self): # self.dmd.status = self.dmd.CHECKLIST self.dmd.status = self.dmd.IMMATRICULAITON self.dmd.save_() from ui.immatriculation import ImmatriculationSCoopViewWidget self.change_main_context( ImmatriculationSCoopViewWidget, dmd=self.dmd) def add_member(self): self.open_dialog( EditOrAddMemberDialog, modal=True, scoop=self.dmd.scoop, table_p=self.table) def finder(self): self.search = self.search_field.text() self.table.refresh_() def refresh_b(self): if self.dmd.scoop.membres().count() >= 3: self.end_demande_btt.setEnabled(True)
class AdminViewWidget(FWidget): def __init__(self, parent=0, *args, **kwargs): super(AdminViewWidget, self).__init__(parent=parent, *args, **kwargs) self.parent = parent self.parentWidget().setWindowTitle( Config.APP_NAME + u" ADMINISTRATION") editbox = QGridLayout() table_config = QVBoxLayout() self.table_config = OrganizationTableWidget(parent=self) table_config.addLayout(editbox) table_config.addWidget(self.table_config) self.bttrestor = Button(_(u"Restaurer")) self.bttrestor.clicked.connect(self.restorseleted) self.bttrestor.setEnabled(False) self.bttempty = Button(_(u"Vide")) self.bttempty.clicked.connect(self.deletedseleted) self.bttempty.setEnabled(False) # Grid gridbox = QGridLayout() history_table = QVBoxLayout() self.history_table = TrashTableWidget(parent=self) history_table.addLayout(gridbox) history_table.addWidget(self.history_table) table_login = QVBoxLayout() self.table_login = LoginManageWidget(parent=self) table_login.addLayout(gridbox) table_login.addWidget(self.table_login) tab_widget = tabbox((table_config, _(u"Gestion de l'organisation")), (history_table, _(u"Historique")), (table_login, _(u"Gestion d'Utilisateurs")), ) vbox = QVBoxLayout() vbox.addWidget(tab_widget) self.setLayout(vbox) def enablebtt(self): self.bttrestor.setEnabled(True) self.bttempty.setEnabled(True) def restorseleted(self): for doc in self.history_table.getSelectTableItems(): doc.isnottrash() self.history_table.refresh_() def deletedseleted(self): reply = QMessageBox.question( self, 'Suppression definitive', self.tr("Voulez vous vraiment le supprimer?"), QMessageBox.Yes, QMessageBox.No) if reply == QMessageBox.Yes: for doc in self.history_table.getSelectTableItems(): doc.remove_doc() self.history_table.refresh_()