diff options
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() |