def post(self): url = self.request.get("url", "") if url: slug = nice_guid() entry = Entry(time=datetime.datetime.now(), url=url, slug=slug, packaged=False) entry.put() self.render_template("code.html", slug=slug) else: return self.get()
def post(self): upload_files = self.get_uploads('package') blob_info = upload_files[0] slug = nice_guid() entry = Entry(time=datetime.datetime.now(), url=str(blob_info.key()), slug=slug, packaged=True) entry.put() self.render_template("code.html", slug=slug)
def post(self): entry = Entry( author = users.get_current_user().email(), title = self.request.get('title'), slug = self.request.get("slug"), # tags = self.request.get("tags"), template = self.request.get("template"), body = self.request.get("body"), draft = bool(self.request.get("draft")) ) entry.put() entry.index() self.redirect("/" + entry.category.slug + "/" + entry.slug)
def _test_url(self, url): self.response.write('%s<br>' % url) resp = urlfetch.fetch('%s/media/revision.txt' % url) assert resp.status_code == 200 rev = resp.content.strip() resp = urlfetch.fetch('%s?mobile=true' % url) if resp.status_code != 200: return size = len(resp.content) asset_size = 0 css_size = 0 js_size = 0 for asset in (m.group(2) for m in asset_url_pattern.finditer(resp.content)): # Handle relative URLs if '://' not in asset: asset = url + asset if ('.js?' in asset or '.css' in asset or asset.endswith('.js')): self.response.write('%s<br>' % asset) try: data = urlfetch.fetch(asset).content except Exception: continue if data: data_len = len(data) if '.js?' in asset: js_size += data_len elif '.css' in asset: css_size += data_len asset_size += data_len entry = Entry(time=datetime.datetime.now(), size=size, domain=url, with_assets=size + asset_size, commit=rev, size_css=css_size, size_js=js_size) entry.put() self.response.write('Size: %d<br>' % size) self.response.write('Assets Size: %d ' % asset_size) self.response.write('(CSS: %d, JS: %d)<br>' % (css_size, js_size))
def receive(self, message): # Combine message bodies and decode html bodies = message.bodies("text/plain") for content_type, body in bodies: decoded_body = body.decode() # Split body from any optional fields body_list = decoded_body.split("---\n\n", 1) body_len = len(body_list) fields = body_list[0] body = body_list[1] # grab the first paragraph as body_parts = body.split("\n\n", 1) excerpt = body_parts[0] body = body_parts[1] # Grab any data from fields slug = message.subject.replace(" ", "-").lower() cat_name = "Bit" draft = False published = None if fields: logging.info("We have YAML front matter.") for config in yaml.load_all(fields): logging.info("Checking each YFM.") logging.debug(type(config)) # hard-coded data extraction # Probably should do this a better way if "slug" in config: slug = config["slug"] if "published" in config: published = config["published"] if "category" in config: cat_name = config["category"] if "draft" in config: draft = True else: logging.error("Malformed YFM: --------- " + fields) if published is None: date = message.date.split(" -") published = datetime.datetime.strptime(date[0], "%a, %d %b %Y %H:%M:%S") else: published = datetime.datetime.strptime(published, "%a, %d %b %Y %H:%M:%S") # get the category object category = db.Query(Category).filter("name =", cat_name).get() logging.info("Entry in cat: " + category.name + " from: " + cat_name) # Process attachments!!!!!! images = [] thumbnail = None if cat_name == "Work": if message.attachments: # Check file extension of attachments re_filetype = re.compile("(.gif|.jpg|.jpeg|.png|.GIF|.JPG|.JPEG|.PNG)") for att in message.attachments: # att[0] = name, att[1] = payload is_image = re_filetype.search(att[0]) filename, encoded_data = att data = encoded_data.payload if encoded_data.encoding: data = data.decode(encoded_data.encoding) if is_image: # upload image if thumbnail is None: thumb = image.resize(data, 250) thumbnail = s3.upload_image(filename, thumb, message.subject) new_image = s3.upload_image(filename, data, message.subject) images.append(new_image) else: logging.info(att) logging.info("Attachment was not an image.") # save # Okay, just hardcode email # author property is now string # check user.email() to author when in admin if message.sender == "": entry = Entry( author=message.sender, title=message.subject, slug=slug, category=category.key(), body=body, excerpt=excerpt, published=published, draft=draft, images=images, thumbnail=thumbnail, ) entry.put() entry.index()