Пример #1
0
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)