This repository has been archived by the owner on Nov 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 253
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: PR to upgrade django oscar to version 3.2
feat: resloved reserved keywords conflict feat: add data mmigration to make basket_lineattribute value json compatible docs: updated readme for 2u/release contributions (#3927) docs: add decision record for master branch split feat: add atlas pull support (#4051) Refs: FC-0012 OEP-58 feat: added refund functionality
- Loading branch information
1 parent
e3860eb
commit 2493b06
Showing
19 changed files
with
259 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
8. Master branch split from 2u/main | ||
------------------------------------------------------------ | ||
|
||
Status | ||
------ | ||
|
||
Accepted | ||
|
||
Context | ||
------- | ||
|
||
Both 2U and the Open edX community use ecommerce's master branch for releases. Occasionally, changes | ||
specific to 2U's business case are merged into code, which also influences the structure | ||
of the code that the community runs, even if the changes are not relevant or beneficial | ||
to the community at large. | ||
|
||
Additionally, 2U has internal compliance checks that can slow the release cycle of | ||
major changes to ecommerce (for example, the upgrade to Django 4.2). This puts the Open edX community at risk of releasing | ||
with deprecated packages. | ||
|
||
Decision | ||
-------- | ||
|
||
A new protected branch will be created named "2u/main", which 2U will continue to use | ||
as its own main branch, while leaving the "master" branch for use by the community. | ||
|
||
Consequences | ||
------------ | ||
|
||
This allows the community to move forward with contributions on "master" without risk of | ||
breaking functionality for 2U or 2U committing changes to "master" that are irrelevant or | ||
otherwise inappropriate for the community's use case. | ||
|
||
Because protected branches in ecommerce require a user with Write access to the repository, | ||
the "master" branch will now require someone from the community to review and manage | ||
code contributions to that branch. | ||
|
||
Rejected Alternatives | ||
--------------------- | ||
|
||
Repo fork | ||
~~~~~~~~~ | ||
|
||
Why not fork the repo entirely? 2U and the community use a shared set of tools for | ||
working in development environments. While working from separate branches and repo | ||
forks are functionally equivalent, working in separate branches allows for | ||
minimal updates to shared tooling to support this change. One can simply checkout a | ||
branch name, without needing the tooling to be updated to know about non-openedx | ||
git remotes. | ||
|
||
This is not a one way door, and if we decide later the a proper repo fork is a better | ||
solution, then we are open to making adjustments. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -92,5 +92,6 @@ ignore_dirs: | |
- i18n | ||
- assets | ||
- node_modules | ||
- tests | ||
- static/bower_components | ||
- static/build |
33 changes: 33 additions & 0 deletions
33
ecommerce/extensions/basket/migrations/0016_make_lineattribute_value_json_compatible.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# -*- coding: utf-8 -*- | ||
from django.core.paginator import Paginator | ||
from django.db import migrations | ||
|
||
|
||
def make_lineattribute_value_json_compatible(apps, schema_editor): | ||
""" | ||
Makes line attribute value json compatible. | ||
""" | ||
LineAttribute = apps.get_model("basket", "LineAttribute") | ||
attributes = LineAttribute.objects.order_by('id') | ||
paginator = Paginator(attributes, 1000) | ||
|
||
for page_number in paginator.page_range: | ||
page = paginator.page(page_number) | ||
updates = [] | ||
|
||
for obj in page.object_list: | ||
obj.value = '"{}"'.format(obj.value) | ||
updates.append(obj) | ||
|
||
LineAttribute.objects.bulk_update(updates, ['value']) | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('basket', '0015_add_paymentintentid'), | ||
] | ||
|
||
operations = [ | ||
migrations.RunPython(make_lineattribute_value_json_compatible, migrations.RunPython.noop), | ||
] |
19 changes: 19 additions & 0 deletions
19
ecommerce/extensions/basket/migrations/0017_alter_lineattribute_value.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Generated by Django 3.2.20 on 2023-12-05 10:34 | ||
|
||
import django.core.serializers.json | ||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('basket', '0016_make_lineattribute_value_json_compatible'), | ||
] | ||
|
||
operations = [ | ||
migrations.AlterField( | ||
model_name='lineattribute', | ||
name='value', | ||
field=models.JSONField(encoder=django.core.serializers.json.DjangoJSONEncoder, verbose_name='Value'), | ||
), | ||
] |
73 changes: 73 additions & 0 deletions
73
ecommerce/extensions/catalogue/migrations/0057_auto_20231205_1034.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
# Generated by Django 3.2.20 on 2023-12-05 10:34 | ||
|
||
from django.db import migrations, models | ||
import django.db.models.deletion | ||
import oscar.models.fields.slugfield | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('catalogue', '0056_auto_20231108_1355'), | ||
] | ||
|
||
operations = [ | ||
migrations.AlterModelOptions( | ||
name='option', | ||
options={'ordering': ['order', 'name'], 'verbose_name': 'Option', 'verbose_name_plural': 'Options'}, | ||
), | ||
migrations.AddField( | ||
model_name='historicaloption', | ||
name='help_text', | ||
field=models.CharField(blank=True, help_text='Help text shown to the user on the add to basket form', max_length=255, null=True, verbose_name='Help text'), | ||
), | ||
migrations.AddField( | ||
model_name='historicaloption', | ||
name='option_group', | ||
field=models.ForeignKey(blank=True, db_constraint=False, help_text='Select an option group if using type "Option" or "Multi Option"', null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='catalogue.attributeoptiongroup', verbose_name='Option Group'), | ||
), | ||
migrations.AddField( | ||
model_name='historicaloption', | ||
name='order', | ||
field=models.IntegerField(blank=True, db_index=True, help_text='Controls the ordering of product options on product detail pages', null=True, verbose_name='Ordering'), | ||
), | ||
migrations.AddField( | ||
model_name='option', | ||
name='help_text', | ||
field=models.CharField(blank=True, help_text='Help text shown to the user on the add to basket form', max_length=255, null=True, verbose_name='Help text'), | ||
), | ||
migrations.AddField( | ||
model_name='option', | ||
name='option_group', | ||
field=models.ForeignKey(blank=True, help_text='Select an option group if using type "Option" or "Multi Option"', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='product_options', to='catalogue.attributeoptiongroup', verbose_name='Option Group'), | ||
), | ||
migrations.AddField( | ||
model_name='option', | ||
name='order', | ||
field=models.IntegerField(blank=True, db_index=True, help_text='Controls the ordering of product options on product detail pages', null=True, verbose_name='Ordering'), | ||
), | ||
migrations.AlterField( | ||
model_name='historicaloption', | ||
name='type', | ||
field=models.CharField(choices=[('text', 'Text'), ('integer', 'Integer'), ('boolean', 'True / False'), ('float', 'Float'), ('date', 'Date'), ('select', 'Select'), ('radio', 'Radio'), ('multi_select', 'Multi select'), ('checkbox', 'Checkbox')], default='text', max_length=255, verbose_name='Type'), | ||
), | ||
migrations.AlterField( | ||
model_name='historicalproduct', | ||
name='slug', | ||
field=oscar.models.fields.slugfield.SlugField(allow_unicode=True, max_length=255, verbose_name='Slug'), | ||
), | ||
migrations.AlterField( | ||
model_name='option', | ||
name='type', | ||
field=models.CharField(choices=[('text', 'Text'), ('integer', 'Integer'), ('boolean', 'True / False'), ('float', 'Float'), ('date', 'Date'), ('select', 'Select'), ('radio', 'Radio'), ('multi_select', 'Multi select'), ('checkbox', 'Checkbox')], default='text', max_length=255, verbose_name='Type'), | ||
), | ||
migrations.AlterField( | ||
model_name='product', | ||
name='slug', | ||
field=oscar.models.fields.slugfield.SlugField(allow_unicode=True, max_length=255, verbose_name='Slug'), | ||
), | ||
migrations.AlterUniqueTogether( | ||
name='productattribute', | ||
unique_together={('code', 'product_class')}, | ||
), | ||
] |
19 changes: 19 additions & 0 deletions
19
ecommerce/extensions/order/migrations/0027_alter_lineattribute_value.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Generated by Django 3.2.20 on 2023-12-05 10:34 | ||
|
||
import django.core.serializers.json | ||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('order', '0026_auto_20231108_1355'), | ||
] | ||
|
||
operations = [ | ||
migrations.AlterField( | ||
model_name='lineattribute', | ||
name='value', | ||
field=models.JSONField(encoder=django.core.serializers.json.DjangoJSONEncoder, verbose_name='Value'), | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.