diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-02-28 16:33:57 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2012-02-28 16:33:57 +0100 |
commit | 5e56ea6cddb3cc97892948239dc7b9adbe6a0ec4 (patch) | |
tree | 4fa230be4972fbf7375251eedcffbec8879939c4 /chimere/forms.py | |
parent | 556b3e2c9d2d379fdcf1d6bcecac9bcd7c8d275d (diff) | |
download | Chimère-5e56ea6cddb3cc97892948239dc7b9adbe6a0ec4.tar.bz2 Chimère-5e56ea6cddb3cc97892948239dc7b9adbe6a0ec4.zip |
Allow modification of routes on the main interface
Diffstat (limited to 'chimere/forms.py')
-rw-r--r-- | chimere/forms.py | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/chimere/forms.py b/chimere/forms.py index dbc62c0..638e67e 100644 --- a/chimere/forms.py +++ b/chimere/forms.py @@ -228,6 +228,15 @@ class RouteForm(RouteAdminForm): model = Route exclude = ('status',) + def __init__(self, *args, **kwargs): + if kwargs.get('instance'): + try: + kwargs['initial'] = { + 'point':Marker.objects.get(route=kwargs['instance']).point} + except: + pass + super(RouteForm, self).__init__(*args, **kwargs) + def save(self, *args, **keys): """ Custom save method in order to manage associated marker and file @@ -236,21 +245,21 @@ class RouteForm(RouteAdminForm): # associate a route file if 'associated_file_id' in self.cleaned_data and \ self.cleaned_data['associated_file_id']: - #try: - file_pk = int(self.cleaned_data['associated_file_id']) - new_route.associated_file = RouteFile.objects.get(pk=file_pk) - new_route.save() - #except: - #pass + file_pk = int(self.cleaned_data['associated_file_id']) + new_route.associated_file = RouteFile.objects.get(pk=file_pk) + new_route.save() marker_fields = [f.attname for f in Marker._meta.fields] marker_dct = dict([(k, self.cleaned_data[k]) for k in self.cleaned_data if k in marker_fields]) - marker_dct['route'] = new_route - if 'status' not in marker_dct: - marker_dct['status'] = "S" + marker_dct['status'] = new_route.status categories = [] - new_marker = Marker(**marker_dct) - new_marker.save() + new_marker, created = Marker.objects.get_or_create(route=new_route, + defaults=marker_dct) + if not created: + for att in marker_dct.keys(): + setattr(new_marker, att, marker_dct[att]) + new_marker.save() + new_marker.categories.clear() for category in self.cleaned_data['categories']: new_marker.categories.add(category) new_marker.save() |