diff --git a/frontend.py b/frontend.py index ce00314..c59c72d 100644 --- a/frontend.py +++ b/frontend.py @@ -28,10 +28,20 @@ class AnimeDialog(QDialog): self.name_edit.setMaxLength(255) # Prevent overly long inputs layout.addRow("Name", self.name_edit) self.year_spin = QSpinBox() - self.year_spin.setRange(1900, 2100) + self.year_spin.setRange(1960, 2073) layout.addRow("Year", self.year_spin) self.season_combo = QComboBox() - self.season_combo.addItems(['', 'winter', 'spring', 'summer', 'fall']) + self.season_combo.addItems(['Winter', 'Spring', 'Summer', 'Fall', 'Other']) + # Map display names to database values + self.season_map = { + 'Winter': 'winter', + 'Spring': 'spring', + 'Summer': 'summer', + 'Fall': 'fall', + 'Other': '' + } + # Reverse map for setting current selection + self.reverse_season_map = {v: k for k, v in self.season_map.items()} layout.addRow("Season", self.season_combo) self.type_combo = QComboBox() self.type_combo.addItems(['TV', 'Movie', 'OVA', 'Special', 'Short TV', 'Other']) @@ -62,23 +72,28 @@ class AnimeDialog(QDialog): if default_year is not None: self.year_spin.setValue(default_year) if default_season is not None: - self.season_combo.setCurrentText(default_season) + # Map database season value to display name for default + display_season = self.reverse_season_map.get(default_season, 'Other') self.year_spin.valueChanged.connect(self.update_season) self.update_season(self.year_spin.value()) def update_season(self, year): if year < 2010: self.season_combo.setEnabled(False) - self.season_combo.setCurrentText('') + self.season_combo.setCurrentText('Other') else: self.season_combo.setEnabled(True) def get_data(self): + # Convert display season name back to database value + display_season = self.season_combo.currentText().strip() + db_season = self.season_map.get(display_season, '') + # Sanitize inputs by escaping special characters return { 'name': html.escape(self.name_edit.text().strip()), 'year': self.year_spin.value(), - 'season': html.escape(self.season_combo.currentText().strip()), + 'season': html.escape(db_season), # Use mapped database value 'status': html.escape(self.status_combo.currentText().strip()), 'type': html.escape(self.type_combo.currentText().strip()), 'comment': html.escape(self.comment_edit.toPlainText().strip()),