Skip to content

Commit

Permalink
Merge pull request #242 from mitmedialab/dsjen/tidy-models
Browse files Browse the repository at this point in the history
Remove political registration from user model, echo_range from settings
  • Loading branch information
dsjen authored Apr 24, 2019
2 parents 2acd63d + 75db2b8 commit b2a1bf9
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 21 deletions.
29 changes: 29 additions & 0 deletions migrations/versions/1266f69d6574_remove_politics_registration.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""
Removes politics registration from user model and echo range from settings
Revision ID: 1266f69d6574
Revises: 8fe786843072
Create Date: 2019-04-24 11:12:10.724450
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import postgresql

# revision identifiers, used by Alembic.
revision = '1266f69d6574'
down_revision = '8fe786843072'
branch_labels = None
depends_on = None


def upgrade():
op.drop_column('user_settings', 'echo_range')
op.drop_column('users', 'political_affiliation')
op.drop_column('users', 'completed_registration')


def downgrade():
op.add_column('users', sa.Column('completed_registration', sa.BOOLEAN(), autoincrement=False, nullable=True))
op.add_column('users', sa.Column('political_affiliation', postgresql.ENUM(u'left', u'center_left', u'center', u'center_right', u'right', name='politicsenum'), autoincrement=False, nullable=True))
op.add_column('user_settings', sa.Column('echo_range', postgresql.ENUM(u'narrow', u'mid_narrow', u'mid', u'mid_wide', u'wide', name='echorangeenum'), autoincrement=False, nullable=True))
14 changes: 0 additions & 14 deletions server/enums.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
import enum

# class EnumEncoder(json.JSONEncoder):
# def default(self, obj):
# if isinstance(obj, enum.Enum):
# return obj.name
# return json.JSONEncoder.default(self, obj)


class GenderEnum(enum.Enum):
female = 1
Expand All @@ -27,11 +21,3 @@ class PoliticsEnum(enum.Enum):
center = 3
center_right = 4
right = 5


class EchoRangeEnum(enum.Enum):
narrow = 0
mid_narrow = 1
mid = 2
mid_wide = 3
wide = 4
10 changes: 3 additions & 7 deletions server/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from sqlalchemy.ext.hybrid import hybrid_property

from server.core import db, bcrypt
from server.enums import GenderEnum, PoliticsEnum, EchoRangeEnum
from server.enums import GenderEnum, PoliticsEnum

post_associations_table = db.Table('posts_associations', db.metadata,
db.Column('user_id', db.Integer, db.ForeignKey('users.id')),
Expand All @@ -23,7 +23,6 @@ class User(db.Model):
email = db.Column(db.String(255), unique=True, nullable=False)
_password = db.Column('password', db.String(255), nullable=False)
registered_on = db.Column(db.DateTime, nullable=False)
completed_registration = db.Column(db.Boolean, default=True)

last_login = db.Column(db.DateTime, nullable=True)
last_post_fetch = db.Column(db.DateTime, nullable=True)
Expand All @@ -49,8 +48,6 @@ class User(db.Model):
twitter_data = db.Column(db.JSON)
facebook_data = db.Column(db.JSON)

political_affiliation = db.Column(db.Enum(PoliticsEnum), default=PoliticsEnum.center)

posts = db.relationship("Post", secondary=post_associations_table, lazy='dynamic')
settings = db.relationship("Settings", uselist=False, back_populates="user")
rule_associations = db.relationship("UserRule", back_populates="user", cascade="delete, delete-orphan")
Expand Down Expand Up @@ -95,7 +92,7 @@ def get_last_post_fetch(self):

def get_names(self):
d = {c.name: getattr(self, c.name) for c in self.__table__.columns if c.name not in [
'password', 'id', 'posts', 'settings', 'facebook_data', 'political_affiliation']}
'password', 'id', 'posts', 'settings', 'facebook_data']}
d['mastodon_name'] = ''
d['mastodon_domain'] = ''
if self.mastodon_auth:
Expand Down Expand Up @@ -229,15 +226,14 @@ class Settings(db.Model):
virality_max = db.Column(db.Float, db.CheckConstraint('virality_max<=1'), default=1)
seriousness_min = db.Column(db.Float, db.CheckConstraint('seriousness_min>=0'), default=0)
seriousness_max = db.Column(db.Float, db.CheckConstraint('seriousness_max<=1'), default=1)
echo_range = db.Column(db.Enum(EchoRangeEnum), default=EchoRangeEnum.narrow)
politics_levels = db.Column(ARRAY(db.Integer))

rudeness_ck = db.CheckConstraint('rudeness_max>rudeness_min')
virality_ck = db.CheckConstraint('virality_max>virality_min')
seriousness_ck = db.CheckConstraint('seriousness_max>seriousness_min')

def as_dict(self):
d = {c.name: getattr(self, c.name) for c in self.__table__.columns if c.name != 'echo_range'}
d = {c.name: getattr(self, c.name) for c in self.__table__.columns}
return d

def update(self, settings_dict):
Expand Down

0 comments on commit b2a1bf9

Please sign in to comment.