Guest User

Untitled

a guest
Aug 27th, 2018
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.26 KB | None | 0 0
  1. from kivy.app import App
  2. from kivy.uix.boxlayout import BoxLayout
  3. from kivy.properties import ObjectProperty, BooleanProperty
  4. from kivy.logger import Logger
  5. from kivy.clock import Clock
  6. from kivy.utils import platform
  7. from kivy.logger import Logger
  8.  
  9. # KivyMD stuff
  10. from kivymd.theming import ThemeManager
  11. from kivymd.snackbar import Snackbar
  12.  
  13. # Services
  14. from services.login import LoginProvider
  15.  
  16. # Components
  17. from components.navdrawer import OrganizerNavdrawer
  18.  
  19. # iOS imports
  20. if platform == "ios":
  21. from pyobjus import autoclass, objc_dict
  22.  
  23.  
  24. class OrganizerRoot(BoxLayout):
  25. login_provider = ObjectProperty(LoginProvider())
  26. logged_in = BooleanProperty(True)
  27. onesignal_object = ObjectProperty()
  28. Crashlytics = ObjectProperty()
  29. Fabric = ObjectProperty()
  30.  
  31. def __init__(self, **kwargs):
  32. super(OrganizerRoot, self).__init__(**kwargs)
  33. # List of screens for back button
  34. self.screen_list = []
  35. Clock.schedule_once(self.finish_init)
  36. if platform == "ios":
  37. Clock.schedule_once(self.finish_ios_init)
  38. elif platform == "android":
  39. Clock.schedule_once(self.finish_android_init)
  40.  
  41.  
  42. def finish_ios_init(self, *args):
  43. self.Crashlytics = autoclass("Crashlytics")
  44. self.Fabric = autoclass("Fabric").with_([self.Crashlytics])
  45. self.onesignal_object = autoclass("OneSignal")
  46. mock_launch_options = objc_dict({})
  47. self.onesignal_object.initWithLaunchOptions_appId_(mock_launch_options, "onesignal-appid-goes-here")
  48.  
  49.  
  50. def finish_android_init(self, *args):
  51. pass
  52.  
  53. def finish_init(self, *args):
  54. from screens.login_screen import LoginScreen
  55. self.ids.main_screen_manager.add_widget(LoginScreen(name="login_screen", id="login_screen"))
  56. from screens.dash_screen import DashScreen
  57. self.ids.main_screen_manager.add_widget(DashScreen(name="dash_screen", id="dash_screen"))
  58.  
  59. def next_page(self, neoscreen):
  60.  
  61. current_screen = self.ids.main_screen_manager.current
  62.  
  63. if current_screen == neoscreen:
  64. Logger.debug("Duplicate screen attempted: {}".format(current_screen))
  65. else:
  66. Logger.debug("New screen: {}".format(neoscreen))
  67. self.screen_list.append(current_screen)
  68. self.ids.main_screen_manager.current = neoscreen
  69.  
  70.  
  71. def login_user(self, username, password):
  72. self.login_provider.login(username=username, password=password, callbacks={
  73. "success": self.login_success,
  74. "failure": self.login_failed,
  75. "error": self.login_failed,
  76. })
  77.  
  78. def login_success(self, req, res):
  79. Logger.info("Login Success: {}".format(res))
  80. Snackbar(text="Login Successful").show()
  81. self.onesignal_object.setEmail_(res["user"]["email"])
  82.  
  83. def login_failed(self, req, res):
  84. Logger.info("Login failed: {}".format(res))
  85. Logger.info("Login status: {}".format(req.resp_status))
  86. Snackbar(text="Login feilet: {}:{}".format(req.resp_status, res)).show()
  87.  
  88.  
  89. class OrganizerApp(App):
  90. theme_cls = ThemeManager()
  91.  
  92. def build(self):
  93. self.theme_cls.theme_style = "Light"
  94. self.theme_cls.primary_palette = "Indigo"
  95. self.theme_cls.primary_hue = "500"
  96. return OrganizerRoot()
  97.  
  98.  
  99. if __name__ == "__main__":
  100. OrganizerApp().run()
Add Comment
Please, Sign In to add comment