|
4 | 4 | # --- BEGIN_HEADER --- |
5 | 5 | # |
6 | 6 | # peersaction - handle management of peers |
7 | | -# Copyright (C) 2003-2023 The MiG Project lead by Brian Vinter |
| 7 | +# Copyright (C) 2003-2025 The MiG Project by the Science HPC Center at UCPH |
8 | 8 | # |
9 | 9 | # This file is part of MiG. |
10 | 10 | # |
|
41 | 41 | from mig.shared.base import client_id_dir, fill_distinguished_name, \ |
42 | 42 | extract_field |
43 | 43 | from mig.shared.defaults import peers_filename, peer_kinds, peers_fields, \ |
44 | | - keyword_auto, csrf_field |
| 44 | + keyword_auto, csrf_field, peers_expire_default_days, \ |
| 45 | + peers_expire_min_days, peers_expire_max_days |
45 | 46 | from mig.shared.functional import validate_input, REJECT_UNSET |
46 | 47 | from mig.shared.handlers import safe_handler, get_csrf_limit |
47 | 48 | from mig.shared.htmlgen import html_post_helper |
|
51 | 52 | from mig.shared.url import urlencode |
52 | 53 | from mig.shared.useradm import get_full_user_map |
53 | 54 |
|
54 | | -default_expire_days = 7 |
55 | 55 | peer_actions = ['import', 'add', 'remove', 'update', 'accept', 'reject'] |
56 | 56 |
|
57 | 57 |
|
@@ -155,17 +155,20 @@ def main(client_id, user_arguments_dict): |
155 | 155 | expire = now |
156 | 156 | else: |
157 | 157 | expire = datetime.datetime.strptime(raw_expire, '%Y-%m-%d') |
158 | | - if now > expire: |
159 | | - raise ValueError("specified expire value is in the past!") |
| 158 | + if now + datetime.timedelta(days=peers_expire_min_days) > expire: |
| 159 | + raise ValueError("specified expire is in the past!") |
| 160 | + if now + datetime.timedelta(days=peers_expire_max_days) < expire: |
| 161 | + raise ValueError("specified expire is too far in the future!") |
160 | 162 | except Exception as exc: |
161 | | - logger.error("expire %r could not be parsed into a (future) date" % |
| 163 | + logger.error("expire %r could not be parsed into a valid date" % |
162 | 164 | raw_expire) |
163 | 165 | output_objects.append( |
164 | | - {'object_type': 'text', 'text': |
165 | | - 'No valid expire provided - using default: %d days' % |
166 | | - default_expire_days}) |
| 166 | + {'object_type': 'warning', 'text': |
| 167 | + 'End date must be %d - %d days from now - using default %d days' % |
| 168 | + (peers_expire_min_days, peers_expire_max_days, |
| 169 | + peers_expire_default_days)}) |
167 | 170 | expire = now |
168 | | - expire += datetime.timedelta(days=default_expire_days) |
| 171 | + expire += datetime.timedelta(days=peers_expire_default_days) |
169 | 172 | expire = expire.date().isoformat() |
170 | 173 |
|
171 | 174 | peers_path = os.path.join(configuration.user_settings, client_dir, |
|
0 commit comments