mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	http://www.ietf.org/rfc/rfc4627.txt http://www.iana.org/assignments/media-types/application/index.html (imported from commit d37e46a9db5077e2c7b1f39534875216df237e3c)
		
			
				
	
	
		
			143 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from django.contrib.auth import authenticate, login
 | 
						|
from django.contrib.auth.decorators import login_required
 | 
						|
from django.core.urlresolvers import reverse
 | 
						|
from django.http import HttpResponse, HttpResponseRedirect
 | 
						|
from django.shortcuts import render_to_response
 | 
						|
from django.template import RequestContext
 | 
						|
from django.shortcuts import render
 | 
						|
 | 
						|
from django.contrib.auth.models import User
 | 
						|
from zephyr.models import Zephyr, UserProfile, ZephyrClass, Recipient
 | 
						|
from zephyr.forms import RegistrationForm
 | 
						|
 | 
						|
import datetime
 | 
						|
import simplejson
 | 
						|
 | 
						|
def register(request):
 | 
						|
    if request.method == 'POST':
 | 
						|
        form = RegistrationForm(request.POST)
 | 
						|
        if form.is_valid():
 | 
						|
            username = request.POST['username']
 | 
						|
            password = request.POST['password']
 | 
						|
            u = User.objects.create_user(username=username, password=password)
 | 
						|
            u.save()
 | 
						|
            user = authenticate(username=username, password=password)
 | 
						|
            login(request, user)
 | 
						|
            return HttpResponseRedirect(reverse('zephyr.views.home'))
 | 
						|
    else:
 | 
						|
        form = RegistrationForm()
 | 
						|
 | 
						|
    return render(request, 'zephyr/register.html', {
 | 
						|
        'form': form,
 | 
						|
    })
 | 
						|
 | 
						|
def accounts_home(request):
 | 
						|
    return render_to_response('zephyr/accounts_home.html',
 | 
						|
                              context_instance=RequestContext(request))    
 | 
						|
    
 | 
						|
def home(request):
 | 
						|
    if not request.user.is_authenticated():
 | 
						|
        return HttpResponseRedirect('accounts/home/')
 | 
						|
 | 
						|
    zephyrs = Zephyr.objects.all()
 | 
						|
    for zephyr in zephyrs:
 | 
						|
        if zephyr.recipient.type == "class":
 | 
						|
            zephyr_class = ZephyrClass.objects.get(pk=zephyr.recipient.user_or_class)
 | 
						|
            zephyr.display_recipient = zephyr_class.name
 | 
						|
        else:
 | 
						|
            user = User.objects.get(pk=zephyr.recipient.user_or_class)
 | 
						|
            zephyr.display_recipient = user.username
 | 
						|
 | 
						|
    user = request.user
 | 
						|
    user_profile = UserProfile.objects.get(user=user)
 | 
						|
    if user_profile.pointer == -1 and zephyrs:
 | 
						|
        user_profile.pointer = min([zephyr.id for zephyr in zephyrs])
 | 
						|
        user_profile.save()
 | 
						|
    return render_to_response('zephyr/index.html', {'zephyrs': zephyrs, 'user_profile': user_profile},
 | 
						|
                              context_instance=RequestContext(request))
 | 
						|
 | 
						|
def update(request):
 | 
						|
    if not request.POST:
 | 
						|
        # Do something
 | 
						|
        pass
 | 
						|
    user = request.user
 | 
						|
    user_profile = UserProfile.objects.get(user=user)
 | 
						|
    if request.POST.get('pointer'):
 | 
						|
        user_profile.pointer = request.POST.get("pointer")
 | 
						|
        user_profile.save()
 | 
						|
    return HttpResponse(simplejson.dumps({}), mimetype='application/json')
 | 
						|
 | 
						|
def get_updates(request):
 | 
						|
    if not request.POST:
 | 
						|
        # Do something
 | 
						|
        pass
 | 
						|
    pointer = request.POST.get('pointer')
 | 
						|
    new_zephyrs = Zephyr.objects.filter(id__gt=pointer)
 | 
						|
    new_zephyr_list = []
 | 
						|
    for zephyr in new_zephyrs:
 | 
						|
        if zephyr.recipient.type == "class":
 | 
						|
            zephyr_class = ZephyrClass.objects.get(pk=zephyr.recipient.user_or_class)
 | 
						|
            display_recipient = zephyr_class.name
 | 
						|
        else:
 | 
						|
            user = User.objects.get(pk=zephyr.recipient.user_or_class)
 | 
						|
            display_recipient = user.username
 | 
						|
 | 
						|
        new_zephyr_list.append({"id": zephyr.id,
 | 
						|
                                "sender": zephyr.sender.user.username,
 | 
						|
                                "display_recipient": display_recipient,
 | 
						|
                                "instance": zephyr.instance,
 | 
						|
                                "content": zephyr.content
 | 
						|
                                })
 | 
						|
 | 
						|
    return HttpResponse(simplejson.dumps(new_zephyr_list),
 | 
						|
                        mimetype='application/json')
 | 
						|
 | 
						|
@login_required
 | 
						|
def personal_zephyr(request):
 | 
						|
    username = request.POST['recipient']
 | 
						|
    if User.objects.filter(username=username):
 | 
						|
        user = User.objects.get(username=username)
 | 
						|
    else:
 | 
						|
        # Do something reasonable.
 | 
						|
        return HttpResponseRedirect(reverse('zephyr.views.home'))
 | 
						|
 | 
						|
    recipient = Recipient()
 | 
						|
    recipient.user_or_class = user.pk
 | 
						|
    recipient.type = "personal"
 | 
						|
    recipient.save()
 | 
						|
 | 
						|
    new_zephyr = Zephyr()
 | 
						|
    new_zephyr.sender = UserProfile.objects.get(user=request.user)
 | 
						|
    new_zephyr.content = request.POST['new_personal_zephyr']
 | 
						|
    new_zephyr.recipient = recipient
 | 
						|
    new_zephyr.instance = u''
 | 
						|
    new_zephyr.pub_date = datetime.datetime.utcnow()
 | 
						|
    new_zephyr.save()
 | 
						|
 | 
						|
    return HttpResponseRedirect(reverse('zephyr.views.home'))
 | 
						|
 | 
						|
@login_required
 | 
						|
def zephyr(request):
 | 
						|
    class_name = request.POST['class']
 | 
						|
    if ZephyrClass.objects.filter(name=class_name):
 | 
						|
        my_class = ZephyrClass.objects.get(name=class_name)
 | 
						|
    else:
 | 
						|
        my_class = ZephyrClass()
 | 
						|
        my_class.name = class_name
 | 
						|
        my_class.save()
 | 
						|
 | 
						|
    recipient = Recipient()
 | 
						|
    recipient.user_or_class = my_class.pk
 | 
						|
    recipient.type = "class"
 | 
						|
    recipient.save()
 | 
						|
 | 
						|
    new_zephyr = Zephyr()
 | 
						|
    new_zephyr.sender = UserProfile.objects.get(user=request.user)
 | 
						|
    new_zephyr.content = request.POST['new_zephyr']
 | 
						|
    new_zephyr.recipient = recipient
 | 
						|
    new_zephyr.instance = request.POST['instance']
 | 
						|
    new_zephyr.pub_date = datetime.datetime.utcnow()
 | 
						|
    new_zephyr.save()
 | 
						|
 | 
						|
    return HttpResponseRedirect(reverse('zephyr.views.home'))
 |