Exemple #1
0
def add_provider(request):
	if request.method == "POST":
		admin_form = UserCreationForm(request.POST)
		provider_form = ProviderForm(request.POST)
		location_form = LocationForm(request.POST)

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

	else:
		admin_form = UserCreationForm()
		provider_form = ProviderForm()
		location_form = LocationForm()

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

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

	#TEMPORARY
	location = Location.objects.filter(provider__pk = provider_id)[0]

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

		if request.method == 'POST':
			provider_form = ProviderForm(request.POST,instance=provider)
			location_form = LocationForm(request.POST,instance=location)

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

		else:
			provider_form = ProviderForm(instance=provider)
			location_form = LocationForm(instance=location) #todo: turn into formsets--right now this is creating a new loca

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

	else:
		return HttpResponseRedirect(reverse('index'))
Exemple #3
0
def add_provider(request):
	if request.method == "POST":
		form = ProviderForm(request.POST)
		if form.is_valid():
			provider = form.save(commit=False) # changed from save to save nested locations
			# timestamp?
			provider.save()
			return HttpResponseRedirect(reverse('provider_detail', kwargs={'provider_id': provider.id}))
	else: # request.method == "GET"
		form = ProviderForm()

	return render(request, "provider/new.html", { 'form': form })
Exemple #4
0
def edit_provider(request, provider_id):
	provider = get_object_or_404(Provider, id=provider_id)

	if request.method == 'POST':
		form = ProviderForm(request.POST, instance=provider)

		if form.is_valid():
			provider = form.save(commit=False)
			# timestamp?
			provider.save()
			return HttpResponseRedirect(reverse('provider_detail', kwargs={'provider_id': provider.id}))

	else:
		form = ProviderForm(instance=provider)

	return render(request, "provider/edit.html", { 'form': form })
Exemple #5
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 = formset_factory(LocationForm)
		if request.method == "POST":
			admin_form = UserCreationForm(request.POST)
			provider_form = ProviderForm(request.POST)
			#location_form = LocationForm(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()
				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_form = LocationForm()
			location_formset = LocationFormset()

		return render(request, "provider/new.html", { 
													'provider_form': provider_form, 
													'location_formset': location_formset,
													'admin_form': admin_form,
													 })
Exemple #6
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'))
Exemple #7
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,
            })
Exemple #8
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'))
Exemple #9
0
def edit_provider(request, provider_id):

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

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

        if request.is_ajax():
            if request.method == 'POST': #and request.is_ajax():
                provider_form = ProviderForm(request.POST,instance=provider)
                if provider_form.is_valid():
                    provider = provider_form.save()
                    template = 'provider/provider_profile.html'
                    data = {
                        'provider_id': provider.id,
                    }
                    return HttpResponse(simplejson.dumps(data), content_type="application/json")
                else:
                    errors_dict = {}
                    if provider_form.errors:
                        for error in provider_form.errors:
                            e = provider_form.errors[error]
                            errors_dict[error] = unicode(e)

                    return HttpResponseBadRequest(simplejson.dumps(errors_dict))
            else:
                    template = 'provider/provider_edit.html'
                    data = {
                        'provider_form': ProviderForm(instance=provider),
                        'provider_id': provider.id,
                    }
            return render(request, template, data)

        else:
            if request.method == 'POST':
                provider_form = ProviderForm(request.POST,instance=provider)
                password_change_form = PasswordChangeForm(request.POST)
                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_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,
                                                    'password_change_form': password_change_form,
                                                     })

    else:
        return HttpResponseRedirect(reverse('provider_detail', kwargs={'provider_id': provider.id}))
