class Events(Model): eventid = columns.Text(primary_key=True) url = columns.Text() title = columns.Text() description = columns.Text() start_time = columns.DateTime() stop_time = columns.DateTime() venue_id = columns.Text() venue_name = columns.Text() venue_address = columns.Text() city_name = columns.Text() region_name = columns.Text() postal_code = columns.Text() country_name = columns.Text() created = columns.DateTime() modified = columns.DateTime() links = columns.Map(columns.Text(), columns.Text()) categories = columns.Set(columns.Text()) tags = columns.Set(columns.Text()) images = columns.Set(columns.Text()) latitude = columns.Float() longitude = columns.Float() performers = columns.Set(columns.Text()) def __repr__(self): return '%s %s' % (self.eventid, self.title)
def test_instantiation_with_column_class(self): """ Tests that columns instantiated with a column class work properly and that the class is instantiated in the constructor """ column = columns.Set(columns.Text) assert isinstance(column.value_col, columns.Text)
class Discussion(MBase): id = columns.BigInt(primary_key=True) title = columns.Text(required=True) slug = columns.Text(required=True, index=True) user_id = columns.Integer(index=True) users = columns.Set(value_type=columns.Integer) post_id = columns.BigInt() last_message = columns.BigInt() published_at = columns.BigInt(default=unix_time(dt.utcnow())) topic_id = columns.Integer(required=False, index=True) def to_dict(self): return { 'id': unicode(self.id), 'title': self.title, 'slug': self.slug, 'user_id': self.user_id, 'post_id': unicode(self.post_id), 'last_message': unicode(self.last_message), 'published_at': epoch_to_date(self.published_at), 'topic_id': unicode(self.topic_id) if self.topic_id is not None else None, } @property def published_date(self): return epoch_to_date(self.published_at*1000) @property def published_date_str(self): d = epoch_to_date(self.published_at*1000) return d.strftime("%y%m%d %H%M%S")
def test_to_python(self): """ Tests that to_python of value column is called """ column = columns.Set(JsonTestColumn) val = {1, 2, 3} db_val = column.to_database(val) assert db_val.value == {json.dumps(v) for v in val} py_val = column.to_python(db_val.value) assert py_val == val
class TestQueryUpdateModel(Model): partition = columns.UUID(primary_key=True, default=uuid4) cluster = columns.Integer(primary_key=True) count = columns.Integer(required=False) text = columns.Text(required=False, index=True) text_set = columns.Set(columns.Text, required=False) text_list = columns.List(columns.Text, required=False) text_map = columns.Map(columns.Text, columns.Text, required=False)
class geo_tweet(Model): tweet_id = columns.UUID(primary_key=True, default=uuid.uuid4) created_at_year = columns.Integer(primary_key=True) created_at_month = columns.Integer(primary_key=True) created_at_day = columns.Integer(primary_key=True) created_at_time = columns.Integer(primary_key=True) status = columns.Text(required=True) hashtags = columns.Set(columns.Text()) author_user_name = columns.Text() author_image = columns.Text()
def test_update_from_empty(self): """ Tests that updating an empty list creates a straight insert statement """ ctx = {} col = columns.Set(columns.Integer, db_field="TEST") statements = col.get_update_statement({1, 2, 3, 4}, set(), ctx) #only one variable /statement should be generated assert len(ctx) == 1 assert len(statements) == 1 assert ctx.values()[0].value == {1, 2, 3, 4} assert statements[0] == '"TEST" = {{}}'.format(ctx.keys()[0])
def test_partial_update_creation(self): """ Tests that proper update statements are created for a partial set update :return: """ ctx = {} col = columns.Set(columns.Integer, db_field="TEST") statements = col.get_update_statement({1, 2, 3, 4}, {2, 3, 4, 5}, ctx) assert len([v for v in ctx.values() if {1} == v.value]) == 1 assert len([v for v in ctx.values() if {5} == v.value]) == 1 assert len([s for s in statements if '"TEST" = "TEST" -' in s]) == 1 assert len([s for s in statements if '"TEST" = "TEST" +' in s]) == 1
class Topic(MBase): id = columns.Integer(primary_key=True) slug = columns.Text() name = columns.Text() description = columns.Text() last_message_id = columns.BigInt(required=False) last_message_time = columns.BigInt(default=unix_time(dt.utcnow())) main_topic = columns.Boolean(default=False) parent_topic = columns.Integer(required=False) subtopics = columns.Set(value_type=columns.Integer) def to_dict(self): return { 'slug': self.slug, 'name': self.name }
def test_instantiation_with_column_instance(self): """ Tests that columns instantiated with a column instance work properly """ column = columns.Set(columns.Text(min_length=100)) assert isinstance(column.value_col, columns.Text)
class TestSetModel(Model): partition = columns.UUID(primary_key=True, default=uuid4) int_set = columns.Set(columns.Integer, required=False) text_set = columns.Set(columns.Text, required=False)
class Base(models.Model): partition = columns.Integer(primary_key=True) type1 = columns.Set(columns.Integer, polymorphic_key=True)