diff --git a/src/app/modules/tambah_acara.py b/src/app/modules/tambah_acara.py index a9727c49a43f21ac2439c9e8f2f27ff5abf22de4..de23d80fd84f85df1b51294460b33bf02cac1a27 100644 --- a/src/app/modules/tambah_acara.py +++ b/src/app/modules/tambah_acara.py @@ -2,9 +2,9 @@ Modul untuk operasi edit dan tambah acara ''' from datetime import datetime -from app.db import init_db import mariadb + def __add_foto(photos, id_acara, cur): ''' Fungsi untuk menambahkan foto-foto ke database @@ -32,6 +32,7 @@ def __add_foto(photos, id_acara, cur): INSERT INTO foto_acara (id_acara, foto) VALUES (?, ?)''', (id_acara, foto)) + def __add_kategori(kategori, id_acara, cur): ''' Fungsi untuk menambahkan kategori acara ke database @@ -49,9 +50,12 @@ def __add_kategori(kategori, id_acara, cur): ------ mariadb.Error ''' - cur.execute('''DELETE FROM kategori_acara WHERE id_acara = ?''', (id_acara,)) + cur.execute('''DELETE FROM kategori_acara WHERE id_acara = ?''', + (id_acara,)) for kateg in kategori: - cur.execute('''INSERT INTO kategori_acara VALUES (?, ?)''', (id_acara, kateg)) + cur.execute('''INSERT INTO kategori_acara VALUES (?, ?)''', + (id_acara, kateg)) + def remove_foto(id_acara, id_foto, conn) -> bool: ''' @@ -72,13 +76,16 @@ def remove_foto(id_acara, id_foto, conn) -> bool: ''' cur = conn.cursor() try: - cur.execute('''DELETE FROM foto_acara WHERE id_acara = ? AND id_foto = ?''', (id_acara, id_foto)) + cur.execute('DELETE FROM foto_acara\ + WHERE id_acara = ? AND id_foto = ?', + (id_acara, id_foto)) conn.commit() return True except mariadb.Error as e: print(e) return False + def remove_category(id_acara, kateg, conn) -> bool: ''' Fungsi untuk menghapus kategori suatu acara @@ -98,13 +105,16 @@ def remove_category(id_acara, kateg, conn) -> bool: ''' cur = conn.cursor() try: - cur.execute('''DELETE FROM kategori_acara WHERE id_acara = ? AND nama_kategori = ?''', (id_acara, kateg)) + cur.execute('DELETE FROM kategori_acara\ + WHERE id_acara = ? AND nama_kategori = ?', + (id_acara, kateg)) conn.commit() return True except mariadb.Error as e: print(e) return False + def tambah_acara(id_penyelenggara, nama_acara, waktu, @@ -195,18 +205,18 @@ def tambah_acara(id_penyelenggara, )) # Dapetin id acara - cur.execute('''SELECT id_acara FROM acara WHERE - nama_acara = ? AND - kuota_pendaftar = ? AND - waktu = ? AND - harga = ? AND - id_penyelenggara = ?''', ( - nama_acara, - kuota_pendaftar, - waktu, - harga, - id_penyelenggara - )) + cur.execute('''SELECT id_acara FROM acara + WHERE nama_acara = ? AND + kuota_pendaftar = ? AND + waktu = ? AND + harga = ? AND + id_penyelenggara = ?''', ( + nama_acara, + kuota_pendaftar, + waktu, + harga, + id_penyelenggara + )) id_acara = cur.fetchone()[0] # Tambah kategori diff --git a/src/app/ui/detail_acara_window_ui.py b/src/app/ui/detail_acara_window_ui.py index 88469d9a9772848636131a8c57369b4fa1cbe254..5877582475df6f02ad4a6bf51d8f3044dd2dd40a 100644 --- a/src/app/ui/detail_acara_window_ui.py +++ b/src/app/ui/detail_acara_window_ui.py @@ -399,7 +399,6 @@ class DetailAcaraWindow(QMainWindow, Ui_DetailAcaraWindow): jmlPesanan = jmlPesanan[0] content += (idMember,images,jmlPesanan) - print(content) # content = (idAcara,namaAcara,linkVideo,syarat,kuota,desc,waktu,harga,link,namapenanggungjwb: noWA,namaOrganisasi,idMember,foto,jmlPesanan) self.setupUi(self,content,kategori,isMember) diff --git a/src/app/ui/tambah_acara.ui b/src/app/ui/tambah_acara.ui index 7f288942d282b9a3f51496e4b0751c1a78842f97..da109be2ae131dfe1fc17e919698f52c701ee1a9 100644 --- a/src/app/ui/tambah_acara.ui +++ b/src/app/ui/tambah_acara.ui @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>1197</width> - <height>888</height> + <width>1654</width> + <height>1063</height> </rect> </property> <property name="windowTitle"> @@ -44,8 +44,8 @@ <property name="geometry"> <rect> <x>0</x> - <y>-333</y> - <width>1432</width> + <y>0</y> + <width>1629</width> <height>1196</height> </rect> </property> @@ -235,6 +235,18 @@ </property> </spacer> </item> + <item> + <widget class="QPushButton" name="button_remove_image"> + <property name="font"> + <font> + <pointsize>12</pointsize> + </font> + </property> + <property name="text"> + <string>Hapus Gambar</string> + </property> + </widget> + </item> <item> <widget class="QPushButton" name="button_add_image"> <property name="sizePolicy"> @@ -257,7 +269,7 @@ </font> </property> <property name="text"> - <string>Add Image</string> + <string>Tambah Gambar</string> </property> </widget> </item> @@ -317,7 +329,7 @@ <rect> <x>0</x> <y>0</y> - <width>1387</width> + <width>1584</width> <height>388</height> </rect> </property> diff --git a/src/app/ui/tambah_acara_ui.py b/src/app/ui/tambah_acara_ui.py index a1c465fb68f21379278e58171cbe2526d6db3660..36cf9a7b3609774aae92c0ab1caef4aa45a241e6 100644 --- a/src/app/ui/tambah_acara_ui.py +++ b/src/app/ui/tambah_acara_ui.py @@ -1,8 +1,7 @@ from PyQt5 import uic, QtWidgets, QtGui, QtCore -import sys, os +import os from app.modules.tambah_acara import tambah_acara -from app.db import init_db -from file_input_dialog import FileInput +from app.ui.file_input_dialog import FileInput class TambahAcaraWindow(QtWidgets.QMainWindow): @@ -23,14 +22,16 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): - id_acara: str ''' super(TambahAcaraWindow, self).__init__() - uic.loadUi(os.path.join(os.path.dirname(__file__), 'tambah_acara.ui'), self) + uic.loadUi(os.path.join(os.path.dirname(__file__), 'tambah_acara.ui'), + self) default_img_content = b'' - with open(os.path.join(os.path.dirname(__file__), 'assets/no-image-available.jpeg'), 'rb') as f: + with open(os.path.join(os.path.dirname(__file__), + 'assets/no-image-available.jpeg'), 'rb') as f: default_img_content = f.read() self.__conn = conn - self.__id_penyelenggara = id_penyelenggara # ga boleh None + self.__id_penyelenggara = id_penyelenggara self.__id_acara = id_acara data_acara = dict( id_penyelenggara=self.__id_penyelenggara, @@ -57,8 +58,8 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): self.__id_acara = data_acara['id_acara'] # setting default image - self.__default_img = QtGui.QImage() - assert self.__default_img.loadFromData(default_img_content) + self.__default_img =\ + self.__convert_bytes_to_qimage(default_img_content) self.__fill_data(data_acara) self.__init_button() @@ -66,13 +67,14 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): self.show() def __get_data_from_db(self, data_acara, cur): - cur.execute('SELECT * FROM acara WHERE id_acara = ?', (self.__id_acara,)) + cur.execute('SELECT * FROM acara WHERE id_acara = ?', + (self.__id_acara,)) for (_, nama_acara, - _, syarat_pendaftaran, - kuota_pendaftar, deskripsi, - waktu, harga, - link, _) in cur: + _, syarat_pendaftaran, + kuota_pendaftar, deskripsi, + waktu, harga, + link, _) in cur: data_acara['nama_acara'] = nama_acara data_acara['kuota_pendaftar'] = kuota_pendaftar data_acara['waktu'] = waktu @@ -82,9 +84,9 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): data_acara['link'] = link cur.execute('SELECT foto FROM foto_acara WHERE id_acara = ?', - (self.__id_acara,)) + (self.__id_acara,)) for foto in cur: - data_acara['foto'].append(foto[0]) + data_acara['foto'].append(self.__convert_bytes_to_qimage(foto[0])) cur.execute( 'SELECT nama_kategori FROM kategori_acara WHERE id_acara = ?', @@ -174,6 +176,7 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): self.button_batal.clicked.connect(self.close) self.button_simpan.clicked.connect(self.__save_data) self.button_add_image.clicked.connect(self.__input_image) + self.button_remove_image.clicked.connect(self.__remove_current_image) def __get_checked_kategori(self): kategs = ['motivasi', 'teknologi', 'ekonomi', 'kompetisi'] @@ -183,7 +186,7 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): return dict( id_penyelenggara=self.__id_penyelenggara, id_acara=self.__id_acara, - foto=self.__photos, + foto=self.__convert_photos_to_bytes(), kategori=self.__get_checked_kategori(), nama_acara=self.input_nama_acara.text(), kuota_pendaftar=self.input_kuota.value(), @@ -216,11 +219,16 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): content = b'' with open(file, 'rb') as f: content = f.read() - img = QtGui.QImage() - assert img.loadFromData(content) - self.__photos.append(img) + self.__photos.append(self.__convert_bytes_to_qimage(content)) self.__set_image() + def __remove_current_image(self): + if len(self.__photos) > 0: + self.__photos.remove(self.__photos[self.__current_image_counter]) + self.__current_image_counter -= 1 + self.__current_image_counter %= len(self.__photos) + self.__set_image() + def __is_form_valid(self): return self.input_nama_acara is not None\ and self.input_nama_acara.text() != ""\ @@ -228,6 +236,21 @@ class TambahAcaraWindow(QtWidgets.QMainWindow): and self.input_harga is not None\ and len(self.__get_checked_kategori()) != 0 + def __convert_bytes_to_qimage(self, byte): + img = QtGui.QImage() + assert img.loadFromData(byte) + return img + + def __convert_photos_to_bytes(self): + png = list() + for qi in self.__photos: + bytes_array = QtCore.QByteArray() + buffer = QtCore.QBuffer(bytes_array) + buffer.open(QtCore.QIODevice.WriteOnly) + qi.save(buffer, "png", quality=100) + png.append(bytes(bytes_array)) + return png + def __alert(self, text, info, title): msg = QtWidgets.QMessageBox() msg.setIcon(QtWidgets.QMessageBox.Warning)