예제 #1
0
def create(request, form_class=TribeForm, template_name="tribes/create.html"):
    if request.user.is_authenticated() and request.method == "POST":
        if request.POST["action"] == "create":
            tribe_form = form_class(request.POST)
            if tribe_form.is_valid():
                tribe = tribe_form.save(commit=False)
                tribe.creator = request.user
                tribe.save()
                tmember = TribeMember(tribe=tribe, user=request.user)
                tmember.moderator = True
                tmember.save()
                tribe.save()
                # Calendar
                tribe_cal = Calendar.objects.get_or_create_calendar_for_object(tribe, name = "%s" % tribe,)
                tribe_cal.slug = tribe.slug
                tribe_cal.save()
                         
                if notification:
                    # @@@ might be worth having a shortcut for sending to all users
                    if not tribe.private:
                        notification.send(User.objects.all(), "tribes_new_tribe", {"tribe": tribe}, queue=True)
                #return render_to_response("base.html", {
                #}, context_instance=RequestContext(request))
                return HttpResponseRedirect(tribe.get_absolute_url())
        else:
            tribe_form = form_class()
    else:
        tribe_form = form_class()
    
    return render_to_response(template_name, {
        "tribe_form": tribe_form,
    }, context_instance=RequestContext(request))
예제 #2
0
def tribe_members(request, slug, tribe_form=AddMemberForm, template_name="tribes/tribe_members.html"):
    
    tribe = get_object_or_404(Tribe, slug=slug)

    if tribe.deleted:
        raise Http404
    
    are_member = has_member(tribe, request.user)
    are_moderator = is_moderator(tribe, request.user)
    
    users = None
    tribe_members = None
    search_terms= ""
    search_terms_all = ""
    
    tribe_members_all = TribeMember.objects.filter(tribe=tribe).order_by('user__profile__name')
    
    order = request.GET.get('order')
    if order == 'date':
        tribe_members_all = tribe_members_all.order_by('-date_joined')
    else:
        tribe_members_all = tribe_members_all.order_by('user__profile__name')
        

    if tribe.private and not are_member:
        access = do_403_if_not_superuser(request)
        if access: 
            return access
    
    if are_moderator:

        if request.method == "GET":
            
            if 'search_members' in request.GET: 
                tribe_members = tribe_members_all
                search_terms = request.GET.get('search_members', '')
#                order = request.GET.get('order')
            
            elif 'search_all' in request.GET: 
                users = User.objects.all()
                search_terms_all = request.GET.get('search_all', '')
#                order = request.GET.get('order')

            if 'kick' in request.GET:
                try:
                    kicked_user_slug = request.GET['kick'] # lav til en form             
                    tm = TribeMember.objects.get(tribe=tribe, user__username=kicked_user_slug)
                    if not tm.user.id == tribe.creator.id:       
                        tm.delete()
                    else:
                        request.user.message_set.create(message=ugettext("You are the creator of this tribe so can't leave (yet)."))
                except:
                    pass
            
            elif 'invite' in request.GET:
                try:
                    invited_user_slug = request.GET['invite'] # lav til en form
                    
                    user = User.objects.get(username=invited_user_slug)
                    
                    tm = TribeMember(tribe=tribe, user=user)
                    if 'moderator' in request.GET:
                        tm.moderator=True
                    tm.save()
                except:
                    request.user.message_set.create(message=ugettext("%s is already a member of this tribe") % invited_user_slug)

            elif 'promote' in request.GET:
                try:
                    promoted_user_slug = request.GET['promote'] # lav til en form
                    user = User.objects.get(username=promoted_user_slug)
                    tm = TribeMember.objects.get(tribe=tribe, user=user)
                    tm.moderator=True
                    tm.save()
                except:
                    pass

            elif 'demote' in request.GET:
                try:
                    promoted_user_slug = request.GET['demote'] # lav til en form
                    
                    user = User.objects.get(username=promoted_user_slug)
                    
                    tm = TribeMember.objects.get(tribe=tribe, user=user)
                    tm.moderator=False
                    tm.save()
                except:
                    pass

            if search_terms:
                tribe_members = tribe_members.filter(user__profile__name__icontains=search_terms) | tribe_members.filter(user__username__icontains=search_terms) | tribe_members.filter(user__profile__nickname__icontains=search_terms)
            
            if search_terms_all:
                users = users.filter(profile__name__icontains=search_terms_all) | users.filter(username__icontains=search_terms_all) | users.filter(profile__nickname__icontains=search_terms_all)
    
    return render_to_response(template_name, {
            'tribe_members':tribe_members,
            'tribe_members_all':tribe_members_all,
            'users' : users,
            'order' : order,
            'search_terms_all' : search_terms_all ,
            'search_terms' : search_terms,
            "tribe_form": tribe_form,
            "tribe": tribe,
            "are_member": are_member,
            "are_moderator" : are_moderator,
        }, context_instance=RequestContext(request))