Example #1
0
def add_provider(request):
    # users should only be able to make one provider
    if request.user.is_authenticated():
        return HttpResponseRedirect(reverse('index'))
    else:
        LocationFormset = modelformset_factory(Location,
                                               exclude=('provider', ))
        if request.method == "POST":
            admin_form = UserCreationForm(request.POST)
            provider_form = ProviderForm(request.POST)
            location_formset = LocationFormset(request.POST, request.FILES)

            if admin_form.is_valid() and provider_form.is_valid(
            ) and location_formset.is_valid():
                u_name = admin_form.cleaned_data.get('username')
                u_pass = admin_form.cleaned_data.get('password2')
                admin = admin_form.save()
                provider = provider_form.save(commit=False)
                provider.admin = admin
                provider.save()
                for location_form in location_formset:
                    location = location_form.save(commit=False)
                    location.provider = provider
                    location.save()
                    location_form.save_m2m()
                location_formset.save()
                user = authenticate(username=u_name, password=u_pass)
                login(request, user)
                return HttpResponseRedirect(
                    reverse('provider_detail',
                            kwargs={'provider_id': provider.id}))

        else:
            admin_form = UserCreationForm()
            provider_form = ProviderForm()
            location_formset = LocationFormset(
                queryset=Location.objects.none())

        return render(
            request, "provider/new.html", {
                'provider_form': provider_form,
                'location_formset': location_formset,
                'admin_form': admin_form,
            })
Example #2
0
def edit_provider(request, provider_id):

    provider = get_object_or_404(Provider, id=provider_id)
    admin_user = provider.admin

    if request.user == admin_user:  # only the provider's registered user can edit page

        if request.method == 'POST':
            password_change_form = PasswordChangeForm(request.POST)
            provider_form = ProviderForm(request.POST, instance=provider)
            location_formset = LocationForm(request.POST, request.FILES)

            if password_change_form.is_valid() and provider_form.is_valid(
            ) and location_form.is_valid():
                password_change_form.save()
                provider = provider_form.save(commit=False)
                provider.admin = admin_user
                provider.save()
                for location_form in location_formset:
                    location = location_form.save(commit=False)
                    location.provider = provider
                    #location.save()
                    location_form.save_m2m()
                location_formset.save()
                return HttpResponseRedirect(
                    reverse('provider_detail',
                            kwargs={'provider_id': provider.id}))

        else:
            password_change_form = PasswordChangeForm(user=admin_user)
            provider_form = ProviderForm(instance=provider)
            location_formset = LocationFormset(
                queryset=Location.objects.filter(provider__pk=provider_id))

        return render(
            request, "provider/edit.html", {
                'provider': provider,
                'provider_form': provider_form,
                'location_formset': location_formset,
            })

    else:
        return HttpResponseRedirect(reverse('index'))