コード例 #1
0
ファイル: views.py プロジェクト: spsu/sylph
def reset(request):
	"""Reset everything, tear down and rebuild database, and begin the
	install process all over. Obviously this will need to be locked
	down when the software is complete."""
	template = 'core/backend/install/reset.html'
	if is_installed():
		template = 'core/backend/reset-database.html'

	if request.method == 'POST':
		reset_database()
		return HttpResponseRedirect('/')

	return render_to_response(template,
					context_instance=RequestContext(request))
コード例 #2
0
ファイル: views.py プロジェクト: spsu/sylph
def install_main(request):
	"""	This view constitutes the installer process for Sylph."""
	if is_installed():
		raise Exception, "Cannot reinstall software unless data is wiped."

	user = None
	try:
		user = User.objects.get(pk=settings.OUR_USER_PK)
	except User.DoesNotExist:
		# TODO
		raise Exception, "Installer: Core user doesn't exist!!"

	# TODO: This should be broken down into a multi-step creation process
	class NewUserInstallForm(forms.Form):
		"""Form for creating user account"""
		#login_username = forms.CharField(max_length=30, required=True)
		public_username = forms.CharField(max_length=24, required=True)
		#password = forms.CharField(
		#				max_length=30,
		#				label=(u'Password'),
		#				widget=forms.PasswordInput(render_value=False),
		#				required=True)
		f_name = forms.CharField(max_length=30, required=False,
						label=(u'First name'))
		m_name = forms.CharField(max_length=30, required=False,
						label=(u'Middle name'))
		l_name = forms.CharField(max_length=30, required=False,
						label=(u'Last name'))
		email = forms.EmailField(max_length=30, required=False)

	form = None
	if request.method == 'POST':
		form = NewUserInstallForm(request.POST)

		if form.is_valid():
			data = form.cleaned_data

			def make_path_uri(path = ""):
				"""Returns the URI with the port the server is running
				on, and optionally with a path segment appended."""
				# TODO: Actual hostname or external IP
				port = settings.PORT
				p = 'http://127.0.0.1%s/' % \
					("" if port == 80 else ":"+str(port))
				if path[0] == '/':
					p += path[1:]
				else:
					p += path

				if path[-1] != '/':
					p += '/'

				return p

			# Set our node endpoint URI
			node = Node.objects.get(pk=settings.OUR_NODE_PK)
			node.uri = make_path_uri('/endpoint/') # TODO: More custom
			node.protocol_version = settings.PROTOCOL_VERSION
			node.software_name = settings.SOFTWARE_NAME
			node.software_version = settings.SOFTWARE_VERSION
			node.save()

			# Save user's profile
			user.username = data['public_username']
			user.first_name = data['f_name']
			user.middle_name = data['m_name']
			user.last_name = data['l_name']
			user.email = data['email']
			user.uri = make_path_uri('/profile/') # TODO: More custom / OpenID
			user.node = node
			user.save()

			# TODO/XXX: Create site login account/credentials

			# Installation status flag is critical
			configs = Configs()
			configs.installation_status = INSTALLED
			configs.save()

			# Add welcome item to feed
			feed = FeedItem()
			feed.text = "Welcome to Sylph! More notifications will arrive " +\
						"as you interact with other nodes."
			feed.datetime_added = datetime.now()
			feed.save()

			# TODO: Login here! 
			return HttpResponseRedirect('/') # ACCOUNT CREATED!

	else:
		form = NewUserInstallForm(initial={'public_username': user.username})


	return render_to_response('core/backend/install/index.html',
								{'form': form},
								context_instance=RequestContext(request))