from django import forms


class Organization(forms.Form):
    wallet = forms.ChoiceField(
        "Wallet",
        choices=[(x.id, x.name) for x in Organization.objects.all()]
    )

    def clean_wallet(self):
        data = self.cleaned_data["wallet"]
        organization = Organization.objects.filter(
            id=data
        )

        if not organization.exists():
            raise ValidationError("organization is not valid!")

        self.organization = organization.first()
            
        return data

    def authorize(self):
        data = {
            "response_type": "vp_token",
            "response_mode": "direct_post",
            "client_id": self.organization.client_id,
            "response_uri": settings.RESPONSE_URI,
            "presentation_definition": self.pv_definition(),
            "nonce": ""
        }
        query_dict = QueryDict('', mutable=True)
        query_dict.update(data)

        url = '{response_uri}/authorize?{params}'.format(
            response_uri=self.organization.response_uri,
            params=query_dict.urlencode()
        )

    def pv_definition(self):
        return ""