Add tracker labels endpoint

This commit is contained in:
Drew DeVault 2019-05-09 11:34:55 -04:00
parent 0b27d4285c
commit 0b70b847be
3 changed files with 28 additions and 2 deletions

View File

@ -35,7 +35,7 @@ class MailHandler:
# u.username.tracker.1234@todo.sr.ht
address = address[:address.rfind("@")]
# TODO: Subscribe to trackers & tickets via email
ticket_id = None, None
ticket_id = None
if address.startswith("~"):
# TODO: user groups
parts = address.split("/")

View File

@ -5,7 +5,7 @@ from srht.oauth import oauth, current_token
from srht.validation import Validation
from todosrht.access import get_tracker
from todosrht.blueprints.api import get_user
from todosrht.types import Tracker, TicketAccess
from todosrht.types import Label, Tracker, TicketAccess
trackers = Blueprint("api.trackers", __name__)
@ -76,3 +76,16 @@ def user_tracker_by_name_DELETE(username, tracker_name):
db.session.delete(tracker)
db.session.commit()
return {}, 204
@trackers.route("/api/user/<username>/trackers/<tracker_name>/labels")
@trackers.route("/api/trackers/<tracker_name>/labels", defaults={"username": None})
@oauth("trackers:read")
def trakcer_labels_GET(username, tracker_name):
user = get_user(username)
tracker, access = get_tracker(user, tracker_name, user=current_token.user)
if not tracker:
abort(404)
if not TicketAccess.browse in access:
abort(401)
labels = Label.query.filter(Label.tracker_id == tracker.id)
return paginated_response(Label.id, labels)

View File

@ -28,6 +28,19 @@ class Label(Base):
def __repr__(self):
return '<Label {} {}>'.format(self.id, self.name)
def to_dict(self, short=False):
return {
"name": self.name,
"colors": {
"background": self.color,
"text": self.text_color,
},
**({
"created": self.created,
"tracker": self.tracker.to_dict(short=True),
} if not short else {})
}
class TicketLabel(Base):
__tablename__ = 'ticket_label'
ticket_id = sa.Column(sa.Integer,