Remove the guest system entirely: no is_guest/device_id, no guest throttles, phone login is the only way in

accounts.0008 drops the columns and refuses to run while guest rows exist.
Docs describe the current state; tests that only proved guest behaviour are gone.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-05 18:20:10 +03:30
parent 8835e01595
commit 663252a260
61 changed files with 357 additions and 1518 deletions

View File

@@ -23,7 +23,7 @@ from subscription.models import Plan, Subscription
class _Base(TestCase):
def setUp(self):
cache.clear()
self.user = User.objects.create(phone='09120007001', is_guest=False)
self.user = User.objects.create(phone='09120007001')
self.client = APIClient()
self.client.credentials(HTTP_AUTHORIZATION=f'Bearer {issue_access_token(self.user.id)}')
self.month = Plan.objects.create(title='ماهانه', price=49000, duration_days=30)
@@ -137,7 +137,7 @@ class ReconcileTests(_Base):
class AffiliateTests(_Base):
def setUp(self):
super().setUp()
self.referrer = User.objects.create(phone='09120007002', is_guest=False)
self.referrer = User.objects.create(phone='09120007002')
self.account = AffiliateAccount.objects.create(user_id=self.referrer.id, referral_code='SARA10',
commission_rate=0.1)
@@ -157,11 +157,3 @@ class AffiliateTests(_Base):
me = referrer.get('/api/affiliate/me').json()
self.assertEqual((me['referredCount'], me['paidCount'], me['totalCommission']), (1, 1, 4900))
def test_guests_take_no_part(self):
guest = User.objects.create(device_id='dev-aff', is_guest=True)
client = APIClient()
client.credentials(HTTP_AUTHORIZATION=f'Bearer {issue_access_token(guest.id)}')
self.assertEqual(client.post('/api/affiliate/track', {'referralCode': 'SARA10'},
format='json').status_code, 403)
self.assertEqual(client.get('/api/affiliate/me').status_code, 403)
self.assertFalse(Conversion.objects.exists())