def unit_edit(request, city_tag, bldg_tag, unit_tag=''): (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag=unit_tag) if request.method == 'POST': form = UnitForm(request.POST, instance=unit) if form.is_valid(): # All validation rules pass updated = form.save(commit=False) updated.save_and_update(request) #redirect to unit details page with an edit message messages.add_message(request, messages.INFO, 'Saved changes to unit.') if updated.tag: finished_url = reverse('building.views.unit_details', kwargs={'city_tag':city.tag, 'bldg_tag':building.tag, 'unit_tag':updated.tag}) else: finished_url = reverse('building.views.unit_details', kwargs={'city_tag':city.tag, 'bldg_tag':building.tag}) #args=(updated.building.tag, city.tag, updated.tag) return redirect(finished_url) else: #print unit form = UnitForm(instance=unit) context = { 'building': building, 'unit': unit, 'user': request.user, 'form': form, } return render(request, 'unit_edit.html', context)
def unit_details(request, city_tag, bldg_tag, unit_tag=''): (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag=unit_tag) #print unit.full_address() context = { 'building': building, 'units': [unit], 'unit': unit, 'user': request.user, 'redirect_field': REDIRECT_FIELD_NAME, } return render(request, 'unit_details.html', context)
def details(request, bldg_tag, city_tag): (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag='') #print building.units.all()[0].tag #unit_url = reverse('unit_details', kwargs={'city_tag':building.city.tag, 'bldg_tag':building.tag, 'unit_tag':building.units.all()[0].tag}) #print unit_url context = { 'building': building, 'units': building.units.all(), 'user': request.user, 'redirect_field': REDIRECT_FIELD_NAME, } return render(request, 'details.html', context)
def edit(request, bldg_tag, city_tag): (city, building, unit) = find_by_tags(city_tag, bldg_tag, unit_tag='') #unless we figure out it should be set, keep it None unitform = None if request.method == 'POST': buildingform = BuildingForm(request.POST, instance=building, prefix='building') if buildingform.is_valid(): # All validation rules pass #https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method #by passing commit=False, we get a copy of the model before it #has been saved. This allows diff to work below updated = buildingform.save(commit=False) updated.set_booleans() #print json.dumps(updated.diff) #print updated.diff changes = ChangeDetails() changes.ip_address = get_client_ip(request) changes.user = request.user changes.diffs = json.dumps(updated.diff) changes.building = updated #not required #changes.unit = changes.save() #now it's ok to save the building details: updated.save() unit_ok = False if building.units.count() == 1: unitform = UnitForm(request.POST, instance=unit, prefix='unit') if unitform.is_valid(): # All validation rules pass updated_unit = unitform.save(commit=False) updated_unit.save_and_update(request) unit_ok = True else: unit_ok = True if unit_ok: #redirect to building details with an edit message messages.add_message(request, messages.INFO, 'Saved changes to building.') finished_url = reverse('building.views.details', args=(updated.tag, updated.city.tag)) return redirect(finished_url) else: buildingform = BuildingForm(instance=building, prefix='building') buildingform.fields['name'].label = "Building Name" if building.units.count() == 1: unitform = UnitForm(instance=unit, prefix='unit') context = { 'building': building, 'user': request.user, 'buildingform': buildingform, 'unitform': unitform, } return render(request, 'building-edit.html', context)