예제 #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
파일: forms.py 프로젝트: sepow/biblnet
    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()
예제 #3
0
 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()
     '''
예제 #4
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))
예제 #5
0
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))