def doDeleteResource(wfile, req): wlib = store.getWeblib() item = wlib.webpages.getById(req.rid) if item: log.info('Deleting WebPage %s' % unicode(item)) store.getStore().removeItem(item) response.redirect(wfile, '/updateParent')
def doDelete(wfile, req): wlib = store.getWeblib() entries = _buildEntries(req) for item in entries: try: log.debug('Delete web page: %s', unicode(item)) store.getStore().removeItem(item) except: log.exception('Unable to delete: %s', unicode(item)) response.redirect(wfile, '/updateParent')
def test_PUT_input_escape(self): # First insert some risky data into weblib badtag = weblib.Tag(name='</bad_tag>') badtag = store.getStore().writeTag(badtag) # GET url = '/weblib/@%s/form?name=</bad_tag>' % badtag.id txt = self._run_url(url) self.assert_('bad_tag' in txt) self.assert_('</bad_tag>' not in txt)
def doPutResource(wfile, req, bean): wlib = store.getWeblib() if not bean.validate(): FormRenderer(wfile).output(bean) return item = bean.item if bean.newTags: assert bean.create_tags item.tags = weblib.makeTags(store.getStore(), item.tags_description) if item.id < 0: log.info('Adding WebPage: %s' % unicode(item)) store.getStore().writeWebPage(item) else: log.info('Updating WebPage: %s' % unicode(item)) store.getStore().writeWebPage(item) response.redirect(wfile, '/updateParent')
def doPost(wfile, req): wlib = store.getWeblib() entries = _buildEntries(req) checklist = _buildChecklist(req) errors = [] # parse add tags tags_description = req.param('add_tags') if weblib.Tag.hasIllegalChar(tags_description.replace(',',' ')): errors.append('These characters are not allowed in tag name: ' + weblib.Tag.ILLEGAL_CHARACTERS) tags_description = '' # check for new tags and the create_tags flag _, unknown = weblib.parseTags(wlib, tags_description) if unknown and (not req.param('create_tags')): tags = u', '.join(unknown) errors.append('These tags are not previous used: ' + tags) tags_description = '' # note: validation should be done, new tags will be created here set_tags = weblib.makeTags(store.getStore(), tags_description) remove_tags = [] # going through checklist, add to set_tags, delete_tags for tag, flag in checklist: if flag: if tag not in set_tags: set_tags.append(tag) else: remove_tags.append(tag) if errors: doShowForm(wfile, req, errors, checklist=checklist, new_tags=unknown) return log.debug('EditTags for %s entries set(%s) remove(%s).', len(entries), set_tags, remove_tags) wlib.editTags(entries, [], set_tags, remove_tags) store.getStore().refresh_when_needed() response.redirect(wfile, '/updateParent')
def test_POST_input_escape(self): # First insert some risky data into weblib stor = store.getStore() badtag = weblib.Tag(name='</bad_tag>') badtag = stor.writeTag(badtag) badpage = weblib.WebPage( name = '</bad_tag>', url = '</bad_tag>', description = '</bad_tag>', tags = [badtag] ) badpage = stor.writeWebPage(badpage) # GET and make sure it is escaped txt = self._run_url('/weblib/tag_categorize') self.assert_('bad_tag' in txt) self.assert_('</bad_tag>' not in txt)
def doSave(wfile, req): store.getStore().save() wlib = store.getWeblib() wfile.write('200 ok\r\n\r\n') wfile.write('saved %s pages %s tags' % (len(wlib.webpages), len(wlib.tags)))
def doLoad(wfile, req): store.getStore().load() wlib = store.getWeblib() wfile.write('200 ok\r\n\r\n') wfile.write('Load %s pages %s tags' % (len(wlib.webpages), len(wlib.tags)))
def tearDown(self): # TODO HACK: close any open file before replace. # Need comphrensive review store.getStore().reset()