def delete(self): response = self._response.copy() try: node_id = self.request.matchdict['page_id'] file_id = self.request.matchdict['file_id'] PageBanner.get(self.session, (node_id, file_id)).delete() except KeyError as e: self.log.exception('Missing ID param in the request.') self.session.rollback() self.request.response.status = 400 response['msg'] = self.request.translate("Missing ID parameter.") except NoResultFound as e: msg = "No PageBanner found: %s, %s" % (node_id, file_id) self.log.exception(msg) self.session.rollback() self.request.response.status = 404 response['msg'] = self.request.translate(msg) except Exception as e: self.log.exception('Unknown error.') self.session.rollback() self.request.response.status = 500 response['msg'] = str(e) else: self.session.commit() response['success'] = True response['msg'] = self.request.translate("PageBanner was found.") finally: return response
def batch_update(self): response = self._response.copy() try: for params in json.loads(self.request.params['dataset']): item = PageBanner.get(self.session, (params['page'], params['banner']['id'])) item.weight = params['weight'] except KeyError as e: self.log.exception('Bad request.') self.session.rollback() self.request.response.status = 400 response['success'] = False response['msg'] = str(e) except NoResultFound as e: self.log.exception('Cannot found Background.') self.session.rollback() self.request.response.status = 400 response['success'] = False response['msg'] = str(e) except TypeError as e: self.log.exception('Invalid name') self.request.response.status = 400 response['success'] = False response['msg'] = str(e) except Exception as e: self.log.exception('Unknown error.') self.session.rollback() self.request.response.status = 500 response['msg'] = str(e) else: self.session.commit() response['success'] = True response['dataset'] = [] response['dataset_length'] = len(response['dataset']) response['msg'] = self.request.translate("Background was updated.") self.proxy.invalidate(url=item.url) finally: return response