diff --git a/promotion/__init__.py b/promotion/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/promotion/admin.py b/promotion/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/promotion/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/promotion/apps.py b/promotion/apps.py new file mode 100644 index 0000000..baccc02 --- /dev/null +++ b/promotion/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class PromotionConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'promotion' diff --git a/promotion/forms.py b/promotion/forms.py new file mode 100644 index 0000000..a6f6d78 --- /dev/null +++ b/promotion/forms.py @@ -0,0 +1,59 @@ + +import json +import requests + +from django import forms +from django.conf import settings +from django.template.loader import get_template +from django.utils.translation import gettext_lazy as _ +from django.core.exceptions import ValidationError + +from utils.idhub_ssikit import create_verifiable_presentation +from oidc4vp.models import Organization + + +class WalletForm(forms.Form): + + def __init__(self, *args, **kwargs): + self.presentation_definition = kwargs.pop('presentation_definition', []) + + reg = r'({})'.format('|'.join(self.presentation_definition)) + + self.credentials = self.user.vcredentials.filter( + schema__type__iregex=reg + ) + super().__init__(*args, **kwargs) + for vp in self.presentation_definition: + vp = vp.lower() + choices = [ + (str(x.id), x.schema.type.lower()) for x in self.credentials.filter( + schema__type__iexact=vp) + ] + self.fields[vp.lower()] = forms.ChoiceField( + widget=forms.RadioSelect, + choices=choices + ) + def clean(self): + data = super().clean() + self.list_credentials = [] + for c in self.credentials: + if str(c.id) == data.get(c.schema.type.lower()): + if c.status is not c.Status.ISSUED.value or not c.data: + txt = _('There are some problems with this credentials') + raise ValidationError(txt) + + self.list_credentials.append(c) + + return data + + def save(self, commit=True): + if not self.list_credentials: + return + + self.get_verificable_presentation() + + if commit: + return self.org.send(self.vp) + + return + diff --git a/promotion/migrations/__init__.py b/promotion/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/promotion/models.py b/promotion/models.py new file mode 100644 index 0000000..71a8362 --- /dev/null +++ b/promotion/models.py @@ -0,0 +1,3 @@ +from django.db import models + +# Create your models here. diff --git a/promotion/templates/select_wallet.html b/promotion/templates/select_wallet.html new file mode 100644 index 0000000..254b0fb --- /dev/null +++ b/promotion/templates/select_wallet.html @@ -0,0 +1,1100 @@ + + + + + + + + + + + + + + + Escull la teva tarifa mòbil - Som Connexió + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + Tarifes
+
+ +
+
+
+
+ Persones sòcies 9.257 + Contractes 22.303 +
+ +
+ Blog  |  + Contacte +
+ + + Vols que et truquem? +
+
+skip to Main Content
+
+ + + + + + +
+ +
+ + +
+ + +
+ + + + + +
+ + +
+ + +
+ + + +
+ + + + + + + + + + +
+ + +
+ + + + +Back To Top + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/promotion/templates/somconnexio.tarifes-mobil.html b/promotion/templates/somconnexio.tarifes-mobil.html new file mode 100644 index 0000000..e65b856 --- /dev/null +++ b/promotion/templates/somconnexio.tarifes-mobil.html @@ -0,0 +1,1218 @@ + + + + + + + + + + + + + + + Escull la teva tarifa mòbil - Som Connexió + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + Tarifes
+
+ +
+
+
+
+ Persones sòcies 9.257 + Contractes 22.303 +
+ +
+ Blog  |  + Contacte +
+ + + Vols que et truquem? +
+
+skip to Main Content
+
+ + + + + + +
+ +
+ + +
+ + +
+ + + +
+ + +
+ +
+
El més preguntat
+
    +
  • + Mòbil: tarifes i detalls +
    +

    Pots consultar els preus i detalls de les tarifes de mòbil en aquest enllaç.

    +

     

    +
    +
  • +
  • + Quina cobertura de mòbil té Som Connexió? +
    +

    La cobertura del servei és Yoigo/MásMóvil, Orange (4G) i Movistar (3G) i el nostre proveïdor de serveis és MásMóvil.

    +
    +
  • +
  • + Trucades gratuïtes entre mòbils de Som Connexió +
    +

    Les tarifes de mòbil de 0 minuts i 150 minuts inclouen 1.000 minuts de trucades gratuïtes a d’altres telèfons mòbils de Som Connexió (a la tarifa de minuts il·limitats ja estan incloses totes les trucades a mòbils de qualsevol operadora dins l’estat espanyol).

    +

    Això vol dir que si truques a un telèfon mòbil de Som Connexió, els minuts que utilitzis no es descomptaran del teu abonament sinó d’aquests 1.000 minuts.

    +

    Aquesta prestació només s’aplica a la telefonia mòbil de Som Connexió. La telefonia fixa de Som Connexió no inclou aquests minuts, ni en el servei de Fibra ni en el d’ADSL.

    +

    Aquest servei és automàtic. No s’ha de fer res per activar-lo i no es pot desactivar.

    +
    +
  • +
  • + Costos d’alta (mòbil) +
    +

    Quan es fa una alta de servei de telefonia mòbil, afegim a la factura els costos de l’alta del servei: 2,05€ (IVA inclòs)

    +
    +
  • +
  • + Puc mantenir el meu número de mòbil? +
    +

    Sí, sense cap dubte! Se’n diu portabilitat. Però si vols, també es pot canviar.

    +
    +
  • +
  • + Contractar dades addicionals +
    +

    Si esgotes dades abans d’acabar el mes, tens l’opció de contractar dades addicionals que podràs utilitzar fins a acabar el mes:

    +
      +
    • 500 MB (2 €)*
    • +
    • 1 GB (3 €)*
    • +
    • 3 GB (5 €)*
    • +
    • 5 GB (6 €)*
    • +
    • 10 GB (9€)*
    • +
    +

    * IVA inclòs

    +

    Aquí t’expliquem com afegir dades extra.

    +

    Contractar dades addicionals en les tarifes compartides

    +

    Si els mòbils que estan compartint dades esgoten els 50 GB abans que acabi el més, es pot comprar una ampliació de 10 GB per 9€ o de 20 GB per 12€ que podran consumir els diferents mòbils. Aquí t’expliquem com afegir dades extra a les tarifes compartides.

    +
    +
  • +
  • + Preus SMS +
    +

    Els SMS tenen un preu de 0,10€/sms

    +

    IMPORTANT: els SMS no estan inclosos a cap de les tarifes de Som Connexió. Tampoc a la tarifa de minuts il·limitats.

    +
    +
  • +
  • + Preus de trucades fora de tarifa des del mòbil +
    +

    Aquests són els preus de les trucades un cop has superat els minuts que tens contractats a la teva tarifa:

    +

    0,18€ per l’establiment de la trucada, que inclou els 5 primers minuts de la conversa.

    +

    A partir del minut 6, es paga 0,036€/min.

    +

    Consulta les tarifes de roaming AQUÍ.

    +
    +
  • +
  • + Tarifa bàsica mòbil: 0 min i 0 Gb +
    +

    Amb un cost base de 2€ mensuals, es tracta d’un consum “a granel”, és a dir, que es paga per minut i per unitat de dades consumides.

    +

    Aquesta tarifa és adequada per a persones que utilitzen el mòbil per estar localitzables i fer una trucada molt puntualment (només surt a compte si es fan menys de 6 trucades al mes de curta durada) i no utilitza el mòbil per connectar-se a Internet o ho fa de una manera molt esporàdica.

    +

    El preu per trucada en aquest abonament és de 0,18€ per l’establiment de la trucada, que inclou els 5 primers minuts de la conversa. A partir del minut 6, es paga 0,036€/min

    +

    El preu del servei de dades quan no s’ha contractat cap abonament és de 0,036€/Mb

    +

    Si vols desactivar el servei de dades, ens ho has de sol·licitar a serveis@somconnexio.coop.

    +
    +
  • +
  • + NÚMEROS DE TARIFACIÓ ESPECIAL +
    +

    Els preus estàndard de veu o missatges exclouen:

    +
      +
    • Els serveis de tarifació especial (per exemple: 80x, 90x o SMS Premium). Mira la taula de tarifes AQUÍ
    • +
    • Trànsit internacional
    • +
    • Trànsit en itinerància
    • +
    +

    Alguns dels serveis de tarifació especial de cost elevat estan bloquejats per defecte. Per tenir més informació sobre l’opció de bloqueig dels números de cost especial, consulta aquesta TAULA.

    +

    En aquest enllaç de la OCU ens donen més informació sobre els números de tarificació especial.

    +
    +
  • +
