def update_plugin(request):
# make sure the plugin id exists
plugin_id = request.matchdict['plugin_id']
plugin = request.db_session.query(LedPlugin).filter(LedPlugin.id == plugin_id).first()
if not plugin:
raise exc.HTTPBadRequest("No such plugin")
else:
# only a site admin or plugin owner can edit
# a non-admin plugin owner can suggest changes
user = request.user
if user != plugin.user and not user.admin:
raise exc.HTTPForbidden("You don't have access to do that")
POST = {k: to_null(v) for k, v in request.POST.items()}
if not user.admin:
if 'code' not in POST:
raise exc.HTTPBadRequest("Please provide the code")
plugin_update = request.db_session.query(LedPluginProposed).filter(LedPluginProposed.led_plugin_id == plugin_id).first()
if plugin_update is not None:
plugin_update.code = POST['code']
else:
request.db_session.add(LedPluginProposed(led_plugin_id=plugin_id, code=POST['code']))
log(request, "Proposed changes to plugin <a href='/plugin/{}'>{}</a>".format(plugin.id, plugin.name))
return {
'msg': 'Your update is now awaiting approval'
}
else:
if POST['code']:
plugin.code = POST['code']
if 'name' in POST and POST['name']:
plugin.name = POST['name']
log(request, 'Updated <a href="/plugin/{0}">plugin {1}</a>: '.format(plugin_id, plugin.name, ))
return {
'msg': 'Updated code'
}
评论列表
文章目录