Skip to content

Commit 1ba2642

Browse files
fix: resize group images (#8273)
* fix: resize group images * completing resize group banner image Co-authored-by: maze-runner <[email protected]> Co-authored-by: Sundaram Dubey <[email protected]>
1 parent d9653e7 commit 1ba2642

File tree

5 files changed

+73
-1
lines changed

5 files changed

+73
-1
lines changed

app/api/groups.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ def before_create_object(self, data, view_kwargs):
3737
if not has_access('is_owner', event_id=event):
3838
raise ForbiddenError({'source': ''}, "Event owner access required")
3939

40+
def after_create_object(self, group, data, view_kwargs):
41+
if data.get('banner_url'):
42+
start_image_resizing_tasks(group, data['banner_url'])
43+
4044
schema = GroupSchema
4145
decorators = (jwt_required,)
4246
methods = [
@@ -47,6 +51,7 @@ def before_create_object(self, data, view_kwargs):
4751
'model': Group,
4852
'methods': {
4953
'before_create_object': before_create_object,
54+
'after_create_object': after_create_object,
5055
},
5156
}
5257

@@ -125,6 +130,12 @@ def before_update_object(self, group, data, view_kwargs):
125130
if not has_access('is_owner', event_id=event):
126131
raise ForbiddenError({'source': ''}, "Event owner access required")
127132

133+
if (
134+
data.get('banner_url')
135+
):
136+
start_image_resizing_tasks(group, data['banner_url'])
137+
138+
128139
decorators = (
129140
api.has_permission(
130141
'is_user_itself', methods="PATCH,DELETE", fetch="user_id", model=Group
@@ -158,3 +169,10 @@ class GroupRelationship(ResourceRelationship):
158169
'session': db.session,
159170
'model': Group,
160171
}
172+
173+
174+
def start_image_resizing_tasks(group, banner_url):
175+
group_id = str(group.id)
176+
from .helpers.tasks import resize_group_images_task
177+
178+
resize_group_images_task.delay(group_id, banner_url)

app/api/helpers/tasks.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
from app.models.discount_code import DiscountCode
4444
from app.models.event import Event
4545
from app.models.exhibitor import Exhibitor
46+
from app.models.group import Group
4647
from app.models.order import Order
4748
from app.models.session import Session
4849
from app.models.speaker import Speaker
@@ -214,7 +215,6 @@ def resize_exhibitor_images_task(self, exhibitor_id, photo_url):
214215
photo_url, 'event-image', exhibitor_id, folder='exhibitors'
215216
)
216217
exhibitor.thumbnail_image_url = uploaded_images['thumbnail_image_url']
217-
exhibitor.banner_url = uploaded_images['large_image_url']
218218
save_to_db(exhibitor)
219219
logging.info(
220220
f'Resized images saved successfully for exhibitor with id: {exhibitor_id}'
@@ -227,6 +227,30 @@ def resize_exhibitor_images_task(self, exhibitor_id, photo_url):
227227
)
228228

229229

230+
@celery.task(base=RequestContextTask, name='resize.group.images', bind=True)
231+
def resize_group_images_task(self, group_id, banner_url):
232+
group = Group.query.get(group_id)
233+
try:
234+
logging.info(
235+
'Group image resizing tasks started for group with id {}: {}'.format(
236+
group_id, banner_url
237+
)
238+
)
239+
uploaded_images = create_save_image_sizes(
240+
banner_url, 'event-image', group.id
241+
)
242+
243+
group.thumbnail_image_url = uploaded_images['thumbnail_image_url']
244+
save_to_db(group)
245+
logging.info(f'Resized images saved successfully for group with id: {group_id}')
246+
except (requests.exceptions.HTTPError, requests.exceptions.InvalidURL, OSError):
247+
logging.exception(
248+
'Error encountered while generating resized images for group with id: {}'.format(
249+
group_id
250+
)
251+
)
252+
253+
230254
@celery.task(base=RequestContextTask, name='resize.user.images', bind=True)
231255
def resize_user_images_task(self, user_id, original_image_url):
232256
user = safe_query(User, 'id', user_id, 'user_id')

app/api/schema/groups.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ class Meta:
3333
social_links = fields.Nested(GroupSocialLinkSchema, many=True)
3434
logo_url = fields.Url(allow_none=True)
3535
banner_url = fields.Url(allow_none=True)
36+
thumbnail_image_url = fields.Url(dump_only=True)
3637
follower_count = fields.Integer(dump_only=True)
3738
about = fields.Str(allow_none=True)
3839

app/models/group.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class Group(SoftDeletionModel):
2121
social_links = db.Column(db.JSON)
2222
logo_url = db.Column(db.String)
2323
banner_url = db.Column(db.String)
24+
thumbnail_image_url = db.Column(db.String)
2425
about = db.Column(db.Text)
2526
created_at: datetime = db.Column(db.DateTime(timezone=True), default=datetime.utcnow)
2627
modified_at: datetime = db.Column(
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
"""empty message
2+
3+
Revision ID: ed141a4b57df
4+
Revises: 3a14893d21f0
5+
Create Date: 2021-10-06 18:48:55.752566
6+
7+
"""
8+
9+
from alembic import op
10+
import sqlalchemy as sa
11+
import sqlalchemy_utils
12+
13+
14+
# revision identifiers, used by Alembic.
15+
revision = 'ed141a4b57df'
16+
down_revision = '3a14893d21f0'
17+
18+
19+
def upgrade():
20+
# ### commands auto generated by Alembic - please adjust! ###
21+
op.add_column('groups', sa.Column('thumbnail_image_url', sa.String(), nullable=True))
22+
# ### end Alembic commands ###
23+
24+
25+
def downgrade():
26+
# ### commands auto generated by Alembic - please adjust! ###
27+
op.drop_column('groups', 'thumbnail_image_url')
28+
# ### end Alembic commands ###

0 commit comments

Comments
 (0)