예제 #1
0
파일: home.py 프로젝트: rzetterberg/picshu
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)
예제 #2
0
	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")
예제 #3
0
파일: scene.py 프로젝트: rzetterberg/picshu
	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)	
예제 #4
0
파일: users.py 프로젝트: rzetterberg/picshu
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"))
예제 #5
0
파일: scene.py 프로젝트: rzetterberg/picshu
	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))
예제 #6
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"))
예제 #7
0
	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)	
예제 #8
0
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)
예제 #9
0
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"))
예제 #10
0
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)
	}
예제 #11
0
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"))
예제 #12
0
def translate(text):
    return __(text)
예제 #13
0
def not_found(error): 
	return render(404, {
		"error_name" : __("Not found"),
		"description" : __("The resource you were looking for was not found")
	})
예제 #14
0
def internal_error(error): 
	return render(500, {
		"error_name" : __("Internal server error"),
		"description" : __("An internal server error occured which could not be recovered from")
	})
예제 #15
0
def not_allowed(error): 
	return render(403, {
		"error_name" : __("Not allowed"),
		"description" : __("You are not allowed to perform this action")
	})
예제 #16
0
def gone(error): 
	return render(410, {
		"error_name" : __("Resource gone"),
		"description" : __("The resource you were looking for is gone")
	})
예제 #17
0
파일: users.py 프로젝트: rzetterberg/picshu
def logout():
	"""Removes the user from the current session."""

	logout_user()
	flash(__("You have been logged out"), "info")
	return redirect(url_for("home_page"))
예제 #18
0
def markdown_block(slug):
    translated = __(slug)
    translated = markdown.markdown(translated)
    return Markup(translated)