misc: extend category bits instead of replacing them (#53667)
This commit is contained in:
parent
b4175faa79
commit
9156835df2
|
@ -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'))
|
||||
|
|
|
@ -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):
|
||||
|
|
Reference in New Issue