Skip to content

Commit

Permalink
API upgraded for tags fontman/fontman-desktop#39
Browse files Browse the repository at this point in the history
  • Loading branch information
lpsandaruwan committed Feb 8, 2017
1 parent 8cc99e3 commit 6691ae4
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 1 deletion.
30 changes: 30 additions & 0 deletions blueprint/tags_controller.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
""" Tags controller
REST blueprint for font tags.
Created by Lahiru Pathirage @ Mooniak <lpsandaruwan@gmail.com> on 8/2/2017
"""

from flask import Blueprint, jsonify, request

from service import TagService

tags_blueprint = Blueprint("tags_blueprint", __name__)


@tags_blueprint.route("/tags/<font_id>")
def find_tags_by_font_id(font_id):
response_data = []
tags = TagService().find_by_font_id(font_id)

for tag in tags:
response_data.append(
{
"tag_id": tag.tag_id,
"font_id": tag.font_id,
"key": tag.key,
"value": tag.value
}
)

return response_data
22 changes: 22 additions & 0 deletions model/Tag.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
""" Tag
Keeps tags on more information of fonts.
Eg: languages, serif/sans-serif...
Created by Lahiru Pathirage @ Mooniak<lpsandaruwan@gmail.com> on 8/2/2017
"""

from sqlalchemy import Column, ForeignKey, Integer
from sqlalchemy import String

from session import Base


class Tag(Base):

__tablename__ = "tag"

tag_id = Column(Integer, primary_key=True)
font_id = Column(Integer, ForeignKey("font.font_id"), nullable=False)
key = Column(String(20), nullable=False)
value = Column(String(20), nullable=False)
1 change: 1 addition & 0 deletions model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
from model.Metadata import Metadata
from model.Rating import Rating
from model.Role import Role
from model.Tag import Tag
from model.Team import Team
from model.User import User
50 changes: 50 additions & 0 deletions service/TagService.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
""" Tags service
High level functions to manipulate tags table.
Created by Lahiru Pathirage @ Mooniak<lpsandaruwan@gmail.com> on 4/1/2017
"""

from model import Tag
from session import DBSession


class TagService:

def __init__(self):
self.__db_session = DBSession()

def add_new(self, font_id, key, value):
new_tag = Tag(
font_id=font_id,
key = key,
value=value
)

self.__db_session.add(new_tag)
self.__db_session.commit()

return new_tag

def delete_by_font_id(self, font_id):
self.find_by_font_id(font_id).delete()
self.__db_session.commit()

def find_by_font_id(self, font_id):
return self.__db_session.query(Tag).filter_by(font_id=font_id)

def find_by_key(self,key):
return self.__db_session.query(Tag).filter_by(key=key)

def find_by_tag_id(self, tag_id):
return self.__db_session.query(Tag).filter_by(tag_id=tag_id)

def find_by_value(self, value):
return self.__db_session.query(Tag).filter_by(value=value)

def find_by_key_value(self, key, value):
return self.__db_session.query(Tag).filter_by(key=key, value=value)

def update_by_font_id(self, tag_id, update_data):
self.find_by_tag_id(tag_id).update(update_data)
self.__db_session.commit()
1 change: 1 addition & 0 deletions service/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
from service.MetadataService import MetadataService
from service.RatingService import RatingService
from service.RoleService import RoleService
from service.TagService import TagService
from service.TeamService import TeamService
from service.UserService import UserService
2 changes: 1 addition & 1 deletion utility/Initializer.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def initialize():
engine = create_engine(
mysql_con_string
)
Base.metadata.create_all(engine)
Base.metadata.create_all(engine, checkfirst=True)

ChannelService().add_new(
"Fontman", "Public"
Expand Down

0 comments on commit 6691ae4

Please sign in to comment.