コード例 #1
0
    def __call__(self, **parameters):

        # Get references to the gateway and payment
        gateway = get_parameter(
            schema.Reference("gateway_id", type=DummyPaymentGateway))

        if gateway is None:
            raise ValueError("Wrong payment gateway")

        payment_id = get_parameter(schema.String("payment_id"))
        payment = payment_id and gateway.get_payment(payment_id) or None

        if payment is None:
            raise ValueError("Wrong payment id (%s)" % payment_id)

        # Notify the payment to the application
        cms = self.context["cms"]
        notification_uri = Location.get_current_host()
        notification_uri.path_info = cms.application_uri(
            "payment_notification", payment_id=payment_id)
        urlopen(str(notification_uri))

        # Redirect the user after the transaction's over
        redirection = None

        if gateway.payment_status == "accepted":
            redirection = gateway.payment_successful_page
        elif gateway.payment_status == "failed":
            redirection = gateway.payment_failed_page

        raise cherrypy.HTTPRedirect((redirection and cms.uri(redirection)
                                     or cms.application_uri()).encode("utf-8"))
コード例 #2
0
 def language_mode(self):
     return get_parameter(schema.String(
         "language_mode",
         required=True,
         enumeration=["all", "include", "exclude"],
         default="all"),
                          errors="raise")
コード例 #3
0
 def visible_languages(self):
     return get_parameter(schema.Collection("language",
                                            items=schema.String(),
                                            default=[get_language()]),
                          source=CookieParameterSource(
                              cookie_naming="visible_languages",
                              cookie_duration=self.settings_duration))
コード例 #4
0
ファイル: editstack.py プロジェクト: marticongost/woost
    def request_edit_stack(self):
        """
        Obtains the stack of edit operations for the current HTTP request, as
        indicated by an HTTP parameter.

        @param param: The name of the HTTP parameter that contains the unique
            identifier of the stack to obtain.

        @return: The current edit stack, or None if the "edit_stack" parameter
            is missing.
        @rtype: L{EditStack}

        @raise WrongEditStackError: Raised if the requested edit stack can't be
            found on the session.
        """
        edit_stack = None
        edit_stack_param = get_parameter(
            schema.String(self._request_param, format=r"\d+-\d+"))

        if edit_stack_param:
            id, step = map(int, edit_stack_param.split("-"))

            edit_stack = self._get_edit_stack(id)

            # Edit state lost
            if edit_stack is None:
                raise WrongEditStackError(id)

            # Prune the stack
            else:
                while len(edit_stack) > step + 1:
                    edit_stack.pop()

        return edit_stack
コード例 #5
0
ファイル: tweetcontroller.py プロジェクト: marticongost/woost
 def selection(self):
     return get_parameter(schema.Collection("selection",
                                            items=schema.Reference(
                                                type=Publishable,
                                                required=True),
                                            min=1),
                          errors="raise")
コード例 #6
0
 def pagination(self):
     return get_parameter(Pagination.copy(
         **{
             "page_size.default": 20,
             "page_size.max": 100,
             "items": self.products
         }),
                          errors="set_default")
コード例 #7
0
 def sibling(self):
     target_member = self.target_member
     if target_member and isinstance(target_member, schema.Collection):
         return get_parameter(
             schema.Reference(
                 "sibling",
                 type=target_member.related_type,
                 enumeration=self.target_object.get(target_member)))
コード例 #8
0
    def target_member(self):
        eligible_members = [member.name for member in self.eligible_members]

        if eligible_members:
            member_name = get_parameter(
                schema.String("target_member", enumeration=eligible_members))
            if member_name:
                return self.target_object.__class__.get_member(member_name)
コード例 #9
0
def get_slot_parameter(parent, parameter_name):
    if parent is not None:
        slot_name = get_parameter(schema.String(parameter_name))
        if slot_name:
            slot = type(parent).get_member(slot_name)
            if (slot is not None and isinstance(slot, schema.RelationMember)
                    and slot.related_type
                    and issubclass(slot.related_type, Block)):
                return slot
コード例 #10
0
 def relation_selection(self):
     member = self.relation_member
     value = get_parameter(
         Collection(
             name = "relation_selection-" + member.name,
             items = Reference(type = member.related_type)
         )
     )
     if not value:
         return []
     else:
         enum = frozenset(self.stack_node.form_data.get(member.name))
         return [item for item in value if item in enum]
コード例 #11
0
    def preview_publishable(self):

        publishable = get_parameter(
            schema.Reference("preview_publishable", type=Publishable))

        if publishable is not None:
            return publishable

        for node in reversed(self.edit_stack):
            item = getattr(node, "item", None)
            if item is not None and isinstance(item, Publishable):
                return item

        if isinstance(self.previewed_item, Block):
            for path in self.previewed_item.find_paths():
                container = path[0][0]
                if isinstance(container, Publishable):
                    publishable = container
                    break
