Exemplo n.º 1
0
def index(*args, **kwargs):
    if request.current.get().isDevServer or request.current.get(
    ).isSSLConnection:
        raise errors.Redirect("/vi/s/main.html")
    else:
        appVersion = app_identity.get_default_version_hostname()
        raise errors.Redirect("https://%s/vi/s/main.html" % appVersion)
Exemplo n.º 2
0
	def view( self, *args, **kwargs ):
		"""
			View or download a file.
		"""
		try:
			return super(File, self).view(*args, **kwargs)
		except (errors.NotFound, errors.NotAcceptable, TypeError) as e:
			if len(args) > 0 and blobstore.get(args[0]):
				raise errors.Redirect("%s/download/%s" % (self.modulePath, args[0]))
			elif len(args) > 1 and blobstore.get(args[1]):
				raise errors.Redirect("%s/download/%s" % (self.modulePath, args[1]))
			elif isinstance( e, TypeError ):
				raise errors.NotFound()
			else:
				raise e
Exemplo n.º 3
0
	def login(self, skey="", *args, **kwargs):
		if users.get_current_user():
			addSkel = skeletonByKind(self.userModule.addSkel().kindName) # Ensure that we have the full skeleton
			currentUser = users.get_current_user()
			uid = currentUser.user_id()
			userSkel = addSkel().all().filter("uid =", uid).getSkel()
			if not userSkel:
				# We'll try again - checking if there's already an user with that email
				userSkel = addSkel().all().filter("name.idx =", currentUser.email().lower()).getSkel()
				if not userSkel: # Still no luck - it's a completely new user
					if not self.registrationEnabled and not users.is_current_user_admin():
						# Registration is disabled, it's a new user and that user is not admin
						logging.warning("Denying registration of %s", currentUser.email())
						raise errors.Forbidden("Registration for new users is disabled")
					userSkel = addSkel() # We'll add a new user
				userSkel["uid"] = uid
				userSkel["name"] = currentUser.email()
				isAdd = True
			else:
				isAdd = False
			now = datetime.datetime.now()
			if isAdd or (now-userSkel["lastlogin"]) > datetime.timedelta(minutes=30):
				# Conserve DB-Writes: Update the user max once in 30 Minutes
				userSkel["lastlogin"] = now
				if users.is_current_user_admin():
					if not userSkel["access"]:
						userSkel["access"] = []
					if not "root" in userSkel["access"]:
						userSkel["access"].append("root")
					userSkel["gaeadmin"] = True
				else:
					userSkel["gaeadmin"] = False
				assert userSkel.toDB()
			return self.userModule.continueAuthenticationFlow(self, userSkel["key"])
		raise errors.Redirect( users.create_login_url( self.modulePath+"/login") )
Exemplo n.º 4
0
	def index(self, *args, **kwargs):
		#if request.current.get().request.url.lower().startswith("https://intern.segelfliegen.com"):
		#	return conf["viur.mainApp"].user.view("self")
		if request.current.get().request.url.startswith("https://intern."):
			raise errors.Redirect("https://www.segelfliegen.com/user/login")

		template = self.getEnv().get_template("index.html")
		return template.render(start=True)
Exemplo n.º 5
0
def redirect(render, url):
	"""
	Jinja2 global: Redirect to another URL.

	:param url: URL to redirect to.
	:type url: str
	"""
	raise errors.Redirect(url)
Exemplo n.º 6
0
    def view(self, key="self", *args, **kwargs):
        try:
            ret = super(user, self).view(key, *args, **kwargs)
        except errors.Unauthorized:
            if isinstance(self.render, htmlRender):
                raise errors.Redirect("/user/login")

            raise

        return ret
Exemplo n.º 7
0
    def startProcessing(self, step, orderID):
        def setTokenTxn(key, token):
            order = db.Get(key)
            if not order:
                return
            order["paypal_token"] = urllib.unquote(token)
            db.Put(order)

        paypal = PayPal.PayPalHandler()
        key = db.Key(orderID)
        order = db.Get(key)
        if not order:
            return
        token = paypal.SetExpressCheckout("%.2f" % order["price"])
        db.RunInTransaction(setTokenTxn, key, token)
        raise (errors.Redirect(paypal.getPayURL(token)))
Exemplo n.º 8
0
 def startProcessing(self, step, orderID):
     raise errors.Redirect(self.getSofortURL(orderID))
