예제 #1
0
	def post(self):
		self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
		if not isUserAdmin(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		codes = {}
		for field in self.request.arguments():
			code = field[:4]
			if not codes.has_key(code):
				codeObj = {}
			else:
				codeObj = codes[code]
			if (field[4:8]=="_cst"):
				codeObj['cost'] = int(self.request.get(field))
			else:
				codeObj['limit'] = int(self.request.get(field))
			codes[code] = codeObj
		sortedCodes =  sorted(codes.keys())
		deliveryCosts = []
		for code in sortedCodes:
			updateZipCodeEntry(code, codes.get(code)['cost'], codes.get(code)['limit'])
			deliveryCosts.append(code + " " + str(codes.get(code)['cost']) + " " + str(codes.get(code)['limit']))
		rawCodes = ZipCodes.all().get()
		if (rawCodes == None):
			rawCodes = ZipCodes()
		rawCodes.deliveryCosts = deliveryCosts
		rawCodes.put()
		updateZipCodeScript(rawCodes)
		self.redirect("/editZipCodes")
예제 #2
0
	def get(self):
		if not isUserAdmin(self):
			self.session[LOGIN_NEXT_PAGE_KEY] = self.URL
			self.redirect("/")
			return
		rawCodes = ZipCodes.all().get()
		if (rawCodes == None):
			rawCodes = ZipCodes()
			zipCodeList = createZipCodeList()
			rawCodes.deliveryCosts = zipCodeList
			rawCodes.put()
		codes = []
		for code in rawCodes.deliveryCosts:
			parts=code.rsplit(" ")
			codes.append(
				{
					'code':parts[0],
					'cost':parts[1],
					'limit':parts[2]
				})
		template_values = {
			'codes':codes
		}
		template = jinja_environment.get_template('templates/admin/zipCodeEditor.html')
		self.printPage("dashboard", template.render(template_values), False, False)
예제 #3
0
def updateZipCodeEntry(code, cost, limit):
	client = memcache.Client()
	key = "zip_code_cost_" + str(code)
	client.add(key, {
					'cost':cost,
					'limit':limit
				})
	updateZipCodeScript(ZipCodes.all().get())
예제 #4
0
def getZipCodeEntry(code):
	client = memcache.Client()
	costs = client.get("zip_code_cost_" + str(code))
	# If not in memcache, does nothing
	if costs != None:
		return costs
	else:
		rawCodes = ZipCodes.all().get()
		if (rawCodes == None):
			return None
		ret = None
		for code in rawCodes.deliveryCosts:
			parts=code.rsplit(" ")
			key = "zip_code_cost_" + parts[0]
			costs = {
					'cost':int(parts[1]),
					'limit':int(parts[2])
				}
			client.add(key, costs)
			if parts[0] == str(code):
				ret = costs
		return ret
예제 #5
0
def getLimitArrayScript():
	client = memcache.Client()
	limitArrayScript = client.get("limitArrayScript")
	if limitArrayScript == None:
		updateZipCodeScript(ZipCodes.all().get())
	return client.get("limitArrayScript")
예제 #6
0
def getCostArrayScript():
	client = memcache.Client()
	costArrayScript = client.get("costArrayScript")
	if costArrayScript == None:
		updateZipCodeScript(ZipCodes.all().get())
	return client.get("costArrayScript")