#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail import schema from cocktail.translations import translations from woost.models import add_setting, Configuration translations.load_bundle("woost.extensions.nocaptcha.settings") add_setting( schema.String( "x_nocaptcha_public_key", text_search = False ) ) add_setting( schema.String( "x_nocaptcha_private_key", text_search = False ) )
""" @author: Javier Marrero @contact: [email protected] @organization: Whads/Accent SL @since: February 2009 """ import cherrypy import hashlib from mimetypes import guess_type from cocktail.translations import translations from cocktail.memoryutils import parse_bytes, format_bytes from cocktail import schema from cocktail.schema.exceptions import ValidationError translations.load_bundle("cocktail.controllers.fileupload") class FileUpload(schema.Schema): _special_copy_keys = (schema.Schema._special_copy_keys | set(["async_uploader"])) chunk_size = 8192 normalization = None hash_algorithm = None __max_size = None async = False async_uploader = None async_upload_url = None
""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from cocktail.events import when from woost.admin.sections import Settings from woost.admin.sections.contentsection import ContentSection translations.load_bundle("woost.extensions.googlesearch.admin.sections") class GoogleSearchSettings(Settings): icon_uri = "woost.extensions.googlesearch.admin.ui://images/googlesearch.svg" members = [ "x_googlesearch_api_key", "x_googlesearch_engine_id", "x_googlesearch_results_page" ] @when(ContentSection.declared) def fill(e): e.source.append(GoogleSearchSettings("googlesearch"))
""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.events import when from cocktail.translations import translations from woost.admin.sections import Settings from woost.admin.sections.contentsection import ContentSection translations.load_bundle("woost.extensions.sentry.admin.sections") class SentrySettings(Settings): icon_uri = ("woost.extensions.sentry.admin.ui://" "images/sections/sentry.svg") members = ["x_sentry_dsn"] @when(ContentSection.declared) def fill(e): e.source.append(SentrySettings("sentry"))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from cocktail.events import when from cocktail.schema.exceptions import ValidationError translations.load_bundle("cocktail.controllers.fieldconfirmation") def field_confirmation(member_name): """A decorator that adds a confirmation field for the given member of a form. """ def decorator(form_class): @when(form_class.declared) def modify_form(e): form = e.source source_member = form.schema.get_member(member_name) confirmation_member_name = member_name + "_confirmation" confirmation_member = source_member.copy( name=confirmation_member_name, custom_translation_key="cocktail.controllers.fieldconfirmation." "confirmation_field", after_member=member_name) form.adapter.exclude(confirmation_member_name)
#-*- coding: utf-8 -*- """ @author: Martí Congost @contact: [email protected] @organization: Whads/Accent SL @since: October 2009 """ from datetime import date, datetime from cocktail.pkgutils import get_full_name from cocktail.translations import translations, get_language from cocktail.schema import Member, Date, Time, DateTime from cocktail.schema.expressions import (PositiveExpression, NegativeExpression) translations.load_bundle("cocktail.controllers.grouping") class MemberGrouping(object): member = None language = None variants = () variant = None sign = PositiveExpression def get_grouping_value(self, item): return item.get(self.member, self.language) @property def order(self):
#-*- coding: utf-8 -*- u""" .. moduleauthor:: Martí Congost <*****@*****.**> """ import json import cherrypy from cocktail.translations import translations from woost import app from woost.controllers.filecontroller import FileController from woost.controllers.uricontroller import URIController from .tracker import Tracker translations.load_bundle("woost.extensions.googleanalytics.eventredirection") class GAEventRedirection(object): delay = 300 overridable_category = True overridable_action = True overridable_label = True default_category = None default_action = "open" template = """ <!DOCTYPE html> <html> <head>
GeoCoordinates) from cocktail.schema.color import Color from cocktail.schema.creditcardnumber import CreditCardNumber from cocktail.schema.bankaccountnumber import BankAccountNumber from cocktail.schema.iban import IBAN from cocktail.schema.swiftbic import SWIFTBIC from cocktail.schema.codeblock import CodeBlock from cocktail.schema.html import HTML from cocktail.schema.jsonmember import JSON from cocktail.schema.regularexpression import RegularExpression from cocktail.schema.errorlist import ErrorList from cocktail.schema.accessors import (get_accessor, get, set, MemberAccessor, AttributeAccessor, DictAccessor, undefined) from cocktail.schema.schemaobject import (SchemaObject, SchemaClass, SchemaObjectAccessor, TranslatedValues, TranslationMapping, translate_schema_object, generic_schema_object_translation, DO_NOT_COPY, SHALLOW_COPY, DEEP_COPY) from cocktail.schema.adapter import (reference, shallow, deep, Adapter, RuleSet, Rule, Copy, Exclusion, Split, Join) from cocktail.schema.textextractor import TextExtractor from cocktail.schema.searchhighlighter import SearchHighlighter from cocktail.schema.validationcontext import ValidationContext from cocktail.schema.differences import diff from cocktail.translations import translations translations.load_bundle("cocktail.schema.package")
""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from cocktail import schema from woost.models import Publishable, URI translations.load_bundle("woost.extensions.staticpub.publishable") Publishable.add_member( schema.Boolean( "x_staticpub_exportable", required=True, default=True, indexed=True, affects_cache_invalidation=False, listed_by_default=False, member_group="publication", shadows_attribute=True ) ) URI.default_x_staticpub_exportable = False
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from cocktail import schema translations.load_bundle("woost.extensions.locations.locationtype") class LocationType(schema.String): def __init__(self, *args, **kwargs): kwargs.setdefault("enumeration", [ "continent", "country", "autonomous_community", "province", "town" ]) kwargs.setdefault("text_search", False) kwargs.setdefault("ui_form_control", "cocktail.ui.DropdownSelector") schema.String.__init__(self, *args, **kwargs)
#-*- coding: utf-8 -*- u""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from cocktail import schema from woost.models import VideoPlayerSettings from .youtubevideo import YouTubeVideo translations.load_bundle("woost.extensions.youtube.videoplayersettings") VideoPlayerSettings.members_order = VideoPlayerSettings.members_order + [ "youtube_allow_fullscreen", "youtube_show_info", "youtube_show_related_videos" ] VideoPlayerSettings.add_member( schema.Boolean( "youtube_allow_fullscreen", required = True, default = True, listed_by_default = False, member_group = "youtube" ) ) VideoPlayerSettings.add_member( schema.Boolean( "youtube_show_info",
""" .. moduleauthor:: Jordi Fernández <*****@*****.**> """ from createsend import CreateSend, Subscriber, BadRequest from cocktail.translations import translations from cocktail import schema from cocktail.pkgutils import import_object from cocktail.controllers import (Controller, FormProcessor, Form, request_property, redirect) from woost.models import Configuration from .campaignmonitorlist import CampaignMonitorList translations.load_bundle("woost.extensions.campaign3.subscriptioncontroller") class SubscriptionController(FormProcessor, Controller): class SubscriptionForm(Form): is_new = None @request_property def model(self): return import_object(self.controller.block.subscriber_model) @request_property def schema(self): adapted_schema = Form.schema(self) if len(self.controller.block.lists) > 1: lists = schema.Collection(
""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail import schema from cocktail.translations import translations from woost.models import add_setting, Document translations.load_bundle("woost.extensions.googlesearch.settings") add_setting(schema.String("x_googlesearch_api_key")) add_setting(schema.String("x_googlesearch_engine_id")) add_setting(schema.Reference("x_googlesearch_results_page", type=Document))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from woost.models import add_setting from .containerid import ContainerId translations.load_bundle("woost.extensions.googletagmanager.settings") add_setting(ContainerId( "x_googletagmananager_container", text_search=False, ))
@organization: Whads/Accent SL @since: July 2008 """ import re import operator import fnmatch from cocktail.translations import ( translations, get_language, language_context, words ) from cocktail.schema.accessors import get_accessor from cocktail.stringutils import normalize translations.load_bundle("cocktail.schema.expressions") class Expression(object): operands = () def __init__(self, *operands): self.operands = tuple(self.wrap(operand) for operand in operands) def op(self, *args): raise TypeError("%s doesn't implement its op() method" % self) def __eq__(self, other): return type(self) is type(other) and self.operands == other.operands
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.events import when from cocktail.translations import translations from woost.admin.sections.settings import Settings from woost.admin.sections.contentsection import ContentSection translations.load_bundle("woost.extensions.googletagmanager.admin.sections") class GoogleTagManagerSettings(Settings): icon_uri = ("woost.extensions.googletagmanager.admin.ui://" "images/sections/google-tag-manager.svg") members = ["x_googletagmananager_container"] @when(ContentSection.declared) def fill(e): e.source.append(GoogleTagManagerSettings("google-tag-manager"))
""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail import schema from cocktail.translations import translations from cocktail.html.datadisplay import display_factory from cocktail.html.grouping import GroupByMember from woost.models import Publishable, Document, News, File from woost.extensions.opengraph.opengraphtype import OpenGraphType from woost.extensions.opengraph.utils import (export_content, get_publishable_website) translations.load_bundle("woost.extensions.opengraph.publishable") File.default_x_opengraph_enabled = False File.default_x_opengraph_type = None Publishable.members_order += ["x_opengraph_enabled", "x_opengraph_type"] class GroupByOpenGraphCategory(GroupByMember): member = OpenGraphType.category Publishable.add_member( schema.Boolean("x_opengraph_enabled", required=True, default=True, listed_by_default=False, member_group="meta.x_opengraph"))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail import schema from cocktail.translations import translations from woost.models import add_setting, LocaleMember from .customdefinition import CustomDefinition translations.load_bundle("woost.extensions.googleanalytics.settings") add_setting(schema.String( "x_googleanalytics_account", text_search=False, )) add_setting(schema.String( "x_googleanalytics_domain", text_search=False, )) add_setting(LocaleMember("x_googleanalytics_language")) add_setting( schema.Collection("x_googleanalytics_custom_definitions", items=schema.Reference(type=CustomDefinition)))
from cocktail import schema from cocktail.urls import URL from cocktail.persistence import transaction from cocktail.controllers import (Controller, request_property, get_parameter, json_out) from woost import app from woost.models import (Item, Document, LocaleMember, changeset_context) from woost.controllers.cmscontroller import CMSController from woost.admin.dataexport import Export as DataExport from woost.extensions.staticpub.destination import Destination from woost.extensions.staticpub.export import Export from woost.extensions.staticpub.exportpermission import ExportPermission from .utils import iter_exportable_languages, iter_all_exportable_items translations.load_bundle("woost.extensions.staticpub.publicationcontroller") class ExportStateController(Controller): @json_out def __call__(self, export_id, lang, **kwargs): set_language(lang) try: export_id = int(export_id) except ValueError: raise cherrypy.HTTPError(400) export = Export.get_instance(export_id) if export is None:
""" .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from cocktail.events import when from woost.admin.sections import Settings from woost.admin.sections.contentsection import ContentSection translations.load_bundle("woost.extensions.opengraph.admin.sections") class OpenGraphSettings(Settings): icon_uri = "woost.extensions.opengraph.admin.ui://images/opengraph.svg" members = [ "x_opengraph_fb_admins", "x_opengraph_fb_apps", "x_opengraph_default_image" ] @when(ContentSection.declared) def fill(e): e.source.append(OpenGraphSettings("opengraph"))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail import schema from cocktail.translations import translations from woost.models import add_setting, Configuration from .locationtype import LocationType translations.load_bundle("woost.extensions.locations.settings") add_setting(schema.String("x_locations_service_uri", required=True, default="http://services.woost.info/locations", text_search=False), scopes=(Configuration, )) add_setting(schema.Integer("x_locations_update_frequency", min=1, default=15), scopes=(Configuration, )) add_setting(schema.Collection("x_locations_updated_location_types", default=[ "continent", "country", "autonomous_community", "province", "town" ], items=LocationType(required=True), text_search=False, ui_form_control="cocktail.ui.CheckList"), scopes=(Configuration, ))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail import schema from cocktail.translations import translations from woost.models import add_setting translations.load_bundle("woost.extensions.youtube.settings")
#-*- coding: utf-8 -*- """ .. moduleauthor:: Pepe Osca <*****@*****.**> """ from cocktail.translations import translations from cocktail import schema from woost.models import User translations.load_bundle("woost.extensions.identity.google.user") User.add_member( schema.String("x_identity_google_user_id", indexed=True, unique=True, editable=schema.NOT_EDITABLE, listed_by_default=False, member_group="administration"))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.events import when from cocktail.translations import translations from woost.admin.sections import Folder, CRUD, Settings from woost.admin.sections.contentsection import ContentSection from woost.extensions.googleanalytics.view import View translations.load_bundle("woost.extensions.googleanalytics.admin.sections") class GoogleAnalyticsSection(Folder): icon_uri = ("woost.extensions.googleanalytics.admin.ui://" "images/google-analytics.svg") def _fill(self): self.append(GoogleAnalyticsSettings("settings")) self.append(CRUD("views", model=View)) class GoogleAnalyticsSettings(Settings): icon_uri = ("woost.extensions.googleanalytics.admin.ui://" "images/google-analytics.svg") members = [ "x_googleanalytics_account", "x_googleanalytics_domain",
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ import cherrypy from json import loads import urllib.request, urllib.parse, urllib.error import urllib.request, urllib.error, urllib.parse from cocktail.translations import translations from cocktail import schema from cocktail.html.uigeneration import default_edit_control from cocktail.schema.exceptions import ValidationError from woost.models import get_setting translations.load_bundle("woost.extensions.nocaptcha.member") class NoCaptcha(schema.String): """A member that handles noCaptcha values.""" VERIFY_SERVER = "https://www.google.com/recaptcha/api/siteverify" def __init__(self, name=None, *args, **kwargs): kwargs.setdefault("parameter_name", "g-recaptcha-response") if not name: name = "nocaptcha" schema.String.__init__(self, name, *args, **kwargs)
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.events import when from cocktail.translations import translations from woost.admin.sections import Settings from woost.admin.sections.contentsection import ContentSection translations.load_bundle("woost.extensions.nocaptcha.admin.sections") class NoCaptchaSection(Settings): icon_uri = "woost.extensions.nocaptcha.admin.ui://images/nocaptcha.svg" members = [ "x_nocaptcha_public_key", "x_nocaptcha_private_key", ] @when(ContentSection.declared) def fill(e): e.source.append(NoCaptchaSection("nocaptcha"))
#-*- coding: utf-8 -*- """ .. moduleauthor:: Pepe Osca <*****@*****.**> """ from cocktail.translations import translations from cocktail import schema from woost.models import add_setting, Configuration from .identityprovider import IdentityProvider translations.load_bundle("woost.extensions.identity.settings") add_setting(schema.Collection("x_identity_providers", items=schema.Reference(type=IdentityProvider), integral=True, bidirectional=True), scopes=(Configuration, ))
#-*- coding: utf-8 -*- """ @author: Martí Congost @contact: [email protected] @organization: Whads/Accent SL @since: February 2010 """ from decimal import Decimal from cocktail.translations import translations from cocktail import schema from woost.models import Publishable, URI translations.load_bundle("woost.extensions.sitemap.publishable") URI.default_sitemap_indexable = False Publishable.add_member(schema.String("x_sitemap_change_frequency", enumeration=[ "always", "hourly", "daily", "weekly", "monthly", "yearly", "never" ], member_group="meta.robots", text_search=False, listed_by_default=False), append=True) Publishable.add_member(schema.Decimal("x_sitemap_priority", min=0, max=1, listed_by_default=False,
#-*- coding: utf-8 -*- """ Declares exception classes specific to the package. @author: Martí Congost @contact: [email protected] @organization: Whads/Accent SL @since: March 2008 """ from cocktail.stringutils import decapitalize from cocktail.translations import translations, translate_locale translations.load_bundle("cocktail.schema.exceptions") class SchemaIntegrityError(Exception): """Base class for all exceptions that are raised to prevent breaking the integrity of a schema.""" class SchemaInheritanceCycleError(Exception): """An exception raised when a schema tries to inherit itself, either directly or indirectly.""" def __init__(self, schema): super().__init__( f"{schema} tried to use itself as an inheritance base.") self.schema = schema class MemberRenamedError(SchemaIntegrityError): """An exception raised when changing the name of a schema member that is
#-*- coding: utf-8 -*- """ .. moduleauthor:: Martí Congost <*****@*****.**> """ from cocktail.translations import translations from woost.models import add_setting, LocaleMember translations.load_bundle("woost.extensions.attributes.settings") add_setting( LocaleMember( "x_attributes_language" ) )