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
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
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!"
class APackage(Component): """ A test package. """ implements(IPackage) package_id = 'validation-test'
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))
class APackage(Component): """ A test package. """ implements(IPackage) package_id = 'transformation-test'
class SchemaResource(Component): """ A schema resource type for SeisHub. """ implements(IResourceType) package_id = 'seishub' resourcetype_id = 'schema'
class MagicTheme(Component): """ New *magic* WebAdmin theme. """ implements(IAdminTheme) theme_id = 'magic' theme_css_resource = '/css/magic.css'
class OldTheme(Component): """ Old WebAdmin theme. """ implements(IAdminTheme) theme_id = 'oldstyle' theme_css_resource = '/css/oldstyle.css'
class SeisHubPackage(Component): """ The SeisHub package. """ implements(IPackage) package_id = 'seishub' version = '0.1'
class AVersionControlledResourceType(Component): """ A version controlled test resource type. """ implements(IResourceType, IPackage) package_id = 'put-test' resourcetype_id = 'vc' version_control = True
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)')
class AResourceType(Component): """ A non versioned test resource type. """ implements(IResourceType, IPackage) package_id = 'put-test' resourcetype_id = 'notvc' version_control = False
class AResourceType3(Component): """ Another test package and resource type. """ implements(IResourceType, IPackage) package_id = 'get-test' resourcetype_id = 'notvc2' version_control = False
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()
class TestMapper2(Component): """ Another test mapper. """ implements(IMapper) mapping_url = '/mapper-test/testmapping2' def process_GET(self, request): pass
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')
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')
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')
class TestMapper3(Component): """ And one more test mapper. """ implements(IMapper) mapping_url = '/mapper-test/testmapping3' def process_GET(self, request): pass
class TestMapper4(Component): """ And one more test mapper. """ implements(IMapper) mapping_url = '/testmapping4' def process_GET(self, request): return u"MÜH"
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]
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')
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')
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')
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
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
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')