def post(self): user = self.get_current_user() if not user: self.redirect('/') return name = self.request.get('name') overwrite = self.request.get('overwrite') chapter = db.get( self.request.get('chapter') ) args = { 'chapter': chapter.key() } if len(name) == 0: args['error'] = 'Image must have a name.' else: old_image = Image.get_image_by_name(chapter, name) if overwrite.lower() == 'true': if old_image: old_image.delete() refresh_chapter(chapter) #chapter.put() old_image = None if old_image: args['image'] = old_image.key() args['error'] = 'Image with this name already exists.' else: data = self.request.get('img') if len(data) == 0: args['error'] = 'No data received.' else: image = Image.create(chapter, name, data) args['image'] = image.key() refresh_chapter(chapter) self.redirect('/uploadimagepage?%s' % urllib.urlencode(args))
def update_links(chapter, text): """Parse the new text and correct if needed. Consider input text to have Markdown format. - Image names in reference links need to have urls. """ # find all image tags in form ![Alt text][image_name] # and interpret image_name as markdown reference id # so text must contain line [image_name]: /proper_image_url image_link_pattern = re.compile('!\[.*?\]\[(.+?)\]') id_pattern_template = '\n\[%s\]:.+' match_list = re.findall(image_link_pattern, text) refresh = chapter.refresh for id in match_list: pattern = id_pattern_template % id image = Image.get_image_by_name(chapter, id) if not re.search(pattern,text): # there is no [id]: /url string if image: text += '\n['+id+']: '+'/img?key='+str(image.key()) elif refresh: # refresh anyway if image: text = re.sub(pattern,'\n['+id+']: '+'/img?key='+str(image.key()),text) else: text = re.sub(pattern,'',text) return text
def get(self): user = self.get_current_user() if not user: self.error(404) return key = self.request.get('key') if key: try: image = db.get( key ) except: self.error(404) return else: name = self.request.get('name') if not name: self.error(404) return try: chapter = db.get( self.request.get('chapter') ) except: self.error(404) return image = Image.get_image_by_name(chapter, name) if not image: self.error(404) return thumbnail = self.request.get('thumbnail') serveThumbnail = thumbnail and thumbnail == 'true' self.response.headers['Content-Type'] = str('image/'+image.type) if serveThumbnail: self.response.out.write(image.icon) else: self.response.out.write(image.data)