summaryrefslogtreecommitdiff
path: root/chimere/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'chimere/forms.py')
-rw-r--r--chimere/forms.py31
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()