Пример #1
0
 def test_implements_called_outside_classdef(self):
     """
     Verify that calling implements() outside a class definition raises an
     `AssertionError`.
     """
     try:
         implements()
         self.fail('Expected AssertionError')
     except AssertionError:
         pass
Пример #2
0
 def test_implements_called_outside_classdef(self):
     """
     Verify that calling implements() outside a class definition raises an
     `AssertionError`.
     """
     try:
         implements()
         self.fail('Expected AssertionError')
     except AssertionError:
         pass
Пример #3
0
class XPathQuery(RestrictedXPathQueryParser):
    """
    XPath query complying with the restricted XPath query grammar.
    """

    implements(IXPathQuery)

    def __init__(self, query):
        RestrictedXPathQueryParser.__init__(self)
        self.query = query
        self.parsed_query = self.parse(query)

    def getLocationPath(self):
        pkg = self.package_id
        if pkg == self.WILDCARD:
            pkg = None
        rt = self.resourcetype_id
        if rt == self.WILDCARD:
            rt = None
        location_path = [pkg, rt]
        if self.location_steps:
            location_path.extend(self.location_steps)
        return location_path

    def getPredicates(self):
        return self.predicates

    def getOrderBy(self):
        return self.order_by

    def getLimit(self):
        return self.limit

    def getOffset(self):
        return self.offset
Пример #4
0
class APackage(Component):
    """
    A test package.
    """
    implements(IPackage)

    package_id = 'mapper-test'
class Foo(object):
    """ A concrete class """

    implements(FooInterface)

    foobar = "yeah"

    def aMethod(self, foo, bar, bingo):  #@UnusedVariable
        """ This is aMethod """
        return "barf!"

    def anotherMethod(self,
                      foo=6,
                      bar="where you get sloshed",
                      bingo=(
                          1,
                          3,
                      )):  #@UnusedVariable
        """ This is anotherMethod """
        return "barf!"

    def wammy(self, zip, *argues):  #@UnusedVariable
        """ yadda yadda """
        return "barf!"

    def useless(self, **keywords):  #@UnusedVariable
        """ useless code is fun! """
        return "barf!"
Пример #6
0
class APackage(Component):
    """
    A test package.
    """
    implements(IPackage)

    package_id = 'validation-test'
Пример #7
0
class XPathMapper(Component):
    """ 
    A mapper to directly query XPath expressions. 
    """
    implements(IMapper)

    package_id = 'seishub'
    mapping_url = '/xpath'

    def process_GET(self, request):
        if len(request.path) < 7:
            return {}
        xpath = request.path[6:]
        # get resources
        try:
            resources = self.env.catalog.query(xpath, full=True)
        except:
            return {}
        # get indexed data
        results = []
        for resource in resources:
            data = self.env.catalog.getIndexData(resource)
            data['package_id'] = resource.package._id
            data['resourcetype_id'] = resource.resourcetype._id
            data['document_id'] = resource.document._id
            data['resource_name'] = str(resource._name)
            results.append(data)
        # generate output
        return formatResults(request, results, count=len(results))
Пример #8
0
class APackage(Component):
    """
    A test package.
    """
    implements(IPackage)

    package_id = 'transformation-test'
Пример #9
0
class SchemaResource(Component):
    """
    A schema resource type for SeisHub.
    """
    implements(IResourceType)

    package_id = 'seishub'
    resourcetype_id = 'schema'
Пример #10
0
class MagicTheme(Component):
    """
    New *magic* WebAdmin theme.
    """
    implements(IAdminTheme)

    theme_id = 'magic'
    theme_css_resource = '/css/magic.css'
Пример #11
0
class OldTheme(Component):
    """
    Old WebAdmin theme.
    """
    implements(IAdminTheme)

    theme_id = 'oldstyle'
    theme_css_resource = '/css/oldstyle.css'
Пример #12
0
class SeisHubPackage(Component):
    """
    The SeisHub package.
    """
    implements(IPackage)
    package_id = 'seishub'

    version = '0.1'
Пример #13
0
class AVersionControlledResourceType(Component):
    """
    A version controlled test resource type.
    """
    implements(IResourceType, IPackage)

    package_id = 'put-test'
    resourcetype_id = 'vc'
    version_control = True