コード例 #12
0
ファイル: newslisting.py プロジェクト: marticongost/woost
 def pagination(self):
     return get_parameter(self.pagination_member,
                          errors="set_default",
                          prefix=self.name_prefix,
                          suffix=self.name_suffix)
コード例 #13
0
 def dragged_object(self):
     return get_parameter(schema.Reference("dragged_object", type=Item))
コード例 #14
0
    def __call__(self, **kwargs):

        app.user.require_permission(ReadReportsPermission)
        form_data = get_parameter(report_schema, errors="raise")

        config = Configuration.instance
        custom_defs = config.google_analytics_custom_definitions

        reports = []

        base_report = {
            "viewId":
            form_data["view"].identifier,
            "dateRanges": [{
                "startDate":
                form_data["start_date"].strftime("%Y-%m-%d"),
                "endDate":
                form_data["end_date"].strftime("%Y-%m-%d")
            }],
            "samplingLevel":
            "LARGE",
            "pageSize":
            10000
        }

        source_publishable = form_data.get("source_publishable")

        if source_publishable:
            publishable_custom_def = CustomDefinition.get_instance(
                qname="woost.extensions.googleanalytics."
                "default_custom_definitions.publishable")
            publishable_dim = ("ga:dimension%d" %
                               (custom_defs.index(publishable_custom_def) + 1))
            base_report["dimensionFilterClauses"] = {
                "operator":
                "AND",
                "filters": [{
                    "dimensionName": publishable_dim,
                    "operator": "PARTIAL",
                    "expressions": ["--%d--" % source_publishable.id]
                }]
            }

        agg_report = deepcopy(base_report)
        agg_report["dimensions"] = [{"name": "ga:eventLabel"}]
        agg_report["metrics"] = [{"expression": "ga:totalEvents"}]
        reports.append(agg_report)

        target_custom_def = CustomDefinition.get_instance(
            qname="woost.extensions.googleanalytics."
            "default_custom_definitions.target")

        if target_custom_def:
            target_report = deepcopy(agg_report)
            target_report["dimensions"].append({
                "name":
                "ga:dimension%d" % (custom_defs.index(target_custom_def) + 1)
            })
            reports.append(target_report)

        if source_publishable:
            page_report = deepcopy(base_report)
            page_report["dimensions"] = [{"name": publishable_dim}]
            page_report["metrics"] = [{"expression": "ga:pageviews"}]
            reports.append(page_report)

        request_data = {"reportRequests": reports}
        client = get_client()
        report = get_report(client, request_data)

        cherrypy.response.headers["Content-Type"] = "application/json"
        return json.dumps(report)
コード例 #15
0
 def form_data(self):
     return get_parameter(self.form_schema, errors="ignore")
コード例 #16
0
 def include_neutral_language(self):
     return get_parameter(schema.Boolean("include_neutral_language",
                                         required=True,
                                         default=True),
                          implicit_booleans=False,
                          errors="raise")
コード例 #17
0
 def client_side_scripting(self):
     return get_parameter(schema.Boolean("client_side_scripting"))
コード例 #18
0
 def preview_publishable(self):
     return get_parameter(
         schema.Reference("preview_publishable", type=Publishable))
コード例 #19
0
 def position(self):
     return get_parameter(
         schema.Integer("position", min=0, max=len(self.collection)))
コード例 #20
0
 def pending_only(self):
     return get_parameter(schema.Boolean("pending_only",
                                         required=True,
                                         default=False),
                          implicit_booleans=False,
                          errors="raise")
コード例 #21
0
 def include_descendants(self):
     return get_parameter(schema.Boolean("include_descendants",
                                         required=True,
                                         default=False),
                          implicit_booleans=False,
                          errors="raise")
コード例 #22
0
 def preview_language(self):
     return get_parameter(
         schema.String("preview_language", default=get_language()))
コード例 #23
0
 def member(self):
     key = get_parameter(schema.String("member"))
     return self.item.__class__.get_member(key) if key else None
コード例 #24
0
 def action(self):
     return get_parameter(schema.String("action"))
コード例 #25
0
 def target_object(self):
     return get_parameter(schema.Reference("target_object", type=Item))
コード例 #26
0
 def language_subset(self):
     return get_parameter(schema.Collection("language_subset",
                                            items=LocaleMember()),
                          errors="raise")
コード例 #27
0
 def destination(self):
     return get_parameter(schema.Reference("destination",
                                           type=Destination,
                                           required=True),
                          errors="raise")
コード例 #28
0
 def selection(self):
     return get_parameter(
         schema.Collection("selection",
                           items=schema.Reference(type=self.content_type)))
コード例 #29
0
 def relative_placement(self):
     return get_parameter(
         schema.String("relative_placement",
                       enumeration=["after", "before"]))
コード例 #30
0
 def selection(self):
     return get_parameter(schema.Collection(
         "selection", items=schema.Reference(type=Item)),
                          errors="raise")