Skip to content

Commit 913cf7e

Browse files
committed
Merge pull request #3120 from hypothesis/remove-user-status-bitfield
Remove user status bitfield
2 parents c6f6faa + 2370460 commit 913cf7e

File tree

3 files changed

+24
-48
lines changed

3 files changed

+24
-48
lines changed

h/accounts/models.py

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ def username(self):
103103
self._set_username))
104104

105105
email = sa.Column(sa.UnicodeText(), nullable=False, unique=True)
106-
status = sa.Column(sa.Integer())
107106

108107
last_login_date = sa.Column(sa.TIMESTAMP(timezone=False),
109108
default=datetime.datetime.utcnow,
@@ -216,51 +215,6 @@ def get_by_username(cls, username):
216215
uid = _username_to_uid(username)
217216
return cls.query.filter(cls.uid == uid).first()
218217

219-
# TODO: remove all this status bitfield stuff
220-
@property
221-
def email_confirmed(self):
222-
return bool((self.status or 0) & 0b001)
223-
224-
@email_confirmed.setter
225-
def email_confirmed(self, value):
226-
if value:
227-
self.status = (self.status or 0) | 0b001
228-
else:
229-
self.status = (self.status or 0) & ~0b001
230-
231-
@property
232-
def optout(self):
233-
return bool((self.status or 0) & 0b010)
234-
235-
@optout.setter
236-
def optout(self, value):
237-
if value:
238-
self.status = (self.status or 0) | 0b010
239-
else:
240-
self.status = (self.status or 0) & ~0b010
241-
242-
@property
243-
def subscriptions(self):
244-
return bool((self.status or 0) & 0b100)
245-
246-
@subscriptions.setter
247-
def subscriptions(self, value):
248-
if value:
249-
self.status = (self.status or 0) | 0b100
250-
else:
251-
self.status = (self.status or 0) & ~0b100
252-
253-
@property
254-
def invited(self):
255-
return bool((self.status or 0) & 0b1000)
256-
257-
@invited.setter
258-
def invited(self, value):
259-
if value:
260-
self.status = (self.status or 0) | 0b1000
261-
else:
262-
self.status = (self.status or 0) & ~0b1000
263-
264218
@classmethod
265219
def admins(cls):
266220
"""Return a list of all admin users."""
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
"""Remove status column from user table
2+
3+
Revision ID: 0d4755a0d88b
4+
Revises: 2494fea98d2d
5+
Create Date: 2016-03-21 20:07:07.002482
6+
7+
"""
8+
9+
# revision identifiers, used by Alembic.
10+
revision = '0d4755a0d88b'
11+
down_revision = '2494fea98d2d'
12+
13+
from alembic import op
14+
import sqlalchemy as sa
15+
16+
17+
def upgrade():
18+
# Dropping a column is O(1) so this is safe to run against a production
19+
# database.
20+
op.drop_column('user', 'status')
21+
22+
23+
def downgrade():
24+
op.add_column('user', sa.Column('status', sa.Integer()))

h/notification/reply_template.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ def registration_subscriptions(event):
173173
request = event.request
174174
user_uri = 'acct:{}@{}'.format(event.user.username, request.domain)
175175
create_subscription(event.request, user_uri, True)
176-
event.user.subscriptions = True
177176

178177

179178
# For backwards compatibility, generate reply notification if not exists
@@ -185,7 +184,6 @@ def check_reply_subscriptions(event):
185184
types.REPLY_TYPE)
186185
if not len(res):
187186
create_subscription(event.request, user_uri, True)
188-
event.user.subscriptions = True
189187

190188

191189
def includeme(config):

0 commit comments

Comments
 (0)