|
| 1 | +# Copyright The IETF Trust 2012-2019, All Rights Reserved |
| 2 | +# -*- coding: utf-8 -*- |
| 3 | + |
1 | 4 | import json |
2 | 5 | import six |
3 | 6 |
|
4 | 7 | from collections import Counter |
5 | 8 | from urllib import urlencode |
6 | 9 |
|
7 | | -from django.utils.html import escape |
8 | 10 | from django import forms |
| 11 | +from django.core.validators import validate_email |
9 | 12 | from django.urls import reverse as urlreverse |
| 13 | +from django.utils.html import escape |
10 | 14 |
|
11 | 15 | import debug # pyflakes:ignore |
12 | 16 |
|
@@ -70,6 +74,16 @@ def __init__(self, |
70 | 74 | def parse_select2_value(self, value): |
71 | 75 | return [x.strip() for x in value.split(",") if x.strip()] |
72 | 76 |
|
| 77 | + def check_pks(self, pks): |
| 78 | + if self.model == Person: |
| 79 | + for pk in pks: |
| 80 | + if not pk.isdigit(): |
| 81 | + raise forms.ValidationError("Unexpected value: %s" % pk) |
| 82 | + elif self.model == Email: |
| 83 | + for pk in pks: |
| 84 | + validate_email(pk) |
| 85 | + return pks |
| 86 | + |
73 | 87 | def prepare_value(self, value): |
74 | 88 | if not value: |
75 | 89 | value = "" |
@@ -99,7 +113,7 @@ def prepare_value(self, value): |
99 | 113 |
|
100 | 114 | def clean(self, value): |
101 | 115 | value = super(SearchablePersonsField, self).clean(value) |
102 | | - pks = self.parse_select2_value(value) |
| 116 | + pks = self.check_pks(self.parse_select2_value(value)) |
103 | 117 |
|
104 | 118 | objs = self.model.objects.filter(pk__in=pks) |
105 | 119 | if self.model == Email: |
|
0 commit comments