2016-09-23 17:02:17 +02:00
|
|
|
from django.conf import settings
|
2016-09-23 15:23:02 +02:00
|
|
|
from django.db import transaction
|
|
|
|
from django.http.response import Http404
|
|
|
|
from django.shortcuts import render
|
|
|
|
|
|
|
|
from c3nav.editor.forms import FeatureForm
|
|
|
|
from c3nav.mapdata.models.feature import FEATURE_TYPES
|
|
|
|
|
|
|
|
|
|
|
|
def add_feature(request, feature_type):
|
|
|
|
feature_type = FEATURE_TYPES.get(feature_type)
|
|
|
|
if feature_type is None:
|
|
|
|
raise Http404()
|
|
|
|
|
|
|
|
if request.method == 'POST':
|
|
|
|
form = FeatureForm(request.POST, feature_type=feature_type)
|
|
|
|
if form.is_valid():
|
2016-09-23 17:02:17 +02:00
|
|
|
if not settings.DIRECT_EDITING:
|
2016-09-23 15:23:02 +02:00
|
|
|
return render(request, 'editor/feature_success.html', {})
|
|
|
|
|
|
|
|
with transaction.atomic():
|
|
|
|
feature = form.instance
|
|
|
|
feature.feature_type = feature_type.name
|
|
|
|
feature.save()
|
2016-09-23 17:02:17 +02:00
|
|
|
|
|
|
|
for language, title in form.titles.items():
|
|
|
|
if title:
|
|
|
|
feature.featuretitles.update_or_create(language=language, defaults={'title': title})
|
|
|
|
else:
|
|
|
|
feature.featuretitles.filter(language=language).delete()
|
|
|
|
|
2016-09-23 15:23:02 +02:00
|
|
|
return render(request, 'editor/feature_success.html', {})
|
|
|
|
else:
|
|
|
|
form = FeatureForm(feature_type=feature_type)
|
|
|
|
|
|
|
|
return render(request, 'editor/feature.html', {
|
|
|
|
'form': form,
|
|
|
|
'feature_type': feature_type,
|
|
|
|
'path': request.path,
|
|
|
|
'new': True
|
|
|
|
})
|