Exemplo n.º 9
0
    def checkout(self, step=None, key=None, skey=None, *args, **kwargs):
        """
		Performs the checkout process trough the state machine provided by self.steps.

		:param step: The current step index, None for beginning a new checkout
		:param key: Key of the current checkout
		:param skey: Server security key

		:return: Returns the rendered template or throws redirection exceptions.
		"""
        myKindName = self.viewSkel().kindName

        if step is None:
            logging.info("Starting new checkout process")
            billObj = db.Entity(myKindName)
            billObj["idx"] = "0000000"
            for state in self.states:
                billObj["state_%s" % state] = "0"
            db.Put(billObj)
            key = str(billObj.key())

            #Copy the Cart
            if "amountSkel" in dir(self):
                cart = session.current.get("cart_products") or {}
                s = self.amountSkel()
                products = []
                for prod, atts in cart.items():
                    for i in range(0, atts["amount"]):
                        products.append(str(prod))

                s.fromClient({"product": products})
                s.toDB()

            session.current["order_" + myKindName] = {
                "key": str(key),
                "completedSteps": []
            }
            session.current.markChanged()

            raise errors.Redirect("?step=0&key=%s" % str(key))

        elif key:
            try:
                orderKey = db.Key(key)
                step = int(step)
                assert (step >= 0)
                assert (step < len(self.steps))
            except:
                raise errors.NotAcceptable()

            sessionInfo = session.current.get("order_" + myKindName)

            if not sessionInfo or not sessionInfo.get("key") == str(orderKey):
                raise errors.Unauthorized()

            if step in sessionInfo["completedSteps"]:
                session.current["order_" + myKindName]["completedSteps"] = [
                    x for x in sessionInfo["completedSteps"] if x < step
                ]
                session.current.markChanged()

            #Make sure that no steps can be skipped
            if step != 0 and not step - 1 in sessionInfo["completedSteps"]:
                raise errors.Redirect("?step=0&key=%s" % str(str(orderKey)))

            currentStep = self.steps[step]

            if "preHandler" in currentStep.keys():
                try:
                    if isinstance(currentStep["preHandler"], list):
                        for handler in currentStep["preHandler"]:
                            handler(self, step, str(orderKey), *args, **kwargs)
                    else:
                        currentStep["preHandler"](self,
                                                  step,
                                                  str(orderKey),
                                                  refkwargs=kwargs,
                                                  *args,
                                                  **kwargs)

                except SkipStepException:
                    session.current["order_" +
                                    myKindName]["completedSteps"].append(step)
                    session.current.markChanged()
                    raise errors.Redirect("?step=%s&key=%s" %
                                          (str(step + 1), str(orderKey)))
                except ReturnHtmlException as e:
                    return (e.html)

            if "requiresSecurityKey" in currentStep and currentStep[
                    "requiresSecurityKey"]:
                if not securitykey.validate(skey):
                    raise errors.PreconditionFailed()
                pass

            if "mainHandler" in currentStep:

                if currentStep["mainHandler"]["action"] == "edit":
                    skel = self.getSkelByName(
                        currentStep["mainHandler"]["skeleton"], str(orderKey))
                    skel.fromDB(str(orderKey))

                    if not len(kwargs.keys()) or not skel.fromClient(kwargs):
                        return (self.render.edit(
                            skel,
                            tpl=currentStep["mainHandler"]["template"],
                            step=step))

                    skel.toDB()

                if currentStep["mainHandler"]["action"] == "view":
                    if not "complete" in kwargs or not kwargs[
                            "complete"] == u"1":
                        skel = self.getSkelByName(
                            currentStep["mainHandler"]["skeleton"],
                            str(orderKey))
                        skel.fromDB(str(orderKey))
                        return (self.render.view(
                            skel,
                            tpl=currentStep["mainHandler"]["template"],
                            step=step))

                elif currentStep["mainHandler"]["action"] == "function":
                    res = currentStep["mainHandler"]["function"](self, step,
                                                                 str(orderKey),
                                                                 *args,
                                                                 **kwargs)
                    if res:
                        return res

            if "postHandler" in currentStep:
                currentStep["postHandler"](self, step, str(orderKey), *args,
                                           **kwargs)

            session.current["order_" +
                            myKindName]["completedSteps"].append(step)
            session.current.markChanged()

            logging.info("next ?step=%s&key=%s" %
                         (str(step + 1), str(orderKey)))
            raise errors.Redirect("?step=%s&key=%s" %
                                  (str(step + 1), str(orderKey)))
Exemplo n.º 10
0
    def login(self, *args, **kwargs):
        if utils.getCurrentUser():
            raise errors.Redirect("/user/view")

        return super(user, self).login(*args, **kwargs)
Exemplo n.º 11
0
                if not amt:
                    amt = 1

                prods[product]["amount"] += int(amt)

            session.current["cart_products"] = prods
            session.current.markChanged()

        if async:
            return json.dumps({
                "cartentries": self.entryCount(),
                "cartsum": self.cartSum(),
                "added": int(amt)
            })

        raise errors.Redirect("/%s/view" % self.moduleName)

    @exposed
    def view(self, *args, **kwargs):
        """
		Views the current cart content.
		"""

        prods = session.current.get("cart_products") or {}

        if prods:
            items = self.productSkel().all().mergeExternalFilter({
                "key":
                list(prods.keys())
            }).fetch(limit=10)
        else: