def home(request): #if user does not have a user profile, create one profile = UserProfile.objects.filter(user=request.user) if not profile: profile = UserProfile(user=request.user, avatar=DEFAULT_AVATAR, about_me=" ", birthdate=datetime.date.today(), hometown=" ", present_location=" ") if request.user.is_superuser or request.user.is_staff: profile.user_type = 3 profile.save() boards = Board.objects.all() topic_form = TopicForm() board_form = BoardForm() profile = UserProfile.objects.get(user=request.user) if request.method == 'POST': #user clicks the 'Add Topic' if 'addtopic' in request.POST: topic_form = TopicForm(request.POST) if topic_form.is_valid(): topic_form.save() return HttpResponseRedirect(REDIRECT_HOME) #user clicks the 'Add Board' button elif 'addboard' in request.POST: board_form = BoardForm(request.POST, request.FILES) if board_form.is_valid(): board = board_form.save(commit=False) if Board.objects.all(): last_board = Board.objects.aggregate(last_rank=Max('rank')) board.rank = last_board['last_rank']+1 else: board.rank = 1 board.save() return HttpResponseRedirect(REDIRECT_HOME) #group boards according to their topics grouping = SortedDict() for entry in boards: grouping.setdefault(entry.topic.name, []) grouping[entry.topic.name].append(entry) context = { 'boards': grouping, 'profile': profile, 'reorder': True, 'topic_form': topic_form, 'board_form': board_form, } return render(request, 'bulletinboard/home.html', context)