duplicate matrixroom table with new constraint
This commit is contained in:
parent
50dff7a634
commit
9e8a6bd123
4 changed files with 63 additions and 5 deletions
|
@ -30,7 +30,7 @@ def on_receive_events(transaction):
|
|||
|
||||
embed = None
|
||||
|
||||
chan = MatrixRoom.query.filter_by(room_id=event['room_id']).first()
|
||||
chan = MatrixRoom2.query.filter_by(room_id=event['room_id']).first()
|
||||
if chan:
|
||||
chan_id = chan.pnut_chan
|
||||
else:
|
||||
|
@ -170,8 +170,14 @@ def on_receive_events(transaction):
|
|||
@app.route("/rooms/<alias>")
|
||||
def query_alias(alias):
|
||||
alias_localpart = alias.split(":")[0][1:]
|
||||
try:
|
||||
channel_id = int(alias_localpart.split('_')[1])
|
||||
|
||||
# prevent room from being created if channel is already plumbed
|
||||
chroom = MatrixRoom2.query.filter_by(pnut_chan=channel_id).first()
|
||||
if chroom:
|
||||
abort(404)
|
||||
|
||||
try:
|
||||
r = requests.get('https://api.pnut.io/v0/channels/' + str(channel_id) + '?include_raw=1')
|
||||
if r.status_code == 200:
|
||||
cdata = json.loads(r.text)['data']
|
||||
|
@ -208,7 +214,7 @@ def query_alias(alias):
|
|||
|
||||
if resp.status_code == 200:
|
||||
room_id = json.loads(resp.text)['room_id']
|
||||
mro = MatrixRoom(room_id, channel_id, cdata['acl']['write']['any_user'])
|
||||
mro = MatrixRoom2(room_id, channel_id, cdata['acl']['write']['any_user'])
|
||||
db.session.add(mro)
|
||||
db.session.commit()
|
||||
|
||||
|
|
37
migrations/versions/744f11d26259_.py
Normal file
37
migrations/versions/744f11d26259_.py
Normal file
|
@ -0,0 +1,37 @@
|
|||
"""empty message
|
||||
|
||||
Revision ID: 744f11d26259
|
||||
Revises: f878073e1b4a
|
||||
Create Date: 2017-05-25 09:51:32.238059
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '744f11d26259'
|
||||
down_revision = 'f878073e1b4a'
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.create_table('matrix_room2',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('room_id', sa.Text(), nullable=True),
|
||||
sa.Column('pnut_chan', sa.Text(), nullable=True),
|
||||
sa.Column('pnut_since', sa.Text(), nullable=True),
|
||||
sa.Column('pnut_write', sa.Boolean(), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('pnut_chan'),
|
||||
sa.UniqueConstraint('room_id')
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('matrix_room2')
|
||||
# ### end Alembic commands ###
|
15
models.py
15
models.py
|
@ -33,6 +33,21 @@ class MatrixRoom(db.Model):
|
|||
def __repr__(self):
|
||||
return '<MatrixRoom %r>' % self.room_id
|
||||
|
||||
class MatrixRoom2(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
room_id = db.Column(db.Text, unique=True)
|
||||
pnut_chan = db.Column(db.Text, unique=True)
|
||||
pnut_since = db.Column(db.Text)
|
||||
pnut_write = db.Column(db.Boolean, default=True)
|
||||
|
||||
def __init__(self, room_id, pnut_chan, pnut_write=True):
|
||||
self.room_id = room_id
|
||||
self.pnut_chan = pnut_chan
|
||||
self.pnut_write = pnut_write
|
||||
|
||||
def __repr__(self):
|
||||
return '<MatrixRoom %r>' % self.room_id
|
||||
|
||||
class MatrixMsgEvents(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
event_id = db.Column(db.Text)
|
||||
|
|
|
@ -172,10 +172,10 @@ class ChannelMonitor(threading.Thread):
|
|||
def run(self):
|
||||
logging.info("-- Starting channel monitor --")
|
||||
app.app_context().push()
|
||||
rooms = MatrixRoom.query.all()
|
||||
rooms = MatrixRoom2.query.all()
|
||||
self.txId = int(rooms[0].pnut_since)
|
||||
while not _shutdown.isSet():
|
||||
rooms = MatrixRoom.query.all()
|
||||
rooms = MatrixRoom2.query.all()
|
||||
for r in rooms:
|
||||
self.poll_channel(r)
|
||||
time.sleep(15)
|
||||
|
|
Loading…
Reference in a new issue