Example #1
0
def discussion_add_edit(request, ring_id=None, slug=None):       
    if ring_id is None:
        ring = Ring(category = Category.objects.get(pk=1), datetime=timezone.now())
        punch = Punch(ring=ring, side='blue')
        template_title = _(u'Start a new topic')
    else:
        ring = get_object_or_404(Ring.objects.all(), pk=ring_id)
        punch = Punch(ring=ring)
        template_title = _(u'Edit existing topic')        
    if request.method == 'POST':        
        ring_form = RingForm(request.POST)        
        punch_form = PunchForm(request.POST)
        if ring_form.is_valid() and punch_form.is_valid():
            ring = ring_form.save(commit=False)
            punch = punch_form.save(commit=False)
            
            datetime = timezone.now()
            ring.datetime = datetime
            
            ring.save()
            if punch.side == 'red':
                ring.red.add(request.user)                   
            else:
                ring.blue.add(request.user)                
            ring.save()      
            if punch.id is None:                  
                punch.side='blue'
            punch.ring = ring
            punch.speaker = request.user 
            punch.datetime = datetime            
            punch.save()
                        
            request.user.score = get_score_for_user(request.user)
            request.user.save()                       
            if ring_form.cleaned_data['blue_invite']:
                invitation = DuelInvitation(                                    
                                        email=ring_form.cleaned_data['blue_invite'],
                                        code=get_user_model().objects.make_random_password(20),
                                        sender=request.user,
                                        ring=ring
                                        )
                invitation.save()
                try:
                    invitation.send()                
                    messages.warning(request, _(u'An invitation was sent to %(email)s.') % {'email' : invitation.email})
                except Exception:                
                    messages.error(request, _(u'An error happened when sending the invitation.'))    
            #log_contact(request, contact, 'contact_add_edit', secondary, profile, is_edit)
            else:
                messages.warning(request, _(u'Your open topic has been started. Lets wait and see if someone bites...'))            
            return HttpResponseRedirect(reverse('discuss-topic', kwargs={'ring_id':str(ring.pk), 'slug':ring.slug}))
    else:
        ring_form = RingForm(instance=ring)
        punch_form = PunchForm(instance=punch, is_first=True)
    rings = Ring.objects.filter(Q(red=request.user)|Q(blue=request.user))
    variables = {'ring_form':ring_form, 'punch_form':punch_form, 'template_title': template_title, 'rings':rings }
    return render(request, 'discussion.html', variables)