Skip to content

Commit 6e1e686

Browse files
committed
process images after creating cons
1 parent f1db57d commit 6e1e686

File tree

3 files changed

+41
-9
lines changed

3 files changed

+41
-9
lines changed

tcsocket/app/processing.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ async def contractor_set(
112112
conn,
113113
company,
114114
contractor: ContractorModel,
115+
process_profile_pic=True,
115116
skip_deleted=False,
116117
redis=None,
117118
ctx=None,
@@ -125,6 +126,7 @@ async def contractor_set(
125126
:param company: dict with company info, including id and public_key
126127
:param contractor: data about contractor
127128
:param skip_deleted: whether or not to skip deleted contractors (or delete them in the db.)
129+
:param process_profile_pic: whether or not to run process_image
128130
:return: Action: created, updated or deleted
129131
"""
130132
from .worker import process_image
@@ -186,7 +188,7 @@ async def contractor_set(
186188
)
187189
await _set_skills(conn, contractor.id, contractor.skills)
188190
await _set_labels(conn, company['id'], contractor.labels)
189-
if contractor.photo:
191+
if process_profile_pic and contractor.photo:
190192
# Sometimes creating the contractor is already done on a job, so don't need another one.
191193
job_kwargs = dict(company_key=company['public_key'], contractor_id=contractor.id, url=contractor.photo)
192194
if redis:

tcsocket/app/views/contractor.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,18 @@ async def contractor_set_mass(request):
4747
"""
4848
data = await request.json()
4949
conn = await request['conn_manager'].get_connection()
50-
for con_data in data['contractors']:
51-
contractor = ContractorModel(**con_data)
52-
await _contractor_set(
53-
conn=conn,
54-
redis=request.app['redis'],
55-
company=request['company'],
56-
contractor=contractor,
57-
)
50+
company = request['company']
51+
contractors = [ContractorModel(**con_data) for con_data in data['contractors']]
52+
for contractor in contractors:
53+
await _contractor_set(conn=conn, company=company, contractor=contractor, process_profile_pic=False)
54+
55+
# starting image processing here due to conflicting db connections on tests
56+
redis = request.app['redis']
57+
for contractor in contractors:
58+
if contractor.photo:
59+
await redis.enqueue_job(
60+
'process_image', company_key=company['public_key'], contractor_id=contractor.id, url=contractor.photo
61+
)
5862
return json_response(request, status='success')
5963

6064

tests/test_set_contractor.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -710,11 +710,21 @@ async def test_mass_contractor_create(cli, db_conn, company, image_download_url,
710710
await worker.run_check()
711711

712712
curr = await db_conn.execute(sa_contractors.select())
713+
all_cons = await curr.fetchall()
714+
assert all(con_id in tuple(c.id for c in all_cons) for con_id in (123, 246))
715+
716+
curr = await db_conn.execute(sa_contractors.select().where(sa_contractors.c.id == 123))
713717
result = await curr.first()
714718
assert result.id == 123
715719
assert result.first_name == 'Fred'
716720
assert not result.last_name
717721

722+
curr = await db_conn.execute(sa_contractors.select().where(sa_contractors.c.id == 246))
723+
result = await curr.first()
724+
assert result.id == 246
725+
assert result.first_name == 'Fred'
726+
assert not result.last_name
727+
718728
for con in data['contractors']:
719729
con['last_name'] = 'Bob'
720730
data['contractors'].append(
@@ -758,7 +768,23 @@ async def test_mass_contractor_create(cli, db_conn, company, image_download_url,
758768
await worker.run_check()
759769

760770
curr = await db_conn.execute(sa_contractors.select())
771+
all_cons = await curr.fetchall()
772+
assert all(con_id in tuple(c.id for c in all_cons) for con_id in (123, 246, 369))
773+
774+
curr = await db_conn.execute(sa_contractors.select().where(sa_contractors.c.id == 123))
761775
result = await curr.first()
762776
assert result.id == 123
763777
assert result.first_name == 'Fred'
764778
assert result.last_name == 'Bob'
779+
780+
curr = await db_conn.execute(sa_contractors.select().where(sa_contractors.c.id == 246))
781+
result = await curr.first()
782+
assert result.id == 246
783+
assert result.first_name == 'Fred'
784+
assert result.last_name == 'Bob'
785+
786+
curr = await db_conn.execute(sa_contractors.select().where(sa_contractors.c.id == 369))
787+
result = await curr.first()
788+
assert result.id == 369
789+
assert result.first_name == 'Jim'
790+
assert result.last_name == 'Bell'

0 commit comments

Comments
 (0)