Exemple #10
0
def add_provider(request):
    # Users should only be able to make one provider, so send the user back to the home page if they try to add a new provider.
    if request.user.is_authenticated():
        return HttpResponseRedirect(reverse('index'))
    # If no user is logged in, let them register a new provider.
    else:
        # Load the fields for a location from the model - except the provider field, since the organization and its office are automatically linked when the form is submitted
        LocationFormset = modelformset_factory(Location, exclude=('provider',))
        # When submit is clicked, post the data that's been entered into each field so it can be checked
        if request.method == "POST":
            admin_form = UserCreationForm(request.POST)
            provider_form = ProviderForm(request.POST)
            location_formset = LocationFormset(request.POST)
            # Check to make sure all of the form data is entered and valid
            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()
                # At this point we've committed a user, but the line below is going to have us save a provider object so we can use it to save a location, but not yet take the time to make a database commit
                provider = provider_form.save(commit=False)
                provider.admin = admin
                provider.save()
                resources_needed = []
                resources_available = []
                
                
                # Grab email set dependent on language value
                if request.LANGUAGE_CODE == 'es':
                    from email_texts import spanish_version_emails as emails
                else:
                    from email_texts import english_version_emails as emails
                    
                    
                # At this point we've saved a user and a provider, and have blank lists of resources ready to accept info about the location
                for location_form in location_formset: # The formset may have more than one form in it - more get added on the template via javascript. So we have to loop through and save data from each one here.
                    location = location_form.save(commit=False) # The commit=false here lets us create a provider and a location, then connect them, THEN save everthing in the database. Saves time making database commits.
                    location.provider = provider
                    location.save()
                    location_form.save_m2m() # We have to use the .save many-to-many function because we used commit=False earlier
                    
                    # If there are resources needed or available at any location, grab them from each location and combine them in a list that gets associated with the provider
                    #needed so we can send them in the email
                    #note that this messy loop is to prevent repeats AND to deal with translation
                    #and is all around generally a pretty terrible hack
                    
                    try: #not a huge deal if this is wrong in the confirmation, but def don't want site to crash
                        for r in location.resources_needed.all():
                            if r.name.lower() in emails['resource_translation']:
                                translated_name = emails['resource_translation'][r.name.lower()]
                                if translated_name not in resources_needed:
                                    resources_needed.append(translated_name)

                        for r in location.resources_available.all():
                            if r.name.lower() in emails['resource_translation']:
                                translated_name = emails['resource_translation'][r.name.lower()]
                                if translated_name not in resources_needed:
                                    resources_available.append(translated_name)
                    except:
                        pass
                        
                location_formset.save() # Now that we've added up resources, save the whole formset.

        
                

                    
                # Transform resources lists into strings (or 'None' if none) for e-mail sending
                if len(resources_needed) > 0:
                    resources_needed = ', '.join(resources_needed)
                else:
                    resources_needed = 'None'
        
                if len(resources_available) > 0:
                    resources_available = ', '.join(resources_available)
                else:
                    resources_available = 'None'
        
                # Grab admin email list (if not already grabbed or stored somewhere else)
                admin_email_list = [admin_email_address]
        
                # Build confirmation email
                email = emails['provider_signup']['confirmation']
                email['body'] = email['body'].format(provider_name = provider.name,
                    org_username=provider.admin.username,
                    resources_needed=resources_needed,
                    resources_available=resources_available)
                confirmation_email = (email['subject'], email['body'], email['from'], [provider.admin.username])

                # Build admin notification email
                email = emails['provider_signup']['admin']
                email['body'] = email['body'].format(org_username=provider.admin.username)
                admin_email = (email['subject'], email['body'], email['from'], admin_email_list)
        
                # Send Them
                try:
                    send_mass_mail((admin_email, confirmation_email), fail_silently=False)
                except:
                    pass
                

                # Authenticate and log in the user
                user = authenticate(username=u_name,
                                    password=u_pass)
                login(request, user)
                return HttpResponseRedirect(reverse('provider_detail', kwargs={'provider_id': provider.id}))
        
        # If we've just arrived on the page, load the blank form(s)
        else:
            admin_form = UserCreationForm() # The piece of the new provider form that takes info on its primary staff person
            provider_form = ProviderForm()  # The piece of the new provider form that takes info about the organization
            location_formset = LocationFormset(queryset=Location.objects.none()) # The piece of the new provider form that takes info about the organization's first office location, and assumes you have no locations loaded yet

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