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))
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))