Commit 374bfe61 by Waheed Ahmed

Allow multiple sites for single partner.

Allow multiple site configuration objects against same partner
for different sites.

LEARNER-5052
parent 9da1dc87
...@@ -52,7 +52,7 @@ class Command(BaseCommand): ...@@ -52,7 +52,7 @@ class Command(BaseCommand):
course_title = options['course_title'] course_title = options['course_title']
price = options['price'] price = options['price']
partner = Partner.objects.get(short_code=options['partner_code']) partner = Partner.objects.get(short_code=options['partner_code'])
site = partner.siteconfiguration.site site = partner.default_site
one_year = datetime.timedelta(days=365) one_year = datetime.timedelta(days=365)
expires = timezone.now() + one_year expires = timezone.now() + one_year
......
...@@ -55,7 +55,7 @@ class Command(BaseCommand): ...@@ -55,7 +55,7 @@ class Command(BaseCommand):
partner_code = course_settings["partner"] partner_code = course_settings["partner"]
try: try:
partner = Partner.objects.get(short_code=partner_code) partner = Partner.objects.get(short_code=partner_code)
site = partner.siteconfiguration.site site = partner.default_site
except Partner.DoesNotExist: except Partner.DoesNotExist:
logger.warning(partner_code + " partner does not exist") logger.warning(partner_code + " partner does not exist")
logger.warning("Can't create course, proceeding to next course") logger.warning("Can't create course, proceeding to next course")
......
# -*- coding: utf-8 -*-
# Generated by Django 1.11.11 on 2018-05-10 08:23
from __future__ import unicode_literals
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0044_auto_20180313_0702'),
]
operations = [
migrations.AlterField(
model_name='siteconfiguration',
name='partner',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='partner.Partner'),
),
]
...@@ -35,7 +35,7 @@ class SiteConfiguration(models.Model): ...@@ -35,7 +35,7 @@ class SiteConfiguration(models.Model):
""" """
site = models.OneToOneField('sites.Site', null=False, blank=False, on_delete=models.CASCADE) site = models.OneToOneField('sites.Site', null=False, blank=False, on_delete=models.CASCADE)
partner = models.OneToOneField('partner.Partner', null=False, blank=False, on_delete=models.CASCADE) partner = models.ForeignKey('partner.Partner', null=False, blank=False, on_delete=models.CASCADE)
lms_url_root = models.URLField( lms_url_root = models.URLField(
verbose_name=_('LMS base url for custom site/microsite'), verbose_name=_('LMS base url for custom site/microsite'),
help_text=_("Root URL of this site's LMS (e.g. https://courses.stage.edx.org)"), help_text=_("Root URL of this site's LMS (e.g. https://courses.stage.edx.org)"),
......
...@@ -53,7 +53,7 @@ class Command(BaseCommand): ...@@ -53,7 +53,7 @@ class Command(BaseCommand):
course_ids = map(unicode, self.options.get('course_ids', [])) course_ids = map(unicode, self.options.get('course_ids', []))
self.partner = Partner.objects.get(code__iexact=options['partner']) # pylint: disable=attribute-defined-outside-init self.partner = Partner.objects.get(code__iexact=options['partner']) # pylint: disable=attribute-defined-outside-init
site = self.partner.siteconfiguration.site site = self.partner.default_site
self._install_current_request(site) self._install_current_request(site)
if options.get('direction') == HONOR_TO_AUDIT: if options.get('direction') == HONOR_TO_AUDIT:
......
...@@ -7,7 +7,6 @@ from django.db import transaction ...@@ -7,7 +7,6 @@ from django.db import transaction
from oscar.core.loading import get_class, get_model from oscar.core.loading import get_class, get_model
from oscar.test.factories import UserFactory from oscar.test.factories import UserFactory
from ecommerce.core.models import SiteConfiguration
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
Order = get_model('order', 'Order') Order = get_model('order', 'Order')
...@@ -60,10 +59,9 @@ class Command(BaseCommand): ...@@ -60,10 +59,9 @@ class Command(BaseCommand):
logger.exception(msg) logger.exception(msg)
raise CommandError(msg) raise CommandError(msg)
try: site = partner.default_site
site = partner.siteconfiguration.site if not site:
except SiteConfiguration.DoesNotExist: msg = 'No default site exists for partner {}!'.format(partner.id)
msg = 'No Site Configuration exists for partner {}!'.format(partner.id)
logger.exception(msg) logger.exception(msg)
raise CommandError(msg) raise CommandError(msg)
......
...@@ -26,7 +26,7 @@ class FakeOrdersTests(TestCase): ...@@ -26,7 +26,7 @@ class FakeOrdersTests(TestCase):
) )
) )
def test_site_configuration_does_not_exist(self): def test_site_does_not_exist(self):
partner = PartnerFactory() partner = PartnerFactory()
product = create_product() product = create_product()
stockrecord = create_stockrecord(product=product, partner_name=partner.name) stockrecord = create_stockrecord(product=product, partner_name=partner.name)
...@@ -37,13 +37,15 @@ class FakeOrdersTests(TestCase): ...@@ -37,13 +37,15 @@ class FakeOrdersTests(TestCase):
( (
LOGGER_NAME, LOGGER_NAME,
'EXCEPTION', 'EXCEPTION',
'No Site Configuration exists for partner {}!'.format(partner.id) 'No default site exists for partner {}!'.format(partner.id)
) )
) )
def test_create_fake_orders(self): def test_create_fake_orders(self):
partner = PartnerFactory() site_configuration = SiteConfigurationFactory()
SiteConfigurationFactory(partner=partner) partner = site_configuration.partner
partner.default_site = site_configuration.site
partner.save()
product = create_product() product = create_product()
stockrecord = create_stockrecord(product=product, partner_name=partner.name) stockrecord = create_stockrecord(product=product, partner_name=partner.name)
self.assertEqual(Order.objects.all().count(), 0) self.assertEqual(Order.objects.all().count(), 0)
......
...@@ -271,7 +271,8 @@ class SiteMixin(object): ...@@ -271,7 +271,8 @@ class SiteMixin(object):
base_cookie_domain=domain, base_cookie_domain=domain,
) )
self.partner = self.site_configuration.partner self.partner = self.site_configuration.partner
self.site = self.site_configuration.site self.partner.default_site = self.site = self.site_configuration.site
self.partner.save()
self.request = RequestFactory(SERVER_NAME=domain).get('') self.request = RequestFactory(SERVER_NAME=domain).get('')
self.request.session = None self.request.session = None
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment