Skip to content

Commit

Permalink
Remodified APIs and functions for new simplified UX fontman/fontman-d…
Browse files Browse the repository at this point in the history
  • Loading branch information
lpsandaruwan committed Feb 15, 2017
1 parent 29f2fff commit 547be58
Show file tree
Hide file tree
Showing 16 changed files with 176 additions and 266 deletions.
84 changes: 14 additions & 70 deletions blueprint/fonts_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,12 @@
Created by Lahiru Pathirage @ Mooniak<lpsandaruwan@gmail.com> on 6/1/2017
"""

from consumer import FontsConsumer
from service import FontFaceService
from service import FontService
from service import LanguageService
from service import MetadataService
from utility import FontManager

import time
from flask import Blueprint, jsonify, request

fonts_blueprint = Blueprint("fonts_blueprint", __name__)
Expand All @@ -23,33 +22,34 @@ def find_all_fonts():
fonts = FontService().find_all()

for font in fonts:
metadata = MetadataService().find_by_font_id(font.font_id)
fontfaces = FontFaceService().find_by_font_id(font.font_id)
languages = LanguageService().find_by_font_id(font.font_id)

fontfaces_list = []
regular_fontface = None
languages_list = []

for fontface in fontfaces:
if "regular" in fontface.fontface.lower():
regular_fontface = fontface.fontface

fontfaces_list.append(
{
"fontface": fontface.fontface,
"resource_path": fontface.resource_path
}
)

for language in languages:
languages_list.append(language.language)

response_data.append(
{
"font_id": font.font_id,
"channel_id": font.channel_id,
"chosen": font.is_chosen,
"default_fontface": metadata.default_fontface,
"displayText": font.name,
"fontfaces": fontfaces_list,
"is_installed": font.is_installed,
"name": font.name,
"selectedFontface": regular_fontface,
"type": font.type,
"is_upgradable": font.is_upgradable
"is_upgradable": font.is_upgradable,
"name": font.name
}
)

Expand All @@ -64,51 +64,9 @@ def find_chosen_fonts_status():
return jsonify(True)


@fonts_blueprint.route("/fonts/<font_id>")
def find_by_font_id(font_id):
font = FontService().find_by_font_id(font_id).first()
return jsonify(
{
"font_id": font.font_id,
"channel_id": font.channel_id,
"is_installed": font.is_installed,
"name": font.name,
"type": font.type,
"is_upgradable": font.is_upgradable
}
)


@fonts_blueprint.route("/fonts/<font_id>/releases")
def find_tags_by_font_id(font_id):
response = []
rel_info = FontsConsumer().consume_releases(font_id)

for release in rel_info:
response.append(
{
"id": release["id"],
"tag_name": release["tag_name"]
}
)

return jsonify(response)


@fonts_blueprint.route("/fonts/<font_id>/install/<rel_id>")
def install_font_by_font_id(font_id, rel_id):
response = FontManager().install_font(font_id, rel_id)
return jsonify(response)


@fonts_blueprint.route("/fonts/<font_id>/reinstall/<rel_id>")
def reinstall_font_by_font_id(font_id, rel_id):
response = False

if FontManager().remove_font(font_id):
time.sleep(0.5)
response = FontManager().install_font(font_id, rel_id)

@fonts_blueprint.route("/fonts/<font_id>/install")
def install_font_by_font_id(font_id):
response = FontManager().install_font(font_id)
return jsonify(response)


Expand Down Expand Up @@ -157,20 +115,6 @@ def find_by_query():
return jsonify({"error": "Invalid request"})


@fonts_blueprint.route("/fonts/<font_id>/metadata")
def find_metadata_by_font_id(font_id):
metadata = MetadataService().find_by_font_id(font_id).first()

return jsonify(
{
"metadata_id": metadata.metadata_id,
"font_id": metadata.font_id,
"latest_tag_url": metadata.latest_tag_url,
"tags_url": metadata.tags_url
}
)


@fonts_blueprint.route("/fonts/update", methods=["POST"])
def update_all_fonts():
json_data = request.json
Expand Down
40 changes: 0 additions & 40 deletions consumer/FontsConsumer.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
Created by Lahiru Pathirage @ Mooniak<lpsandaruwan@gmail.com> on 5/1/2017
"""

from service import MetadataService
from session import api_base_url

import json, requests
Expand All @@ -20,42 +19,3 @@ def consume_all_fonts(self):
def consume_by_font_id(self, font_id):
response = requests.get(api_base_url + "/fonts/" + str(font_id))
return json.loads(response.text)

def consume_by_query(self, team_id="", type=""):
query_string = "/?"

if team_id is not "":
query_string += "team_id=" + str(team_id) + "&"

if type is not "":
query_string += "type=" + type + "&"

response = requests.get(
api_base_url + "/fonts" + query_string
)
return json.loads(response.text)

def consume_metadata_by_font_id(self, font_id):
response = requests.get(
api_base_url + "/fonts/" + str(font_id) + "/metadata"
)
return json.loads(response.text)

def consume_latest_rel_info(self, font_id):
response = json.loads(requests.get(
api_base_url + "/fonts/" + str(font_id) + "/latest"
))
return json.loads(requests.get(response["rel_info_url"]))

