Revision 052c14aa

b/flowspec/forms.py
7 7
from ipaddr import *
8 8
from django.core.urlresolvers import reverse
9 9
from django.contrib.auth.models import User
10
from django.db.models import Avg, Max, Min, Count
10
import datetime
11

  
11 12

  
12 13

  
13 14
class RouteForm(forms.ModelForm):
......
40 41
                return self.cleaned_data["destination"]
41 42
            except Exception:
42 43
                raise forms.ValidationError('Invalid network address format')
44
    
45
    def clean_expires(self):
46
        date = self.cleaned_data['expires']
47
        if date:
48
            range_days = (date - datetime.date.today()).days
49
            if range_days > 0 and range_days < 11:
50
                return self.cleaned_data["expires"]
51
            else:
52
                raise forms.ValidationError('Invalid date range')
43 53

  
44 54
    def clean(self):
45 55
        name = self.cleaned_data.get('name', None)
b/flowspec/models.py
97 97
    status = models.CharField(max_length=20, choices=ROUTE_STATES, blank=True, null=True, verbose_name="Status", default="PENDING")
98 98
#    is_online = models.BooleanField(default=False)
99 99
#    is_active = models.BooleanField(default=False)
100
    expires = models.DateField(default=days_offset, blank=True, null=True,)
100
    expires = models.DateField(default=days_offset)
101 101
    response = models.CharField(max_length=512, blank=True, null=True)
102 102
    comments = models.TextField(null=True, blank=True, verbose_name="Comments")
103 103

  
b/flowspec/views.py
92 92

  
93 93
@login_required
94 94
@never_cache
95
def add_then(request):
96
    applier = request.user.pk
97
    if request.method == "GET":
98
        form = RouteForm()
99
        return render_to_response('apply.html', {'form': form, 'applier': applier},
100
                                  context_instance=RequestContext(request))
101

  
102
    else:
103
        form = RouteForm(request.POST)
104
        if form.is_valid():
105
            route=form.save(commit=False)
106
            route.applier = request.user
107
            route.expires = days_offset()
108
            route.save()
109
            form.save_m2m()
110
            route.commit_add()
111
            return HttpResponseRedirect(reverse("group-routes"))
112
        else:
113
            return render_to_response('apply.html', {'form': form, 'applier':applier},
114
                                      context_instance=RequestContext(request))
115

  
116
@login_required
117
@never_cache
118 95
def edit_route(request, route_slug):
119 96
    applier = request.user.pk
120 97
    applier_peer = request.user.get_profile().peer
b/templates/apply.html
24 24
		$("#id_port").css('width', '100px').attr('size', '5');
25 25
		$("#id_destinationport").css('width', '100px').attr('size', '5');
26 26
		$('#id_then').attr("multiple", "");
27
		$( "#id_expires" ).datepicker({ dateFormat: 'yy-mm-dd' , maxDate: '+10d', minDate: '+1d', changeMonth: false, changeYear: false }).datepicker( $.datepicker.regional[ "el" ] );
27 28
		$('#then_diag').dialog({
28 29
			height: 220,
29 30
            width: 340,
......
186 187
</table>
187 188
</fieldset>
188 189
<fieldset>
190
<legend>{% trans "Expiration" %}</legend>
191
<table>
192
<tr><th>{{ form.expires.label_tag }}</th><td>{{ form.expires }}<span class="error">{{ form.expires.errors|join:", " }}</span></td></tr>
193
</table>
194
</fieldset>
195
<fieldset>
189 196
<legend>{% trans "Use/Comments" %}</legend>
190 197
{% blocktrans %}
191 198
<p>Give a short description of the intended use of this rule, that justifies the parameter selection above. Feel free to include any additional comments.</p>

Also available in: Unified diff