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 save(self): username = self.cleaned_data["username"] email = self.cleaned_data["email"] name = self.cleaned_data["name"] affiliation = self.cleaned_data["affiliation"] occupation = self.cleaned_data["occupation"] password = self.cleaned_data["password1"] if self.cleaned_data["confirmation_key"]: from friends.models import JoinInvitation # @@@ temporary fix for issue 93 try: join_invitation = JoinInvitation.objects.get(confirmation_key = self.cleaned_data["confirmation_key"]) confirmed = True except JoinInvitation.DoesNotExist: confirmed = False else: confirmed = False # @@@ clean up some of the repetition below -- DRY! if confirmed: if email == join_invitation.contact.email: new_user = User.objects.create_user(username, email, password) join_invitation.accept(new_user) # should go before creation of EmailAddress below new_user.message_set.create(message=ugettext(u"Your email address has already been verified")) # already verified so can just create EmailAddress(user=new_user, email=email, verified=True, primary=True).save() else: new_user = User.objects.create_user(username, "", password) join_invitation.accept(new_user) # should go before creation of EmailAddress below if email: new_user.message_set.create(message=ugettext(u"Confirmation email sent to %(email)s") % {'email': email}) EmailAddress.objects.add_email(new_user, email) return username, password # required for authenticate() else: new_user = User.objects.create_user(username, "", password) # def populate_profile: new_profile = new_user.get_profile() new_profile.affiliation = affiliation new_profile.occupation = occupation new_profile.name = name new_profile.save() # Tribemember tmember = TribeMember(tribe=new_profile.affiliation.tribe, user=new_user) tmember.save() # Global tribe try: global_tribe = Tribe.objects.get(slug = u'biblnet') tmember = TribeMember(tribe=global_tribe, user=new_user) tmember.save() except: pass if email: new_user.message_set.create(message=ugettext(u"Confirmation email sent to %(email)s") % {'email': email}) EmailAddress.objects.add_email(new_user, email) return username, password # required for authenticate()
def save(self): username = self.cleaned_data["user"] new_member = User.objects.get(username__iexact=username) tribe_member = TribeMember(tribe=self.tribe, user=new_member) tribe_member.save() '''
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))
def tribe(request, slug, form_class=TribeUpdateForm, template_name="tribes/tribe.html"): tribe = get_object_or_404(Tribe, slug=slug) if tribe.deleted: raise Http404 are_member = has_member(tribe, request.user) if tribe.private and not are_member: access = do_403_if_not_superuser(request) if access: return access photos = tribe.photos.all() if request.user.is_authenticated() and request.method == "POST": if request.POST["action"] == "update" and (request.user == tribe.creator or request.user.is_superuser): tribe_form = form_class(request.POST, instance=tribe) if tribe_form.is_valid(): tribe = tribe_form.save() else: tribe_form = form_class(instance=tribe) if request.POST["action"] == "join" and not tribe.private: try: TribeMember.objects.filter(tribe=tribe, user=request.user)[0] except: tmember = TribeMember(tribe=tribe, user=request.user) tmember.save() request.user.message_set.create(message="You have joined the tribe %s" % tribe.name) if notification: #notification.send([tribe.creator], "tribes_created_new_member", {"user": request.user, "tribe": tribe}) notification.send(tribe.member_users.all(), "tribes_new_member", {"user": request.user, "tribe": tribe}) elif request.POST["action"] == "leave": TribeMember.objects.filter(tribe=tribe, user=request.user).delete() request.user.message_set.create(message=ugettext("You have left the tribe %s") % tribe.name) if notification: pass # @@@ are_member = has_member(tribe, request.user) else: tribe_form = form_class(instance=tribe) try: tm_visit = TribeMember.objects.get(tribe=tribe, user=request.user).last_visit topics = tribe.topics.filter(modified__gte=tm_visit) articles = Article.objects.filter( content_type=get_ct(tribe), object_id=tribe.id) total_articles = articles.count() articles = articles.filter(last_update__gte=tm_visit).order_by('-last_update')[:10] documents = Document.objects.filter(tribe=tribe, date_updated__gte=tm_visit).order_by('-date_updated')[:10] except: topics = None total_articles = None articles = None documents = None topics = None articles = None total_articles = None documents = None return render_to_response(template_name, { "tribe_form" : tribe_form, "tribe" : tribe, "photos" : photos, "topics" : topics, "articles" : articles, "documents" : documents, "total_articles": total_articles, "are_member" : are_member, "are_moderator" : is_moderator(tribe, request.user), "tribe_members_count" : TribeMember.objects.filter(tribe=tribe).count(), }, context_instance=RequestContext(request))