misc: extend category bits instead of replacing them (#53667)

This commit is contained in:
Frédéric Péters 2021-05-14 14:54:44 +02:00
parent b4175faa79
commit 9156835df2
2 changed files with 10 additions and 53 deletions

View File

@ -32,12 +32,6 @@ wcs.admin.forms.FormsDirectory.categories = categories_admin.CategoriesDirectory
import wcs.categories
wcs.categories.Category.XML_NODES = [
('name', 'str'),
('url_name', 'str'),
('description', 'str'),
('position', 'int'),
('homepage_position', 'str'),
('redirect_url', 'str'),
('limit', 'int'),
]
if ('homepage_position', 'str') not in wcs.categories.Category.XML_NODES:
wcs.categories.Category.XML_NODES.append(('homepage_position', 'str'))
wcs.categories.Category.XML_NODES.append(('limit', 'int'))

View File

@ -27,26 +27,14 @@ from wcs.qommon.admin.menu import command_icon, error_page
import wcs.admin.categories
class CategoryUI:
class CategoryUI(wcs.admin.categories.CategoryUI):
def __init__(self, category):
self.category = category
if self.category is None:
self.category = Category()
def get_form(self):
form = Form(enctype='multipart/form-data')
form.add(
StringWidget, 'name', title=_('Category Name'), required=True, size=30, value=self.category.name
)
form.add(
TextWidget,
'description',
title=_('Description'),
cols=80,
rows=10,
value=self.category.description,
)
def get_form(self, **kwargs):
form = super().get_form(**kwargs)
homepage_redirect_url = get_cfg('misc', {}).get('homepage-redirect-url')
if not homepage_redirect_url:
form.add(
@ -67,42 +55,17 @@ class CategoryUI:
title=_('Limit number of items displayed on homepage'),
value=self.category.get_limit(),
)
form.add(
StringWidget,
'redirect_url',
size=32,
title=_('URL Redirection'),
hint=_('If set, redirect the site category page to the given URL.'),
value=self.category.redirect_url,
)
form.add_submit('submit', _('Submit'))
form.add_submit('cancel', _('Cancel'))
return form
def submit_form(self, form):
if self.category.id:
self.category.name = form.get_widget('name').parse()
category = self.category
else:
category = Category(name=form.get_widget('name').parse())
name = form.get_widget('name').parse()
category_names = [x.name for x in Category.select() if x.id != category.id]
if name in category_names:
form.get_widget('name').set_error(_('This name is already used'))
raise ValueError()
category.description = form.get_widget('description').parse()
category.redirect_url = form.get_widget('redirect_url').parse()
super().submit_form(form)
homepage_redirect_url = get_cfg('misc', {}).get('homepage-redirect-url')
if not homepage_redirect_url:
category.homepage_position = form.get_widget('homepage_position').parse()
category.limit = form.get_widget('limit').parse()
self.category.homepage_position = form.get_widget('homepage_position').parse()
self.category.limit = form.get_widget('limit').parse()
category.store()
self.category.store()
class CategoryPage(wcs.admin.categories.CategoryPage):