c8756a127128550813a716367d17525bbfbee0c1
[flowspy] / flowspec / views.py
1 # Create your views here.
2 import urllib2
3 import re
4 import socket
5 from django import forms
6 from django.views.decorators.csrf import csrf_exempt
7 from django.core import urlresolvers
8 from django.contrib.auth.decorators import login_required
9 from django.http import HttpResponseRedirect, HttpResponseForbidden, HttpResponse
10 from django.shortcuts import get_object_or_404, render_to_response
11 from django.core.context_processors import request
12 from django.template.context import RequestContext
13 from django.template.loader import get_template
14 from django.utils import simplejson
15 from django.core.urlresolvers import reverse
16 from django.contrib import messages
17 from flowspy.accounts.models import *
18
19 from django.forms.models import model_to_dict
20
21 from flowspy.flowspec.forms import * 
22 from flowspy.flowspec.models import *
23
24 from copy import deepcopy
25
26 def days_offset(): return datetime.now() + timedelta(days = settings.EXPIRATION_DAYS_OFFSET)
27
28 @login_required
29 def user_routes(request):
30     if request.user.is_anonymous():
31         return HttpResponseRedirect(reverse('login'))
32     user_routes = Route.objects.filter(applier=request.user)
33     return render_to_response('user_routes.html', {'routes': user_routes},
34                               context_instance=RequestContext(request))
35
36 @login_required
37 def group_routes(request):
38     if request.user.is_anonymous():
39         return HttpResponseRedirect(reverse('login'))
40     peer = request.user.get_profile().peer
41     if peer:
42        peer_members = UserProfile.objects.filter(peer=peer)
43        users = [prof.user for prof in peer_members]
44        group_routes = Route.objects.filter(applier__in=users)
45     return render_to_response('user_routes.html', {'routes': group_routes},
46                               context_instance=RequestContext(request))
47
48
49 @login_required
50 def add_route(request):
51     if request.method == "GET":
52         form = RouteForm()
53         return render_to_response('apply.html', {'form': form},
54                                   context_instance=RequestContext(request))
55
56     else:
57         form = RouteForm(request.POST)
58         if form.is_valid():
59             route=form.save(commit=False)
60             route.applier = request.user
61             route.expires = days_offset()
62             route.save()
63             form.save_m2m()
64             route.commit_add()
65             return HttpResponseRedirect(urlresolvers.reverse("user-routes"))
66         else:
67             return render_to_response('apply.html', {'form': form},
68                                       context_instance=RequestContext(request))
69 @login_required
70 def edit_route(request, route_slug):
71     route_edit = get_object_or_404(Route, name=route_slug)
72     route_original = deepcopy(route_edit)
73     if request.POST:
74         form = RouteForm(request.POST, instance = route_edit)
75         if form.is_valid():
76             route=form.save(commit=False)
77             route.name = route_original.name
78             route.applier = route_original.applier
79             route.expires = route_original.expires
80             route.is_active = route_original.is_active
81             route.save()
82             form.save_m2m()
83             route.commit_edit()
84             return HttpResponseRedirect(urlresolvers.reverse("user-routes"))
85         else:
86             return render_to_response('apply.html', {'form': form, 'edit':True},
87                                       context_instance=RequestContext(request))
88     else:
89         dictionary = model_to_dict(route_edit, fields=[], exclude=[])
90         form = RouteForm(dictionary)
91         return render_to_response('apply.html', {'form': form, 'edit':True},
92                                   context_instance=RequestContext(request))
93
94 @login_required
95 def delete_route(request, route_slug):
96     if request.is_ajax():
97         route = get_object_or_404(Route, name=route_slug)
98         if route.applier == request.user:
99             route.deactivate()
100             route.commit_delete()
101     return HttpResponseRedirect(urlresolvers.reverse("user-routes"))