+
+
+
+
+ + +
+
+ Vols que et truquem? +
+
+
+
+ +
+
+
+
+ + +
+ +
+ + +
+ + +
+ + + +
+ + + + + + + + + + +
+ + +
+ + + + +Back To Top + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/promotion/tests.py b/promotion/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/promotion/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/promotion/urls.py b/promotion/urls.py new file mode 100644 index 0000000..8fd5eb7 --- /dev/null +++ b/promotion/urls.py @@ -0,0 +1,14 @@ +from django.urls import path, reverse_lazy + +from promotion import views + + +app_name = 'promotion' + + +urlpatterns = [ + path('', views.PromotionView.as_view(), + name="show_promotion"), + path('select_wallet', views.SelectWalletView.as_view(), + name="select_wallet"), +] diff --git a/promotion/views.py b/promotion/views.py new file mode 100644 index 0000000..6988ac0 --- /dev/null +++ b/promotion/views.py @@ -0,0 +1,30 @@ +from django.views.generic.edit import View, FormView +from django.template.loader import get_template +from django.urls import reverse_lazy +from django.http import HttpResponse + +from promotion.forms import WalletForm + + +class PromotionView(View): + template_name = "somconnexio.tarifes-mobil.html" + def get(self, request, *args, **kwargs): + self.context = {} + template = get_template( + self.template_name, + ).render() + return HttpResponse(template) + + +class SelectWalletView(FormView): + template_name = "select_wallet.html" + form_class = WalletForm + success_url = reverse_lazy('promotion:select_wallet') + def get(self, request, *args, **kwargs): + self.context = {} + template = get_template( + self.template_name, + # context + ).render() + return HttpResponse(template) + diff --git a/trustchain_idhub/settings.py b/trustchain_idhub/settings.py index e25b340..274416d 100644 --- a/trustchain_idhub/settings.py +++ b/trustchain_idhub/settings.py @@ -73,7 +73,8 @@ INSTALLED_APPS = [ 'django_tables2', 'idhub_auth', 'oidc4vp', - 'idhub' + 'idhub', + 'promotion' ] MIDDLEWARE = [ diff --git a/trustchain_idhub/urls.py b/trustchain_idhub/urls.py index 1668872..e8468a3 100644 --- a/trustchain_idhub/urls.py +++ b/trustchain_idhub/urls.py @@ -25,4 +25,5 @@ urlpatterns = [ # path('django-admin/', admin.site.urls), path('', include('idhub.urls')), path('oidc4vp/', include('oidc4vp.urls')), + path('promotion/', include('promotion.urls')), ]