class Group(orb.Table): id = orb.IdColumn() name = orb.StringColumn() users = orb.Pipe(through_path='GroupUser.group.user') byName = orb.Index(columns=['name'], flags={'Unique'})
class GroupUser(orb.Table): id = orb.IdColumn() user = orb.ReferenceColumn(reference='User') group = orb.ReferenceColumn(reference='Group') byUserAndGroup = orb.Index(('user', 'group'), flags={'Unique'}) byUser = orb.Index(('user', ))
class TestDefault(orb.Table): id = orb.IdColumn() name = orb.StringColumn() @classmethod def onSync(cls, event): print 'syncing defaults' cls.ensureExists({'name': 'test'})
class Address(orb.Table): id = orb.IdColumn() user = orb.ReferenceColumn(reference='User') name = orb.StringColumn() street = orb.StringColumn() city = orb.StringColumn() state = orb.StringColumn() zipcode = orb.IntegerColumn()
class Group(orb.Table): __resource__ = True id = orb.IdColumn() name = orb.StringColumn(flags={'Required'}) users = orb.Pipe(through_path='GroupUser.group.user') byName = orb.Index(columns=['name'], flags={'Unique'})
class TestExplicit(orb.Table): __namespace__ = 'test_explicit' id = orb.IdColumn() name = orb.StringColumn() @classmethod def onSync(cls, event): print 'syncing explicit' cls.ensureExists({'name': 'test'})
class Group(orb.Table): __resource__ = True id = orb.IdColumn() name = orb.StringColumn(flags={'Unique'}) owner = orb.ReferenceColumn(reference='User') users = orb.Pipe(through_path='GroupUser.group.user') groupUsers = orb.ReverseLookup(from_column='GroupUser.group') byName = orb.Index(columns=['name'], flags={'Unique'})
class Asset(orb.Table): id = orb.IdColumn() code = orb.StringColumn(flags={'Unique'}) display_name = orb.StringColumn() parent = orb.ReferenceColumn(reference='Asset') project = orb.ReferenceColumn(reference='Project') type = orb.StringColumn(flags={'Polymorphic'}) children = orb.ReverseLookup(from_column='Asset.parent') dependsOn = orb.Pipe(through_path='Dependency.target.source') dependencies = orb.Pipe(through_path='Dependency.source.target')
class Address(orb.Table): __resource__ = True id = orb.IdColumn() user = orb.ReferenceColumn(reference='User') street = orb.StringColumn(flags={'Required'}) city = orb.StringColumn(flags={'Required'}) state = orb.StringColumn(flags={'Required'}) zipcode = orb.IntegerColumn() def onInit(self, event): context = self.context() self.set('user', context.scope.get('user'))
class UserSchema(orb.ModelMixin): id = orb.IdColumn() username = orb.StringColumn(flags={'Required'}) password = orb.StringColumn(flags={'Required'}) first_name = orb.StringColumn() last_name = orb.StringColumn() addresses = orb.ReverseLookup(from_column='Address.user') preferences = orb.ReverseLookup(from_column='Preference.user', flags={'Unique'}) groups = orb.Pipe(through_path='GroupUser.user.group') byUsername = orb.Index(columns=['username'], flags={'Unique'}) byName = orb.Index(columns=['first_name', 'last_name'])
class TestAllColumns(orb.Table): Test = enum('Ok') # boolean bool = orb.BooleanColumn() # data binary = orb.BinaryColumn() json = orb.JSONColumn() query = orb.QueryColumn() yaml = orb.YAMLColumn() # datetime date = orb.DateColumn() datetime = orb.DatetimeColumn() datetime_tz = orb.DatetimeWithTimezoneColumn() interval = orb.IntervalColumn() time = orb.TimeColumn() timestamp = orb.TimestampColumn() utc_datetime = orb.UTC_DatetimeColumn() utc_timestamp = orb.UTC_TimestampColumn() # numeric id = orb.IdColumn() decimal = orb.DecimalColumn(scale=2) float = orb.FloatColumn() integer = orb.IntegerColumn() long = orb.LongColumn() enum = orb.EnumColumn() # reference reference = orb.ReferenceColumn(reference='TestReference') # string string = orb.StringColumn() text = orb.TextColumn() color = orb.ColorColumn() directory = orb.DirectoryColumn() email = orb.EmailColumn() filepath = orb.FilepathColumn() html = orb.HtmlColumn() password = orb.PasswordColumn(default='T3st1ng!') token = orb.TokenColumn() url = orb.UrlColumn() xml = orb.XmlColumn()
class User(orb.Table): __resource__ = True id = orb.IdColumn() username = orb.StringColumn(flags={'Required'}) password = orb.StringColumn(flags={'Required', 'Private'}) groups = orb.Pipe(through_path='GroupUser.user.group') addresses = orb.ReverseLookup(from_column='Address.user') byUsername = orb.Index(columns=['username'], flags={'Unique'}) @classmethod @action(method='get') def run(cls, request): return 'user run model' @action(method='get', name='run') def run_record(self, request): return 'user run record' @classmethod @action(method='post', name='exec') def run_post_model(self, request): return 'user exec post model' @action(method='delete', name='run') def run_delete(self, request): return 'user run delete record' @action(method='patch', name='run') def run_patch(self, request): return 'user run patch record' @action(method='put', name='run') def run_put(self, request): return 'user run put record'
class User(orb.Table): __resouce__ = True id = orb.IdColumn() username = orb.StringColumn(flags={'Unique'}) password = orb.PasswordColumn() token = orb.TokenColumn() groups = orb.Pipe(through='GroupUser', from_='user', to='group') userGroups = orb.ReverseLookup(from_column='GroupUser.user') @orb.virtual(orb.BooleanColumn) def hasGroups(self, **context): return len(self.get('groups')) != 0 @orb.virtual(orb.Collector, model='Group') def myGroups(self, **context): group_ids = GroupUser.select( where=orb.Query('user') == self).values('group') context['where'] = orb.Query('id').in_(group_ids) & context.get( 'where') return Group.select(**context) byUsername = orb.Index(columns=['username'], flags={'Unique'})
class Comment(orb.Table): id = orb.IdColumn(type='hash') text = orb.TextColumn() attachments = orb.ReverseLookup(from_column='Attachment.comment', flags={'AutoExpand'})
class Document(orb.Table): id = orb.IdColumn() title = orb.StringColumn(flags={'I18n'}) description = orb.TextColumn(flags={'I18n'})
class Preference(orb.Table): id = orb.IdColumn() user = orb.ReferenceColumn(reference='User', flags={'Unique'}) notifications_enabled = orb.BooleanColumn()
class Role(orb.Table): id = orb.IdColumn() name = orb.StringColumn()
class GroupUser(orb.Table): id = orb.IdColumn() user = orb.ReferenceColumn(reference='User') group = orb.ReferenceColumn(reference='Group')
class Dependency(orb.Table): id = orb.IdColumn() source = orb.ReferenceColumn(reference='Asset') target = orb.ReferenceColumn(reference='Asset')
class Attachment(orb.Table): id = orb.IdColumn(type='hash') filename = orb.StringColumn() comment = orb.ReferenceColumn(reference='Comment', flags={'Required'})
class ProjectSupervisor(orb.Table): id = orb.IdColumn() project = orb.ReferenceColumn(reference='Project') user = orb.ReferenceColumn(reference='User')
class TestReference(orb.Table): id = orb.IdColumn()