def consume_rel_info(self, font_id, rel_id):
response = json.loads(requests.get(
api_base_url + "/fonts/" + str(font_id) + "/releases/" + str(rel_id)
).text)
return json.loads(requests.get(response["rel_info_url"]).text)

def consume_releases(self, font_id):
response = json.loads(requests.get(
MetadataService().find_by_font_id(font_id).first().tags_url
).text)
return response

2 changes: 1 addition & 1 deletion core-runnner.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def main():

if con is not 0:
if FileManager().is_file_exists("./data/fontman.db"):
# threading.Thread(target=run_tasks).start()
threading.Thread(target=run_tasks).start()
run_flask_app()

else:
Expand Down
5 changes: 1 addition & 4 deletions model/Font.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Basic font information.
Created by Lahiru Pathirage @ Mooniak<lpsandaruwan@gmail.com> on 2/12/2016
Created by Lahiru Pathirage <lpsandaruwan@gmail.com> on 2/12/2016
"""

from sqlalchemy import Boolean, Column, Integer, String
Expand All @@ -15,10 +15,7 @@ class Font(Base):
__tablename__ = "font"

font_id = Column(Integer, primary_key=True)
channel_id = Column(Integer, nullable=False)
is_chosen = Column(Boolean, default=False)
is_installed = Column(Boolean, default=False)
is_upgradable = Column(Boolean, default=False)
name = Column(String(200), nullable=False)
type = Column(String(20), nullable=False)

1 change: 0 additions & 1 deletion model/FontFace.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ class FontFace(Base):
__tablename__ = "fontface"

fontface_id = Column(Integer, primary_key=True)
download_url = Column(String(250), nullable=False)
fontface = Column(String(100), nullable=False)
font_id = Column(Integer, ForeignKey("font.font_id"), nullable=False)
resource_path = Column(String(250), nullable=False)
19 changes: 19 additions & 0 deletions model/Language.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
""" Language
Languages of fonts.
Created by Lahiru Pathirage <lpsandaruwan@gmail.com> on 15/2/2017
"""

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

from session import Base


class Language(Base):

__tablename__ = "language"

tag_id = Column(Integer, primary_key=True)
font_id = Column(Integer, ForeignKey("font.font_id"), nullable=False)
language = Column(String(15), nullable=False)
6 changes: 4 additions & 2 deletions model/Metadata.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,7 @@ class Metadata(Base):

metadata_id = Column(Integer, primary_key=True)
font_id = Column(Integer, nullable=False)
latest_tag_url = Column(String(200), nullable=False)
tags_url = Column(String(200), nullable=False)
default_fontface = Column(String(50), nullable=False)
download_url = Column(String(200), nullable=True)
license = Column(String(50), nullable=False)
version = Column(String(20), nullable=True)
1 change: 1 addition & 0 deletions model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from model.FontFile import FontFile
from model.FontType import FontType
from model.InstalledFont import InstalledFont
from model.Language import Language
from model.Metadata import Metadata
from model.Profile import Profile
from model.Role import Role
Expand Down
3 changes: 1 addition & 2 deletions service/FontFaceService.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,10 @@
class FontFaceService:

def add_new(
self, fontface_id, download_url, font_id, fontface, resource_path
self, fontface_id, font_id, fontface, resource_path
):
new_fontface = FontFace(
fontface_id=fontface_id,
download_url=download_url,
font_id=font_id,
fontface=fontface,
resource_path=resource_path
Expand Down
24 changes: 10 additions & 14 deletions service/FontService.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Basic font information service.
Created by Lahiru Pathirage @ Mooniak<lpsandaruwan@gmail.com> on 2/12/2016
Created by Lahiru Pathirage <lpsandaruwan@gmail.com> on 2/12/2016
"""

from model import Font
Expand All @@ -11,15 +11,13 @@

class FontService:

def add_new(self, font_id, channel_id, name, type):
def add_new(self, font_id, name):
new_font = Font(
font_id=font_id,
channel_id = channel_id,
is_chosen = False,
is_installed=False,
is_upgradable=False,
name=name,
type=type,
name=name
)

db_session.add(new_font)
Expand Down Expand Up @@ -52,16 +50,14 @@ def find_by_font_id(self, font_id):
return db_session.query(Font).filter_by(font_id=font_id)

def is_exists_by_font_id(self, font_id):
try:
if self.find_by_font_id(font_id).one() is not None:
return True
except:
if self.find_by_font_id(font_id).first() is None:
return False
else:
return True

def update_all(self, update_list):
self.find_all().update(update_list)
db_session.commit()
def update_all(self, update_data):
self.find_all().update(update_data)

def update_by_font_id(self, font_id, update_list):
self.find_by_font_id(font_id).update(update_list)
def update_by_font_id(self, font_id, update_data):
self.find_by_font_id(font_id).update(update_data)
db_session.commit()
30 changes: 30 additions & 0 deletions service/LanguageService.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
""" Language service
High level functions to manipulate language table.
"""


from model import Language
from session import db_session


class LanguageService:

def add_new(self, tag_id, font_id, language):
new_tag = Language(
tag_id=tag_id,
font_id=font_id,
language=language
)

db_session.add(new_tag)
db_session.commit()

return new_tag

def find_all(self):
db_session.query(Language).all()

def find_by_font_id(self, font_id):
return db_session.query(Language).filter_by(font_id=font_id)
Loading

0 comments on commit 547be58

Please sign in to comment.