Skip to content

Commit 989c47a

Browse files
renzonrenzon
authored andcommitted
Implemented relationship between Pagarme Item and Subscription Type
close #3761
1 parent 8f327cf commit 989c47a

File tree

3 files changed

+63
-3
lines changed

3 files changed

+63
-3
lines changed

pythonpro/memberkit/admin.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
from django.contrib import admin
22
from django.shortcuts import redirect
33
from django.urls import path
4+
from django_pagarme.admin import PagarmeItemConfigAdmin
5+
from django_pagarme.models import PagarmeItemConfig
46

57
# Register your models here.
68
from pythonpro.memberkit import facade
7-
from pythonpro.memberkit.models import SubscriptionType
9+
from pythonpro.memberkit.models import SubscriptionType, PaymentItemConfigToSubscriptionType
10+
11+
12+
class PaymentItemConfigInline(admin.TabularInline):
13+
extra = 1
14+
model = PaymentItemConfigToSubscriptionType
815

916

1017
@admin.register(SubscriptionType)
1118
class SubscriptionTypeAdmin(admin.ModelAdmin):
1219
change_list_template = "memberkit/subscriptiontype/synchronize_button.html"
1320
fields = ['id', 'name']
1421
list_display = fields
22+
readonly_fields = fields
23+
inlines = [PaymentItemConfigInline]
1524

1625
def get_urls(self):
1726
urls = super().get_urls()
@@ -29,5 +38,10 @@ def has_add_permission(self, request):
2938
def has_delete_permission(self, request, obj=None):
3039
return False
3140

32-
def has_change_permission(self, request, obj=None):
33-
return False
41+
42+
admin.site.unregister(PagarmeItemConfig)
43+
44+
45+
@admin.register(PagarmeItemConfig)
46+
class NewPagarmeItemConfigAdmin(PagarmeItemConfigAdmin):
47+
inlines = [PaymentItemConfigInline]
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 3.2.4 on 2021-06-05 15:46
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
dependencies = [
9+
('django_pagarme', '0004_pagarme_item_config_available_until'),
10+
('memberkit', '0001_initial'),
11+
]
12+
13+
operations = [
14+
migrations.AlterModelOptions(
15+
name='subscriptiontype',
16+
options={'verbose_name': 'Tipo de Assinatura', 'verbose_name_plural': 'Tipos de Assinaturas'},
17+
),
18+
migrations.CreateModel(
19+
name='PaymentItemConfigToSubscriptionType',
20+
fields=[
21+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
22+
('payment_item', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE,
23+
related_name='subscription_type_relation',
24+
to='django_pagarme.pagarmeitemconfig')),
25+
('subscription_type',
26+
models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='payment_items_relation',
27+
to='memberkit.subscriptiontype')),
28+
],
29+
),
30+
]

pythonpro/memberkit/models.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,19 @@ def __str__(self):
1111
class Meta:
1212
verbose_name = 'Tipo de Assinatura'
1313
verbose_name_plural = 'Tipos de Assinaturas'
14+
15+
16+
class PaymentItemConfigToSubscriptionType(models.Model):
17+
payment_item = models.OneToOneField('django_pagarme.PagarmeItemConfig', null=False, on_delete=models.CASCADE,
18+
related_name='subscription_type_relation')
19+
subscription_type = models.ForeignKey(SubscriptionType, null=False, on_delete=models.CASCADE,
20+
related_name='payment_items_relation')
21+
22+
def __str__(self):
23+
return f'{self.payment_item} -> {self.subscription_type}'
24+
25+
# class Subscription(models.Model):
26+
# created_at = models.DateTimeField(auto_now_add=True)
27+
# updated_at = models.DateTimeField(auto_now_add=True)
28+
# payment = models.OneToOneField('PagarmePayment', on_delete=models.DO_NOTHING, )
29+
# subscription_type = models.OneToOneField(SubscriptionType, null=False, on_delete=models.DO_NOTHING)

0 commit comments

Comments
 (0)