Add events for labels, show in events list
This commit is contained in:
parent
de0137a0b0
commit
fc8a1acacd
|
@ -0,0 +1,24 @@
|
|||
"""Link event to label
|
||||
|
||||
Revision ID: a8cb241798dc
|
||||
Revises: cf222857edec
|
||||
Create Date: 2018-10-18 16:21:54.739215
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'a8cb241798dc'
|
||||
down_revision = 'cf222857edec'
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column('event', sa.Column('label_id', sa.Integer(), nullable=True))
|
||||
op.create_foreign_key(None, 'event', 'label', ['label_id'], ['id'])
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_constraint(None, 'event', type_='foreignkey')
|
||||
op.drop_column('event', 'label_id')
|
|
@ -335,7 +335,14 @@ def ticket_add_label(owner, name, ticket_id):
|
|||
ticket_label.label_id = label.id
|
||||
ticket_label.user_id = current_user.id
|
||||
|
||||
event = Event()
|
||||
event.event_type = EventType.label_added
|
||||
event.user_id = current_user.id
|
||||
event.ticket_id = ticket.id
|
||||
event.label_id = label.id
|
||||
|
||||
db.session.add(ticket_label)
|
||||
db.session.add(event)
|
||||
db.session.commit()
|
||||
|
||||
return redirect(url_for("ticket.ticket_GET",
|
||||
|
@ -364,6 +371,13 @@ def ticket_remove_label(owner, name, ticket_id, label_id):
|
|||
.filter(TicketLabel.ticket_id == ticket.id)).first()
|
||||
|
||||
if ticket_label:
|
||||
event = Event()
|
||||
event.event_type = EventType.label_removed
|
||||
event.user_id = current_user.id
|
||||
event.ticket_id = ticket.id
|
||||
event.label_id = label.id
|
||||
|
||||
db.session.add(event)
|
||||
db.session.delete(ticket_label)
|
||||
db.session.commit()
|
||||
|
||||
|
|
|
@ -398,8 +398,9 @@ def delete_label(owner, name, label_id):
|
|||
if not label:
|
||||
abort(404)
|
||||
|
||||
# Remove label from any linked tickets
|
||||
# Remove label from any linked tickets and related events
|
||||
TicketLabel.query.filter(TicketLabel.label_id == label.id).delete()
|
||||
Event.query.filter(Event.label_id == label.id).delete()
|
||||
|
||||
db.session.delete(label)
|
||||
db.session.commit()
|
||||
|
|
|
@ -21,6 +21,16 @@
|
|||
<a href="/~{{ event.comment.submitter.username }}">
|
||||
~{{ event.comment.submitter.username }}
|
||||
</a>
|
||||
{% elif EventType.label_added in event.event_type %}
|
||||
Label {{ event.label|label_badge(cls="small") }} added by
|
||||
<a href="/~{{ event.user.username }}">
|
||||
~{{ event.user.username }}
|
||||
</a>
|
||||
{% elif EventType.label_removed in event.event_type %}
|
||||
Label {{ event.label|label_badge(cls="small") }} removed by
|
||||
<a href="/~{{ event.user.username }}">
|
||||
~{{ event.user.username }}
|
||||
</a>
|
||||
{% endif %}
|
||||
on <a href="{{ url_for("html.user_GET",
|
||||
username=event.ticket.tracker.owner.username) }}"
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import sqlalchemy as sa
|
||||
import sqlalchemy_utils as sau
|
||||
from srht.flagtype import FlagType
|
||||
from srht.database import Base
|
||||
from todosrht.types.ticketstatus import TicketStatus, TicketResolution
|
||||
|
@ -9,6 +8,8 @@ class EventType(IntFlag):
|
|||
created = 1
|
||||
comment = 2
|
||||
status_change = 4
|
||||
label_added = 8
|
||||
label_removed = 16
|
||||
|
||||
class Event(Base):
|
||||
"""
|
||||
|
@ -35,6 +36,9 @@ class Event(Base):
|
|||
comment_id = sa.Column(sa.Integer, sa.ForeignKey("ticket_comment.id"))
|
||||
comment = sa.orm.relationship("TicketComment")
|
||||
|
||||
label_id = sa.Column(sa.Integer, sa.ForeignKey('label.id'))
|
||||
label = sa.orm.relationship("Label", backref=sa.orm.backref("events"))
|
||||
|
||||
def __repr__(self):
|
||||
return '<Event {}>'.format(self.id)
|
||||
|
||||
|
|
Loading…
Reference in New Issue