Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor product selection dialogs #3499

Merged
merged 17 commits into from
Jan 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,4 @@ All notable, unreleased changes to this project will be documented in this file.
- Change TypeScript loader to speed up the build process - #3545 by @patrys
- Fix storybook dependencies conflict - #3544 by @dominik-zeglen
- Unique validation SKU when default variant create in GraphQL API - #3555 by @fowczarek
- Restyle product selection dialogs - #3499 by @dominik-zeglen, @maarcingebala
32 changes: 24 additions & 8 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"@types/enzyme": "^3.1.15",
"@types/moment-timezone": "^0.5.9",
"@types/react-helmet": "^5.0.7",
"@types/react-infinite-scroller": "^1.2.0",
"@types/storybook__addon-storyshots": "^3.4.3",
"@types/storybook__react": "^4.0.0",
"@types/string-similarity": "^1.2.0",
Expand Down Expand Up @@ -67,6 +68,7 @@
"react-apollo": "^2.3.2",
"react-dom": "^16.6.3",
"react-helmet": "^5.2.0",
"react-infinite-scroller": "^1.2.2",
"react-inlinesvg": "^0.8.1",
"react-jss": "^8.4.0",
"react-moment": "^0.7.7",
Expand Down
2 changes: 1 addition & 1 deletion saleor/checkout/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ class Cart(models.Model):
objects = CartQueryset.as_manager()

class Meta:
ordering = ('-last_change',)
ordering = ('-last_change', )

def __repr__(self):
return 'Cart(quantity=%s)' % (self.quantity,)
Expand Down
61 changes: 31 additions & 30 deletions saleor/graphql/order/mutations/draft_orders.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,53 +212,54 @@ def mutate(cls, root, info, id):
return DraftOrderComplete(order=order)


class DraftOrderLineCreate(BaseMutation):
order = graphene.Field(Order, description='A related draft order.')
order_line = graphene.Field(
OrderLine, description='A newly created order line.')
class DraftOrderLinesCreate(BaseMutation):
order = graphene.Field(
graphene.NonNull(Order), description='A related draft order.')
order_lines = graphene.List(
graphene.NonNull(OrderLine),
description='List of newly added order lines.', required=True)

class Arguments:
id = graphene.ID(
required=True,
description='ID of the draft order to add the lines to.')
input = OrderLineCreateInput(
required=True,
description=dedent("""
Variant line input consisting of variant ID and quantity of
products."""))
input = graphene.List(
OrderLineCreateInput, required=True,
description=dedent("""Fields required to add order lines."""))

class Meta:
description = 'Create an order line for a draft order.'
description = 'Create order lines for a draft order.'

@classmethod
@permission_required('order.manage_orders')
def mutate(cls, root, info, id, input):
errors = []
order = cls.get_node_or_error(info, id, errors, 'id', Order)
variant_id = input['variant_id']
variant = cls.get_node_or_error(
info, variant_id, errors, 'lines', ProductVariant)

if not (order or variant):
return DraftOrderLineCreate(errors=errors)

if not order:
return DraftOrderLinesCreate(errors=errors)
if order.status != OrderStatus.DRAFT:
cls.add_error(
errors, 'order_id', 'Only draft orders can be edited.')

quantity = input['quantity']
if quantity <= 0:
cls.add_error(
errors, 'quantity',
'Ensure this value is greater than or equal to 1.')

line = None
if not errors:
line = add_variant_to_order(
order, variant, quantity, allow_overselling=True)
recalculate_order(order)
return DraftOrderLineCreate(
order=order, order_line=line, errors=errors)
lines = []
for input_line in input:
variant_id = input_line['variant_id']
variant = cls.get_node_or_error(
info, variant_id, errors, 'variant_id', ProductVariant)
quantity = input_line['quantity']
if quantity > 0:
if variant:
line = add_variant_to_order(
order, variant, quantity, allow_overselling=True)
lines.append(line)
else:
cls.add_error(
errors, 'quantity',
'Ensure this value is greater than or equal to 1.')

recalculate_order(order)
return DraftOrderLinesCreate(
order=order, order_lines=lines, errors=errors)


