Example #1
0
def getPageData(index):
    """
    From an index, get a page model instance,
	and then, from this, return the dict of properties of this page.
    This, without knowing which type of page implementation this is.
    The dict returned will contain:
    - typeOfPage, String, the model class name of this page implementation
    - template, String, the HTML of the template
    - all attributes of the specific page type
    """
    page = getPage(index)
    if page:
        data = {}
        members = dir(page)
        for m in members:
            if m[0:1] != "_":
                property = eval("page.%s" % m)
                try:
                    property.__call__
                except:
                    data[m] = page.__getattribute__(m)
        data["template"] = page.template.html
        data["pageType"] = page.__class__.__name__
        data["index"] = index
        data["b64index"] = encodeB64Padless(index)
        return data
    else:
        return None
Example #2
0
	def doCreate(self):
		target = self.request.get("datestamp")
		title = self.request.get("title")
		up = self.request.get("up")
		relative = self.request.get("relative")
		ctheme = None
		options = None
		
		# Handling custom themes or normal themes
		customTheme = self.request.get("customTheme")
		if customTheme:
			parser = safehtml.SafeHtmlParser()
			safe = parser.getSafeHtml(customTheme)
			
			ctheme = modelold.CustomTheme(html=safe, isTemplate=False)
			ctheme.put()
		else:
			options = self.request.get("music") + self.request.get("theme")
		
		if relative:
			self.redirect("/" + target + options + "/" + title)
		else:
			storedUrl = utils.storeUrl(self.request.url, target, options, title, ctheme, up, relative)	
			self.redirect("/" + pb64.encodeB64Padless(storedUrl.counter))
Example #3
0
	def get(self, nb):
		logging.info(">>> " + self.request.url + " >>>AccessViaShortUrl")
		self.redirect("/" + pb64.encodeB64Padless(int(nb)))
Example #4
0
	def get(self):
		# Get a random entry in the URLs store
		total = utils.getNbOfTotalUrls() - 1
		nb = random.randint(1, total)
		self.redirect("/" + pb64.encodeB64Padless(int(nb)))
Example #5
0
	def get(self, target, optionsStr, title):
		logging.info(">>> " + self.request.url + " >>>CountDownDMYHMS")
		# Expected format is DDMMYYYYHHMMSS (checked via main.py by a regexp anyway)
		day = target[:2]
		month = target[2:4]
		year = target[4:8]
		hour = target[8:10]
		minute = target[10:12]
		second = target[12:14]
		
		if utils.isValidDate(day, month, year, hour, minute, second):
		
			storedUrl = utils.storeUrl(self.request.url, target, optionsStr or "", title or "", None, None, None)

			ctheme = None
			isTemplatizedCTheme = False
			options = {}
		
			if storedUrl.customTheme:
				ctheme = storedUrl.customTheme.html
				isTemplatizedCTheme = storedUrl.customTheme.isTemplate
			else:
				options = themecontroller.getThemeOptions(optionsStr)
		
			jsdate = month + "/" + day + "/" + year + " " + hour + ":" + minute + ":" + second

			if title:
				title = title.strip()
				if title != '':
					title = urllib2.unquote(title.strip())
			else:
				title = ""
		
			urlToShare = utils.getContextRootFromUrl(self.request.url) + "/" + pb64.encodeB64Padless(storedUrl.counter)
		
			data = {
				"dateObject" : {
					"day": day, "month": month, "year": year, "hour": hour, "minute": minute
				},
				"jsdate": jsdate,
				"title": title,
				"options": options,
				"customTheme": ctheme,
				"isTemplateTheme": isTemplatizedCTheme,
				"form": {},
				"up": storedUrl.up,
				"relative": storedUrl.relative,
				"shortUrl": urlToShare,
				"listOfThemes": themecontroller.getListOfThemes()
			}
			data["latestUrls"] = utils.getLatestUrls()
			data["popularUrls"] = utils.getMostPopulars()
		
			formData = utils.prepareFormData()
			data["form"].update(formData)
		
			pageContent = utils.getTemplateContent(os.path.join(os.path.dirname(__file__), "templates/main.html"), data)
			self.response.out.write(pageContent)
			
		else:
			# Error, the date has a valid format, but is not a real date
			self.redirect("/")