def group_create(request):
    if request.method != "POST":
        form = GroupForm(request=request)
    else:
        form = GroupForm(request.POST, request=request)
        if form.is_valid():
            group = form.save(commit=False)
            group.creator = get_user_model().objects.get(pk=request.user.id)
            group.save()
            form.save_m2m()  # Required because of previous commit=False
            # Redirect to view the created group.
            return redirect('meetup:group_view', pk=group.pk)
        # Validation errors will automatically be propagated to the view.
    return render(request, tmpl('create.html'), {'form': form})
def group_update(request, pk):
    group = get_object_or_404(Group, pk=pk)
    if request.user not in group.members.all():
        msg = "You don't have permission to edit this group."
        return HttpResponse(msg, mimetype='text/html')
    if request.method == 'POST':
        form = GroupForm(request.POST, request=request, instance=group)
        if form.is_valid():
            group = form.save()
            # Remove votes from users that are no longer in the group.
            for activity in group.activities.all():
                invalid_votes = activity.votes.exclude(
                    user__id__in=group.members.all())
                for invalid_vote in invalid_votes:
                    invalid_vote.delete()
            return redirect('meetup:group_view', pk=pk)
    else:
        form = GroupForm(instance=group, request=request)
    return render(request, tmpl('update.html'), {'form': form, 'group': group})