Пример #14
0
class DocumentMeta(Serializable):
    """contains document specific metadata;
    such as: size, datetime, hash, user_id
    """

    implements(IDocumentMeta)

    db_table = document_meta_tab

    db_mapping = {
        '_id': 'id',
        'uid': 'uid',
        'datetime': 'datetime',
        'size': 'size',
        'hash': 'hash'
    }

    def __init__(self, uid=None, datetime=None, size=None, hash=None):
        self.uid = uid
        self.datetime = datetime
        self.size = size
        self.hash = hash

    def getUID(self):
        return self._uid

    def setUID(self, value):
        if value and not isinstance(value, basestring):
            raise TypeError('User id has to be a basestring.')
        self._uid = value

    uid = property(getUID, setUID, 'User id of document creator')

    def getDatetime(self):
        return self._datetime

    def setDatetime(self, value):
        self._datetime = value

    datetime = property(getDatetime, setDatetime, 'Last modification date')

    def getSize(self):
        return self._size

    def setSize(self, value):
        self._size = value

    size = property(getSize, setSize, 'Size of xml document (read-only)')

    def getHash(self):
        return self._hash
        #return sha.sha(self.data).hexdigest()

    def setHash(self, value):
        self._hash = value

    hash = property(getHash, setHash, 'Document hash (read-only)')
Пример #15
0
class AResourceType(Component):
    """
    A non versioned test resource type.
    """
    implements(IResourceType, IPackage)

    package_id = 'put-test'
    resourcetype_id = 'notvc'
    version_control = False
Пример #16
0
class AResourceType3(Component):
    """
    Another test package and resource type.
    """
    implements(IResourceType, IPackage)

    package_id = 'get-test'
    resourcetype_id = 'notvc2'
    version_control = False
Пример #17
0
class TestMapper5(Component):
    """
    An unregistered mapper.
    """
    implements(IMapper)

    mapping_url = '/mapper-test/testmapping5'

    def process_GET(self, request):
        pass
class Adept(components.Adapter):
    implements(IAdept)

    def __init__(self, orig):
        self.original = orig
        self.num = 0

    def adaptorFunc(self):
        self.num = self.num + 1
        return self.num, self.original.inc()
Пример #19
0
class TestMapper2(Component):
    """
    Another test mapper.
    """
    implements(IMapper)

    mapping_url = '/mapper-test/testmapping2'

    def process_GET(self, request):
        pass
Пример #20
0
class AVersionControlledResourceType(Component):
    """
    A version controlled test resource type.
    """
    implements(IResourceType, IPackage)

    package_id = 'property-test'
    resourcetype_id = 'vc'
    version_control = True
    registerIndex('label4', '/testml/node/subnode2', 'text')
Пример #21
0
class AResourceType3(Component):
    """
    A non versioned test resource type.
    """
    implements(IResourceType, IPackage)

    package_id = 'property-test'
    resourcetype_id = 'notvc3'
    version_control = False
    registerIndex('label3', '/testml/node/subnode1#v', 'integer')
Пример #22
0
class AResourceType2(Component):
    """
    A non versioned test resource type for datetime index tests.
    """
    implements(IResourceType, IPackage)

    package_id = 'property-test'
    resourcetype_id = 'notvc2'
    version_control = False
    registerIndex('label2', '/testml/node/subnode1', 'datetime')
Пример #23
0
class TestMapper3(Component):
    """
    And one more test mapper.
    """
    implements(IMapper)

    mapping_url = '/mapper-test/testmapping3'

    def process_GET(self, request):
        pass
Пример #24
0
class TestMapper4(Component):
    """
    And one more test mapper.
    """
    implements(IMapper)

    mapping_url = '/testmapping4'

    def process_GET(self, request):
        return u"MÜH"
Пример #25
0
class TestIndex(Component):
    implements(IProcessorIndex)

    package_id = 'processorindextest'
    resourcetype_id = 'testtype'
    type = index.FLOAT_INDEX
    label = 'testindex'

    def eval(self, document):  #@UnusedVariable
        return [1, 2, 3]
Пример #26
0
class SchematronResourceType(Component):
    """
    A test resource type which includes a Schematron validation schema.
    """
    implements(IResourceType)

    package_id = 'validation-test'
    resourcetype_id = 'schematron'
    registerSchema('data' + os.sep + 'validation' + os.sep + 'schematron.sch',
                   'Schematron')
Пример #27
0
class XMLSchemaResourceType(Component):
    """
    A test resource type including a XMLSchema validation schema.
    """
    implements(IResourceType)

    package_id = 'validation-test'
    resourcetype_id = 'xmlschema'

    registerSchema('data' + os.sep + 'validation' + os.sep + 'xmlschema.xsd',
                   'XMLSchema')
Пример #28
0
class RelaxNGResourceType(Component):
    """
    A test resource type which includes a RelaxNG validation schema.
    """
    implements(IResourceType)

    package_id = 'validation-test'
    resourcetype_id = 'relaxng'

    registerSchema('data' + os.sep + 'validation' + os.sep + 'relaxng.rng',
                   'RelaxNG')
