quick fix sudo installer put file in /root/ bug
[rainbowstream.git] / rainbowstream / draw.py
index 8bd0c50cd759cb11c0fb57affa2ed1c44ff7246f..3bf392076185dc969a1adad6a63e657991af5515 100644 (file)
@@ -112,35 +112,47 @@ def show_calendar(month, date, rel):
 
 
 def check_config():
-   """
-   Check if config is changed
-   """
-   changed = False
-   data = get_all_config()
-   for key in data:
-       if data[key] != c[key]:
-           changed = True
-   if changed:
-       reload_config()
+    """
+    Check if config is changed
+    """
+    changed = False
+    data = get_all_config()
+    for key in c:
+        if key in data:
+            if data[key] != c[key]:
+                changed = True
+    if changed:
+        reload_config()
+
+
+def validate_theme(theme):
+    """
+    Validate a theme exists or not
+    """
+    # Theme changed check
+    files = os.listdir(os.path.dirname(__file__) + '/colorset')
+    themes = [f.split('.')[0] for f in files if f.split('.')[-1] == 'json']
+    return theme in themes
 
 
-def check_theme():
+def reload_theme(current_config):
     """
     Check current theme and update if necessary
     """
     exists = db.theme_query()
     themes = [t.theme_name for t in exists]
-    if c['THEME'] != themes[0]:
-        c['THEME'] = themes[0]
+    if current_config != themes[0]:
         config = os.path.dirname(
-            __file__) + '/colorset/' + c['THEME'] + '.json'
+            __file__) + '/colorset/' + current_config + '.json'
         # Load new config
         data = load_config(config)
         if data:
             for d in data:
                 c[d] = data[d]
-        # Re-init color cycle
-        g['cyc'] = init_cycle()
+        # Restart color cycle and update db/config
+        start_cycle()
+        db.theme_update(current_config)
+        set_config('THEME', current_config)
 
 
 def color_func(func_name):
@@ -152,13 +164,13 @@ def color_func(func_name):
     return globals()[func_name]
 
 
-def draw(t, iot=False, keyword=None, check_semaphore=False, fil=[], ig=[]):
+def draw(t, keyword=None, check_semaphore=False, fil=[], ig=[]):
     """
     Draw the rainbow
     """
 
-    check_theme()
     check_config()
+    reload_theme(c['THEME'])
     # Retrieve tweet
     tid = t['id']
     text = t['text']
@@ -250,8 +262,8 @@ def draw(t, iot=False, keyword=None, check_semaphore=False, fil=[], ig=[]):
         if roj:
             occur = roj.group()
             ary = tweet.split(occur)
-            delimeter = color_func(c['TWEET']['keyword'])(occur)
-            tweet = delimeter.join(ary)
+            delimiter = color_func(c['TWEET']['keyword'])(occur)
+            tweet = delimiter.join(ary)
 
     # Draw rainbow
     line1 = u"{u:>{uw}}:".format(
@@ -276,7 +288,7 @@ def draw(t, iot=False, keyword=None, check_semaphore=False, fil=[], ig=[]):
     printNicely(line3)
 
     # Display Image
-    if iot and media_url:
+    if c['IMAGE_ON_TERM'] and media_url:
         for mu in media_url:
             try:
                 response = requests.get(mu)
@@ -337,7 +349,7 @@ def print_message(m):
     printNicely(line3)
 
 
-def show_profile(u, iot=False):
+def show_profile(u):
     """
     Show a profile
     """
@@ -410,7 +422,7 @@ def show_profile(u, iot=False):
     # Display
     printNicely('')
     printNicely(line1)
-    if iot:
+    if c['IMAGE_ON_TERM']:
         try:
             response = requests.get(profile_image_url)
             image_to_display(BytesIO(response.content), 2, 20)