Statistics
| Branch: | Tag: | Revision:

root / flowspec / views.py @ 6ee21ffd

History | View | Annotate | Download (3.9 kB)

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"))