示例#1
0
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)
示例#2
0
 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)
示例#3
0
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")
示例#4
0
 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
示例#5
0
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)
示例#6
0
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
示例#9
0
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
        }
示例#10
0
 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)
示例#11
0
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)
示例#12
0
            class Base(models.Model):

                partition = columns.Integer(primary_key=True)
                type1 = columns.Set(columns.Integer, polymorphic_key=True)