class DraftOrderLineDelete(BaseMutation):
Expand Down
4 changes: 2 additions & 2 deletions saleor/graphql/order/schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from .enums import OrderStatusFilter
from .mutations.draft_orders import (
DraftOrderComplete, DraftOrderCreate, DraftOrderDelete,
DraftOrderLineCreate, DraftOrderLineDelete, DraftOrderLineUpdate,
DraftOrderLinesCreate, DraftOrderLineDelete, DraftOrderLineUpdate,
DraftOrderUpdate)
from .mutations.fulfillments import (
FulfillmentCancel, FulfillmentCreate, FulfillmentUpdateTracking)
Expand Down Expand Up @@ -67,7 +67,7 @@ class OrderMutations(graphene.ObjectType):
draft_order_complete = DraftOrderComplete.Field()
draft_order_create = DraftOrderCreate.Field()
draft_order_delete = DraftOrderDelete.Field()
draft_order_line_create = DraftOrderLineCreate.Field()
draft_order_lines_create = DraftOrderLinesCreate.Field()
draft_order_line_delete = DraftOrderLineDelete.Field()
draft_order_line_update = DraftOrderLineUpdate.Field()
draft_order_update = DraftOrderUpdate.Field()
Expand Down
1 change: 1 addition & 0 deletions saleor/graphql/product/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@ def resolve_thumbnail_url(self, info, *, size=None):
self.get_first_image(), size, method='thumbnail')
return info.context.build_absolute_uri(url)

@gql_optimizer.resolver_hints(prefetch_related='images')
def resolve_thumbnail(self, info, *, size=None):
image = self.get_first_image()
if not size:
Expand Down
12 changes: 6 additions & 6 deletions saleor/graphql/schema.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -587,22 +587,22 @@ input DraftOrderInput {
voucher: ID
}

type DraftOrderLineCreate {
type DraftOrderLineDelete {
errors: [Error!]
order: Order
orderLine: OrderLine
}

type DraftOrderLineDelete {
type DraftOrderLineUpdate {
errors: [Error!]
order: Order
orderLine: OrderLine
}

type DraftOrderLineUpdate {
type DraftOrderLinesCreate {
errors: [Error!]
order: Order
orderLine: OrderLine
order: Order!
orderLines: [OrderLine!]!
}

type DraftOrderUpdate {
Expand Down Expand Up @@ -876,7 +876,7 @@ type Mutations {
draftOrderComplete(id: ID!): DraftOrderComplete
draftOrderCreate(input: DraftOrderCreateInput!): DraftOrderCreate
draftOrderDelete(id: ID!): DraftOrderDelete
draftOrderLineCreate(id: ID!, input: OrderLineCreateInput!): DraftOrderLineCreate
draftOrderLinesCreate(id: ID!, input: [OrderLineCreateInput]!): DraftOrderLinesCreate
draftOrderLineDelete(id: ID!): DraftOrderLineDelete
draftOrderLineUpdate(id: ID!, input: OrderLineInput!): DraftOrderLineUpdate
draftOrderUpdate(id: ID!, input: DraftOrderInput!): DraftOrderUpdate
Expand Down
17 changes: 17 additions & 0 deletions saleor/menu/migrations/0012_auto_20190104_0443.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions saleor/menu/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ class Menu(models.Model):
json_content = JSONField(blank=True, default=dict)

class Meta:
ordering = ['pk']
ordering = ('pk', )
permissions = ((
'manage_menus', pgettext_lazy(
'Permission description', 'Manage navigation.')),)
'manage_menus',
pgettext_lazy('Permission description', 'Manage navigation.')), )

def __str__(self):
return self.name
Expand Down Expand Up @@ -46,7 +46,7 @@ class MenuItem(MPTTModel, SortableModel):
translated = TranslationProxy()

class Meta:
ordering = ('sort_order',)
ordering = ('sort_order', )
app_label = 'menu'

def __str__(self):
Expand Down
4 changes: 2 additions & 2 deletions saleor/order/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ class Order(models.Model):
objects = OrderQueryset.as_manager()

class Meta:
ordering = ('-pk',)
ordering = ('-pk', )
permissions = ((
'manage_orders',
pgettext_lazy('Permission description', 'Manage orders.')),)
Expand Down Expand Up @@ -308,7 +308,7 @@ class OrderLine(models.Model):
max_digits=5, decimal_places=2, default=Decimal('0.0'))

class Meta:
ordering = ('pk',)
ordering = ('pk', )

def __str__(self):
return self.product_name
Expand Down
2 changes: 1 addition & 1 deletion saleor/page/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class Page(SeoModel):
translated = TranslationProxy()

class Meta:
ordering = ('slug',)
ordering = ('slug', )
permissions = ((
'manage_pages', pgettext_lazy(
'Permission description', 'Manage pages.')),)
Expand Down
17 changes: 17 additions & 0 deletions saleor/payment/migrations/0005_auto_20190104_0443.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion saleor/payment/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ class Payment(models.Model):
validators=[MinValueValidator(1000)], null=True, blank=True)

class Meta:
ordering = ['pk']
ordering = ('pk', )

def __repr__(self):
return 'Payment(gateway=%s, is_active=%s, created=%s, charge_status=%s)' % (
Expand Down
21 changes: 21 additions & 0 deletions saleor/product/migrations/0083_auto_20190104_0443.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.