- # import pprint
- # pp = pprint.PrettyPrinter(indent=4)
- # pp.pprint(postvars)
- db.t_filter_and = set()
- db.t_filter_not = set()
- if 't_filter_and' in postvars.keys():
- for target in postvars['t_filter_and']:
- db.t_filter_and.add(target)
- if 't_filter_not' in postvars.keys():
- for target in postvars['t_filter_not']:
- db.t_filter_not.add(target)
- if 'hide_unchosen' in postvars.keys():
- db.hide_unchosen = True
- if 't_uuid' in postvars.keys():
- new_postvars_t_uuid = postvars['t_uuid'].copy()
- for i, uuid in enumerate(postvars['t_uuid']):
- if len(uuid) < 36 and len(postvars['t_title'][i]) > 0:
- new_uuid, t = db.add_task(return_id=True)
- new_postvars_t_uuid[i] = new_uuid
- for key in [k for k in postvars.keys() if not k == 't_uuid']:
- if uuid in postvars[key]:
- uuid_index = postvars[key].index(uuid)
- postvars[key][uuid_index] = new_uuid
- postvars['t_uuid'] = new_postvars_t_uuid
- for i, uuid in enumerate(postvars['t_uuid']):
- if len(uuid) < 36:
- continue
- t = db.tasks[uuid]
- t.set_title(postvars['t_title'][i])
- t.tags_from_joined_string(postvars['t_tags'][i])
- t.set_default_weight(float(postvars['t_default_weight'][i]))
- if uuid in db.selected_day.todos.keys() and ((not 'choose' in postvars) or uuid not in postvars['choose']):
- del db.selected_day.todos[uuid]
- if 'choose' in postvars.keys():
- for i, uuid in enumerate(postvars['t_uuid']):
- if uuid in postvars['choose']:
- done = 'done' in postvars and uuid in postvars['done']
- day_weight = float(postvars['day_weight'][i]) if postvars['day_weight'][i] else None
- db.selected_day.add_todo(uuid, {'done': done, 'day_weight': day_weight})
-
- if 'comment' in postvars.keys():
- db.selected_day.comment = postvars['comment'][0]
- if 'selected_day_date' in postvars.keys():
- new_selected_day_date = postvars['selected_day_date'][0]
- try:
- datetime.strptime(new_selected_day_date, '%Y-%m-%d')
- except ValueError:
- raise PlomException(f"{prefix} bad date string: {new_selected_day_date}")
- if new_selected_day_date != db.selected_day_date:
- if new_selected_day_date in db.days.keys():
- raise PlomException('cannot use same date twice')
- else:
- db.days[new_selected_day_date] = db.selected_day
- del db.days[db.selected_day_date]
- db.selected_day_date = new_selected_day_date
-
- switch_edited_day = None
- day_edit_prefix = 'edit_'
- for k in postvars.keys():
- if k.startswith(day_edit_prefix):
- switch_edited_day = k[len(day_edit_prefix):]
- break
- if 'archive_day' in postvars.keys() or switch_edited_day:
- db.switch_to_day(switch_edited_day)
- db.write()
- data = [('t_and', f) for f in db.t_filter_and] + [('t_not', f) for f in db.t_filter_not] + [('hide_unchosen', int(db.hide_unchosen))]
- encoded_params = urlencode(data)