import jinja2
import webapp2
import os

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)),
    extensions=['jinja2.ext.autoescape'],
    autoescape=True)

class LandingPage(webapp2.RequestHandler):
    def get(self):
        template_values = {}
        template = JINJA_ENVIRONMENT.get_template('index.html')
        self.response.write(template.render(template_values))

class Camp19Page(webapp2.RequestHandler):
    def get(self):
        self.redirect('https://events.ccc.de/camp/2019/wiki/Village:IXP')

class PricingPage(webapp2.RequestHandler):
    def get(self):
        template_values = {}
        template = JINJA_ENVIRONMENT.get_template('pricing.html')
        self.response.write(template.render(template_values))

app = webapp2.WSGIApplication([
    ('/', LandingPage),
    ('/cccamp19', Camp19Page),
    ('/ccccamp19', Camp19Page),
    ('/camp19', Camp19Page),
    ('/camp', Camp19Page),
    ('/cccamp', Camp19Page),
    ('/ccccamp', Camp19Page),
    ('/pricing', PricingPage),
    ('/prices', PricingPage),
    ('/price', PricingPage),
], debug=False)
