def queue_add_url(request, enc, url, flowgram): if not url.startswith('http://') and not url.startswith('https://'): url = 'http://' + url match = GALLERY_ME_COM_REGEX.match(url) if match: (username, gallery, file) = match.groups(0) title = 'MobileMe Gallery - %s' % file link = 'http://gallery.me.com/%s/%s/%s/web.jpg' % (username, gallery, file) html = '<html><head><title>%s</title><style>@import url("/media/css/photo_importers.css");</style></head><body><img src="%s" /></body></html>' % \ (title, link) page = models.Page.objects.create(title=title, source_url=link) page = controller.create_page_to_flowgram(flowgram, page, html) aprId = '-1' else: page = models.Page.objects.create(flowgram=flowgram, owner=request.user, source_url=url, position=controller.get_next_position(flowgram)) aprId = models.AddPageRequest.objects.create(flowgram=flowgram, url=url, page=page).id return data_response.create(enc, 'ok', {'ready': 0, 'error': 0, 'results': encode.page.to_dict(page), 'request_id': aprId})
def import_rss(flowgram, rss_url, type, options): if rss_url.startswith("feed://"): rss_url = "http://" + rss_url[7:] parsed = feedparser.parse(rss_url) if not parsed.has_key("status"): raise Http404 else: if parsed["status"] == "404": raise Http404 is_atom = not not parsed["feed"] if is_atom: # If ATOM channelTitle = parsed["feed"].get("title", "") channelDescription = "" else: # If RSS channelTitle = parsed.channel.title channelDescription = parsed.channel.description flowgram_changed = False if not flowgram.title or flowgram.title.lower() == "untitled": flowgram.title = channelTitle flowgram_changed = True if not flowgram.description: flowgram.description = channelDescription flowgram_changed = True if flowgram_changed: flowgram.save() pages = [] items = parsed["items"] if options["max_results"]: max_results = options["max_results"] items = items[:max_results] if type == "linkedarticles" or type == "articlesummaries": required_keys = ["title", "link", "description"] for item in items: for rkey in required_keys: if not item.has_key("title"): title = "" elif item.has_key("title"): title = item.title if not item.has_key("link"): link = "" elif item.has_key("link"): link = item.link if not item.has_key("description"): description = "" elif item.has_key("description"): description = item.description # need to check whether the 'title,link,description' attribute exists if type == "linkedarticles": page = Page.objects.create( flowgram=flowgram, owner=flowgram.owner, title=title, source_url=link, position=controller.get_next_position(flowgram), ) controller.add_default_time(page) AddPageRequest.objects.create(flowgram=flowgram, url=link, page=page) pages.append(encode.page.to_dict(page)) elif type == "articlesummaries": # Create and save the page: page = Page.objects.create(title=title, source_url=link) page.save() context = Context({"title": title, "url": link, "description": remove_script_tags(description)}) template = loader.get_template("importers/rss.html") html = "%s" % template.render(context) page = controller.create_page_to_flowgram(flowgram, page, html) pages.append(encode.page.to_dict(page)) elif type == "singlesummarypage": # Create and save the page: page = Page.objects.create(title=channelTitle, source_url=rss_url) page.save() context = Context({"title": channelTitle, "items": items}) template = loader.get_template("importers/rss_singlesummarypage.html") html = "%s" % template.render(context) page = controller.create_page_to_flowgram(flowgram, page, html) pages.append(encode.page.to_dict(page)) if len(pages) == 0: raise Http404 return data_response.create(options.get("enc", "json"), "ok", pages)