示例#1
0
def like_project(request):
	if request.user.is_authenticated():
		popularity = 0
		if request.GET:
			if 'project' in request.GET:
				project = request.GET['project']
				userp = request.user.profile
				if userp.liked_projects == "":
					userp.liked_projects = "[]"
					userp.save()
				projlist = json.decoder.JSONDecoder().decode(userp.liked_projects)
				if project in request.user.profile.liked_projects:
					#Unlike the project
					projlist.remove(project)
					userp.liked_projects = json.dumps(projlist)
					userp.save()
					db_interface.unlikeProject(project)
				else:
					#Like the project
					projlist.append(project)
					userp.liked_projects = json.dumps(projlist)
					userp.save()
					db_interface.likeProject(project)

				projectfile = db_interface.getProject(project)
				return HttpResponse(projectfile['popularity'])
			else:
				return HttpResponseRedirect('/')
		else:
			return HttpResponseRedirect('/')
	else:
		return HttpResponseRedirect('/')
示例#2
0
def create(request):
	if not request.user.is_authenticated():
		return HttpResponseRedirect("/login/?next=/create/")
	else:
		authenticated = True
		user = request.user
	issues = []
	#Another variable: Access -> true = public && false = private
	name = description = ""
	if request.method == "POST":
		first = False
		name = request.POST['name']
		description = request.POST['description']
		creator = request.user.get_username()
		access = request.POST.getlist('public[]')
		if "public" in access:
			access_final = "public"
		else:
			access_final = "private"
		if len(name) < 4 or len(name) > 50:
			#Project name must be 4-50 characters long.
			issues.append("name_length")
		if re.match('^\w+$', name) is None and len(name) != 0:
			#Project name can only contain characters and numbers and underscores.
			issues.append("name_char")
		if len(description) > 500:
			#Description is optional
			#If description must be under 500 characters long.
			issues.append("description_length")
		if db_interface.checkProjectExists(name):
			issues.append("name_taken")

		#Create the project:
		if len(issues) == 0:
			if access:
				access_real = 'public'
			else:
				access_real = 'private'
			db_interface.createProject(name, creator, access_final, description)

			#Add this project to liked projects
			userp = request.user.profile
			try:
				projlist = json.decoder.JSONDecoder().decode(userp.liked_projects)
			except ValueError:
				projlist = []
			projlist.append(name)
			userp.liked_projects = json.dumps(projlist)
			userp.save()
			db_interface.likeProject(name)
			return HttpResponseRedirect('/log/%s' % name)
	else:
		first = True
	context = {
		"authenticated" : authenticated,
		"user" : user,
		"issues" : issues,
		"first" : first,
		"name_init" : name,
		"description_init": description,
	}
	return render(request, 'tablemanager/create_project.html', context)