def edit_simple_entity(request, entity_id, entity_cls, form_cls, target, title='Entity'): entity = entity_cls.objects.get(pk=entity_id) entity_accessible(request, entity_cls, entity, True) if request.method == 'DELETE': if entity.can_delete(): entity.delete() return HttpResponse() else: return HttpResponseBadRequest() if request.method == 'POST': form = form_cls(request.POST, instance=entity, user=request.user) if form.is_valid(): try: form.save() return render(request, 'edit_ok.html') # TODO @iia catch by different exceptions except Exception as e: data = {'form': form, 'target': target, 'entity_id': entity_id, 'title': title + ' ' + entity.name} logger.exception('Cannot save entity') form.add_form_error(e) return render(request, 'edit_dialog.html', data) else: form = form_cls(instance=entity, user=request.user) data = {'form': form, 'target': target, 'entity_id': entity_id, 'title': title + ' ' + entity.name} return render(request, 'edit_dialog.html', data)
def entity_view(request, entity_cls, entity_id, edit_name, view_name, template_name='entity_view.html', template_entity='entity', extra_data=None): entity = entity_cls.objects.get(id=entity_id) entity_accessible(request, entity_cls, entity) data = {template_entity: entity, 'entity_cls': entity_cls, 'edit_name': edit_name, 'view_name': view_name} if extra_data != None: data.update(extra_data) return render(request, template_name, data)