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):
course_title = options['course_title']
price = options['price']
partner = Partner.objects.get(short_code=options['partner_code'])
site = partner.siteconfiguration.site
site = partner.default_site
one_year = datetime.timedelta(days=365)
expires = timezone.now() + one_year
......
......@@ -55,7 +55,7 @@ class Command(BaseCommand):
partner_code = course_settings["partner"]
try:
partner = Partner.objects.get(short_code=partner_code)
site = partner.siteconfiguration.site
site = partner.default_site
except Partner.DoesNotExist:
logger.warning(partner_code + " partner does not exist")
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):
"""
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(
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)"),
......
......@@ -53,7 +53,7 @@ class Command(BaseCommand):
course_ids = map(unicode, self.options.get('course_ids', []))
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)
if options.get('direction') == HONOR_TO_AUDIT:
......
......@@ -7,7 +7,6 @@ from django.db import transaction
from oscar.core.loading import get_class, get_model
from oscar.test.factories import UserFactory
from ecommerce.core.models import SiteConfiguration
logger = logging.getLogger(__name__)
Order = get_model('order', 'Order')
......@@ -60,10 +59,9 @@ class Command(BaseCommand):
logger.exception(msg)
raise CommandError(msg)
try:
site = partner.siteconfiguration.site
except SiteConfiguration.DoesNotExist:
msg = 'No Site Configuration exists for partner {}!'.format(partner.id)
site = partner.default_site
if not site:
msg = 'No default site exists for partner {}!'.format(partner.id)
logger.exception(msg)
raise CommandError(msg)
......
......@@ -26,7 +26,7 @@ class FakeOrdersTests(TestCase):
)
)
def test_site_configuration_does_not_exist(self):
def test_site_does_not_exist(self):
partner = PartnerFactory()
product = create_product()
stockrecord = create_stockrecord(product=product, partner_name=partner.name)
......@@ -37,13 +37,15 @@ class FakeOrdersTests(TestCase):
(
LOGGER_NAME,
'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):
partner = PartnerFactory()
SiteConfigurationFactory(partner=partner)
site_configuration = SiteConfigurationFactory()
partner = site_configuration.partner
partner.default_site = site_configuration.site
partner.save()
product = create_product()
stockrecord = create_stockrecord(product=product, partner_name=partner.name)
self.assertEqual(Order.objects.all().count(), 0)
......
......@@ -271,7 +271,8 @@ class SiteMixin(object):
base_cookie_domain=domain,
)
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.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