Пример #29
0
class DatabasePanel(Component):
    """
    Database configuration.
    """
    implements(IAdminPanel)

    template = 'templates' + os.sep + 'general_database.tmpl'
    panel_ids = ('admin', 'General', 'database', 'Database')
    has_roles = ['SEISHUB_ADMIN']

    def render(self, request):
        db = self.db
        data = {
          'db': db,
          'uri': self.config.get('db', 'uri'),
          'pool_size': self.config.getint('db', 'pool_size'),
          'max_overflow': self.config.getint('db', 'max_overflow'),
        }
        if db.engine.name == 'sqlite':
            data['info'] = ("SQLite Database enabled!", "A SQLite database "
                            "should never be used in a productive "
                            "environment!<br />Instead try to use any "
                            "supported database listed at "
                            "<a href='http://www.sqlalchemy.org/trac/wiki/"
                            "DatabaseNotes'>http://www.sqlalchemy.org/trac/"
                            "wiki/DatabaseNotes</a>.")
        if request.method == 'POST':
            uri = request.args0.get('uri', '')
            pool_size = request.args0.get('pool_size', DEFAULT_POOL_SIZE)
            max_overflow = request.args0.get('max_overflow',
                                             DEFAULT_MAX_OVERFLOW)
            verbose = request.args0.get('verbose', False)
            self.config.set('db', 'verbose', verbose)
            self.config.set('db', 'pool_size', pool_size)
            self.config.set('db', 'max_overflow', max_overflow)
            data['uri'] = uri
            try:
                engine = create_engine(uri)
                engine.connect()
            except:
                data['error'] = ("Could not connect to database %s" % uri,
                                 "Please make sure the database URI has " + \
                                 "the correct syntax: dialect://user:"******"password@host:port/dbname.")
            else:
                self.config.set('db', 'uri', uri)
                data['info'] = ("Connection to database was successful",
                                "You have to restart SeisHub in order to " + \
                                "see any changes at the database settings.")
            self.config.save()
        data['verbose'] = self.config.getbool('db', 'verbose')
        data['pool_size'] = self.config.getint('db', 'pool_size')
        data['max_overflow'] = self.config.getint('db', 'max_overflow')
        return data
Пример #30
0
class DatabaseQueryPanel(Component):
    """
    Query the database via HTTP form.
    """
    implements(IAdminPanel)

    template = 'templates' + os.sep + 'catalog_db_query.tmpl'
    panel_ids = ('catalog', 'Catalog', 'db-query', 'Query Database')
    has_roles = ['CATALOG_ADMIN']

    def render(self, request):
        db = self.env.db.engine
        tables = sorted([t for t in db.table_names() if DEFAULT_PREFIX in t])
        data = {
            'query': 'SELECT 1;',
            'result': '',
            'cols': '',
            'rows': 0,
            'clock': "%0.6f" % 0,
            'tables': tables,
            'views': sorted(self.env.db.getViews()),
            'prefix': DEFAULT_PREFIX,
        }
        args = request.args
        if request.method == 'POST':
            query = None
            if 'query' in args and 'send' in args:
                query = data['query'] = request.args['query'][0]
            elif 'table' in args:
                table = DEFAULT_PREFIX + request.args['table'][0]
                query = 'SELECT * \nFROM ' + table + '\nLIMIT 20;'
            elif 'view' in args:
                view = request.args['view'][0]
                query = 'SELECT * \nFROM "' + view + \
                        '" \nORDER BY document_id DESC\nLIMIT 20;'
            if query:
                data['query'] = query
                try:
                    t1 = time.time()
                    result = db.execute(query)
                    t2 = time.time()
                    data['clock'] = "%0.6f" % (t2 - t1)
                    try:
                        data['cols'] = result.keys
                    except AttributeError:
                        data['cols'] = []
                    data['result'] = result.fetchall()
                    data['rows'] = len(data['result'])
                except Exception, e:
                    self.env.log.error('Database query error', e)
                    data['error'] = ('Database query error', e)
        return data
Пример #31
0
class MultipleXMLSchemaResourceType(Component):
    """
    A test resource type including multiple validation schema.
    """
    implements(IResourceType)

    package_id = 'validation-test'
    resourcetype_id = 'multi'

    registerSchema('data' + os.sep + 'validation' + os.sep + 'xmlschema.xsd',
                   'XMLSchema')
    registerSchema('data' + os.sep + 'validation' + os.sep + 'relaxng.rng',
                   'RelaxNG')