Skip to content

Commit

Permalink
Merge pull request #3499 from mirumee/refactor-product-selection-dialogs
Browse files Browse the repository at this point in the history
Refactor product selection dialogs
  • Loading branch information
maarcingebala committed Jan 7, 2019
2 parents 5e45dfc + 5a5df06 commit 95182d4
Show file tree
Hide file tree
Showing 43 changed files with 2,110 additions and 1,305 deletions.
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.

0 comments on commit 95182d4

Please sign in to comment.