ResetNetwork / apply-app

The app behind the ResetNetwork
BSD 3-Clause "New" or "Revised" License
1 stars 0 forks source link

"Add New Opportunity" Button on Project Page #105

Open maxpearl opened 4 years ago

maxpearl commented 4 years ago

Feature Name: "Add Opportunity Button"

Basic Workflow:

Requires: Project, Opportunity and RecordType models

Project Model

RecordType and Opportunity Models

(See specific model definitions at bottom of Notion document relating to the specific Reset project)

Page:

Condition:

Actions:

# Function
from .models import Project, Opportunity, RecordType

def get_record_types(sobject):
    record_types = RecordType.objects.filter(sobject_type=sobject)
    return record_types

## View
def rt_choice(request):
    sobject = 'Opportunity'
    project_id = request.GET.get('project_id')
    record_types = get_record_types(sobject)
    context = {
        'project_id': project_id,
        'record_types': record_types
    }
    return render(request, 'projects/rt_choice.html', context)

class OpportunityForm(ModelForm): class Meta: model = Opportunity fields = ['name', 'description', 'stage_name', 'org_name', 'amount', 'op_type', 'close_date'] widgets = { 'project_id': forms.HiddenInput(), 'record_type': forms.HiddenInput() }

- Action after submission of that form is the opportunity is added to Salesforce

View

def new_oppty(request): if request.method == 'POST': form = OpportunityForm(request.POST) oppty = form.save() print(f"Oppty: {oppty.id}") project = get_object_or_404(Project, pk=request.POST.get('project_id')) context = { 'project': project, 'message': "Opportunity Saved!", 'oppty': oppty } return render(request, 'projects/detail.html', context) else: context = { 'form': OpportunityForm, 'project_id': request.GET.get('project_id'), 'record_type': request.GET.get('rt_id') } return render(request, 'opportunity/new_oppty.html', context)