Hi,
I assume that you meant this to go to [email protected] so I hope you
don't mind if I send my reply there. My responses are inline:
On 14/07/14 04:01, tianhongjie07 wrote:
Thanks for your reply.
I can create option in database with command:
trac-admin path/to/environment product admin new_product config set
header_logo src "http://xxxxxxx.com/new_image.png".
But I can't get the value used method:
self.config.get('header_logo', 'src')
The method return value is empty string which in debug mode with breakpoint in
class[ProductAdminPanel] method[_render_admin_panel] Line[prod =
Product(self.env, keys)],
then add watch [self.config.get('header_logo', 'src')], the value is empty
string.
Having set this, did you note whether new_product had the changed logo?
As I understand it, whether self.config will pick up the config for
global, @ or new_product will be dependant on which product is active
(more about that below).
I also add
imageurl = "http://xxxxxxx.com/new_image.png"
self.config.set('header_logo', 'src', imageurl)
self.config.save()
in class[ProductAdminPanel] method[_render_admin_panel] below
Line[prod.update()].
I find it has been modified in trac.ini file
[header_logo]
src = http://xxxxxxx.com/new_image.png
Not save it to database, I'm sure my understanding it's not correct.
When you are not in a product context, self.config will be the global
config and that does indeed get saved to the trac.ini file. I should
probably have suggested guarding from making changes to any config other
than the product you were interested in changing. So, while not useful
in this form as production code:
prod = "new_product"
imageurl = "http://xxxxxxx.com/new_image.png"
if self.env.product is not None and self.env.product.name == prod:
self.config.set('header_logo', 'src', imageurl)
self.config.save()
this will at least make sure you don't change the header_logo for
anything other than the hardcoded product. To get the match in admin
pages you should use the select dropdown that is underneath the search
tool. The selection defaults to "(Global settings)" and not specific
products.
Does that make a bit more sense? In the end the trac-admin command
should be enough to insert the config you need though as far as I can tell.
Cheers,
Gary