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)
class OperationWidget(FWidget): """docstring for OperationWidget""" def __init__(self, parent, *args, **kwargs): super(FWidget, self).__init__(parent=parent, *args, **kwargs) vbox = QVBoxLayout(self) gridbox = QGridLayout() self.parent = parent self.add_ow_but = Button(_(u"Nouvel utilisateur")) self.add_ow_but.setIcon( QIcon.fromTheme('', QIcon(u"{}user_add.png".format(Config.img_cmedia)))) self.add_ow_but.clicked.connect(self.add_owner) gridbox.addWidget(self.add_ow_but, 0, 0) gridbox.setColumnStretch(1, 5) vbox.addLayout(gridbox) self.setLayout(vbox) def add_owner(self): self.parent.parent.open_dialog( NewOrEditUserViewWidget, modal=True, pp=self.parent.table_owner)
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 ResgistrationManagerWidget(FWidget): def __init__(self, parent=0, *args, **kwargs): super(ResgistrationManagerWidget, self).__init__(parent=parent, *args, **kwargs) self.parent = parent self.search_field = LineEdit() self.search_field.setPlaceholderText("Rechercher une demande") self.search_field.setMinimumSize(600, 80) self.search_field.textChanged.connect(self.finder) self.string_list = [] self.title_field = FPageTitle("Gestion des demandes") self.new_demande_btt = Button("Nouvelle demande") 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.goto_demande) self.table = DemandeTableWidget(parent=self) editbox = QGridLayout() editbox.addWidget(self.search_field, 1, 0) editbox.setColumnStretch(1, 1) editbox.addWidget(self.new_demande_btt, 1, 3) vbox = QVBoxLayout() vbox.addWidget(self.title_field) vbox.addLayout(editbox) vbox.addWidget(self.table) self.setLayout(vbox) def goto_demande(self): from ui.registration_view import RegistrationViewWidget self.change_main_context(RegistrationViewWidget) def finder(self): self.table.refresh_()
class MemberManagerWidget(FWidget): def __init__(self, parent, dmd=None, *args, **kwargs): super(FWidget, self).__init__(parent=parent, *args, **kwargs) self.parent = parent self.dmd = parent.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.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) vbox = QVBoxLayout() vbox.addLayout(editbox) vbox.addWidget(self.table) self.setLayout(vbox) def add_member(self): self.parent.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_()
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 PaymentViewWidget(FWidget, FPeriodHolder): def __init__(self, parent=0, *args, **kwargs): super(PaymentViewWidget, self).__init__(parent=parent, *args, **kwargs) FPeriodHolder.__init__(self, *args, **kwargs) self.parentWidget().setWindowTitle(Config.APP_NAME + u" Movements") self.parent = parent self.title = u"Movements" self.on_date = FormatDate( QDate(date.today().year, date.today().month, 1)) self.end_date = FormatDate(QDate.currentDate()) self.now = datetime.now().strftime("%x") self.soldeField = FormLabel("0") self.label_balance = FormLabel(u"Solde au {} ".format(self.now)) balanceBox = QGridLayout() balanceBox.addWidget(self.label_balance, 0, 2) balanceBox.addWidget(self.soldeField, 0, 3) balanceBox.setColumnStretch(0, 1) self.table = RapportTableWidget(parent=self) self.button = Button(u"Ok") self.button.clicked.connect(self.table.refresh_) self.btt_export = BttExportXLSX(u"Exporter") self.btt_export.clicked.connect(self.export_xls) self.add_btt = Button("Créditer") self.add_btt.setIcon( QIcon(u"{img_media}{img}".format(img_media=Config.img_media, img="in.png"))) self.add_btt.clicked.connect(self.add_payment) self.sub_btt = Button("Débiter") self.sub_btt.setIcon( QIcon(u"{img_media}{img}".format(img_media=Config.img_media, img="out.png"))) self.sub_btt.clicked.connect(self.sub_payment) editbox = QGridLayout() editbox.addWidget(FormLabel(u"Date debut"), 0, 1) editbox.addWidget(self.on_date, 0, 2) editbox.addWidget(FormLabel(u"Date fin"), 1, 1) editbox.addWidget(self.end_date, 1, 2) editbox.addWidget(self.button, 1, 3) editbox.addWidget(self.sub_btt, 1, 5) editbox.addWidget(self.add_btt, 1, 6) editbox.addWidget(self.btt_export, 1, 7) editbox.setColumnStretch(4, 2) vbox = QVBoxLayout() vbox.addWidget(FPageTitle(self.title)) vbox.addLayout(editbox) vbox.addWidget(self.table) vbox.addLayout(balanceBox) self.setLayout(vbox) def export_xls(self): from Common.exports_xlsx import export_dynamic_data dict_data = { 'file_name': "versements.xlsx", 'headers': self.table.hheaders[:-1], 'data': self.table.data, "extend_rows": [ (1, self.table.label_mov_tt), (2, self.table.totals_debit), (3, self.table.totals_credit), ], "footers": [ ("C", "E", "Solde au {} = {}".format(self.now, self.table.balance_tt)), ], 'sheet': self.title, # 'title': self.title, 'format_money': [ 'C:C', 'D:D', 'E:E', ], 'widths': self.table.stretch_columns, 'exclude_row': len(self.table.data) - 1, "date": "Du {} au {}".format( date_to_datetime(self.on_date.text()).strftime(u'%d/%m/%Y'), date_to_datetime(self.end_date.text()).strftime(u'%d/%m/%Y')) } export_dynamic_data(dict_data) def add_payment(self): print("add_payment") self.open_dialog(EditOrAddPaymentrDialog, modal=True, payment=None, type_=Payment.CREDIT, table_p=self.table) def sub_payment(self): print("sub_payment") self.open_dialog(EditOrAddPaymentrDialog, modal=True, payment=None, type_=Payment.DEBIT, table_p=self.table)