def page(): """Hybrid for creating start page and accepting login posts.""" user_form = UserForm(request.form) data = { "current_page" : "home_page", "status" : system_status.retrieve_status(), "logged_in" : user_account.is_logged_in(), "user_name" : user_account.current_user_name(), "form" : user_form } if request.method == "GET": return render_template("home.html", **data) if not user_form.validate(): flash(__("Data submitted was not valid"), "error") return render_template("home.html", **data) user = user_account.user_by_form(user_form) if user == None: flash(__("Invalid username or password"), "error") return render_template("home.html", **data) if login_user(user, remember = True): flash(__("You have been logged in"), "success") data["logged_in"] = True data["user_name"] = user_form.name.data else: flash(__("Could not login"), "error") return render_template("home.html", **data)
def value_repr(value): if value == JobEnum.IDLE: return __("Idling") elif value == JobEnum.SYNC: return __("Syncing Dropbox Images") elif value == JobEnum.PAUSE: return __("Pausing") else: return __("Unknown")
def render_error(self, window, message): """Renders a text with the given message on display.""" message = __(message) text_item = self.default_font.render(message, 1, (255,255,0)) position = (20, 110) window.blit(text_item, position)
def reauth(): """Reauths a user for page that require a fresh login.""" if request.method == "POST": confirm_login() flash(__("Reauthentication successful"), "info") return redirect(url_for("home_page"))
def render_status(self, window, image_amount, ip): """Renders the status bar in the top of the display.""" texts = [ __("IP: %s" % "No ip") if ip is None else ip, __("Images available: %d") % image_amount ] content_height = (len(texts) * 30) + 30 surface_size = (self.scene_width, content_height) surface_color = pygame.Color(38, 156, 14) status_surface = pygame.Surface(surface_size) status_surface.fill(surface_color) blit_texts(self.default_font, texts, status_surface) window.blit(status_surface, (0, 0))
def authorize(): """Creates a stop users get sent to after dropbox authentication.""" service_daemon = ServiceDaemon() service_daemon.pause() static_facade.obtain_access_token() was_connected = static_facade.is_authorized() gsystem_status.set_dropbox_connection(was_connected) if was_connected == False: logger.error("Something went wrong after the user was redirected") flash(__("Something went wrong when connecting your account"), "error") else: flash(__("Your account was successfully connected to Dropbox"), "success") service_daemon = ServiceDaemon() service_daemon.resume() return redirect(url_for("dropbox_page"))
def test_config_server_translation(self): texts = [ "Data submitted was not valid", "Something went wrong when connecting your account", "Your account was successfully connected to Dropbox", "Your account was disconnected from Dropbox", "Dropbox sync started" ] for t in texts: translation = __(t) self.assertNotEqual(translation, t)
def page(): """Creates a page where users can configure the device.""" config_form = ConfigForm(request.form) data = { "current_page" : "config_page", "status" : system_status.retrieve_status(), "logged_in" : user_account.is_logged_in(), "user_name" : user_account.current_user_name(), "form" : config_form } if request.method == "POST": if config_form.validate(): user_config.save_by_form(config_form) flash(__("Data saved"), "success") else: flash(__("The data submitted was not valid"), "error") else: user_config.form_by_user(config_form) return render_template("config.html", **data)
def disconnect(): """Creates a stop users get sent to when they disconnects their dropbox account.""" service_daemon = ServiceDaemon() service_daemon.pause() dropbox_access.delete_access_token() gsystem_status.set_dropbox_connection(False) service_daemon = ServiceDaemon() service_daemon.resume() flash(__("Your account was disconnected from Dropbox")) return redirect(url_for("dropbox_page"))
def get_detailed_status(): """Retrieves detailed status data for multiple tables.""" status = system_status.retrieve_status() config = user_config.get_current_config() if status.latest_sync == 0: next_sync = __("Waiting for first sync") else: next_sync = status.latest_sync + (config.image_download_wait * 60) next_sync = cutetime(next_sync) access_token = dropbox_access.get_access_token() if user_account.is_logged_in() is False or access_token == (None, None): next_sync = __("Dropbox connection needed") return { "latest_sync" : status.latest_sync, "total_images_saved" : dropbox_images.get_amount(), "uptime" : status.uptime_start, "next_sync" : next_sync, "background_job" : JobEnum.value_repr(status.current_background_job) }
def sync_now(): """Creates a stop users get sent to when they sync dropbox manually.""" status = gsystem_status.retrieve_status() if status.current_background_job is JobEnum.IDLE: service_daemon = ServiceDaemon() service_daemon.pause() time.sleep(1) service_daemon = ServiceDaemon() service_daemon.resume() flash(__("Dropbox sync started"), "success") return redirect(url_for("dropbox_page"))
def translate(text): return __(text)
def not_found(error): return render(404, { "error_name" : __("Not found"), "description" : __("The resource you were looking for was not found") })
def internal_error(error): return render(500, { "error_name" : __("Internal server error"), "description" : __("An internal server error occured which could not be recovered from") })
def not_allowed(error): return render(403, { "error_name" : __("Not allowed"), "description" : __("You are not allowed to perform this action") })
def gone(error): return render(410, { "error_name" : __("Resource gone"), "description" : __("The resource you were looking for is gone") })
def logout(): """Removes the user from the current session.""" logout_user() flash(__("You have been logged out"), "info") return redirect(url_for("home_page"))
def markdown_block(slug): translated = __(slug) translated = markdown.markdown(translated) return Markup(translated)