Skip to content

Commit 69cbb61

Browse files
committed
retrieve first uploader if file has multiple versions (#155)
1 parent 924c6a0 commit 69cbb61

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

montage/labs.py

+28-9
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414
'img_name',
1515
'img_major_mime',
1616
'img_minor_mime',
17-
'actor_user AS img_user',
18-
'actor_name AS img_user_text',
19-
'img_timestamp']
17+
'IFNULL(oi.actor_user, ci.actor_user) AS img_user',
18+
'IFNULL(oi.actor_name, ci.actor_name) AS img_user_text',
19+
'img_timestamp',
20+
'oi_timestamp']
2021

2122

2223
class MissingMySQLClient(RuntimeError):
@@ -41,13 +42,22 @@ def fetchall_from_commonswiki(query, params):
4142
def get_files(category_name):
4243
query = '''
4344
SELECT {cols}
44-
FROM commonswiki_p.image
45-
LEFT JOIN actor ON img_actor=actor.actor_id
45+
FROM commonswiki_p.image AS i
46+
LEFT JOIN actor AS ci ON img_actor=ci.actor_id
47+
LEFT JOIN (SELECT oi_name,
48+
oi_actor,
49+
actor_user,
50+
actor_name,
51+
oi_timestamp
52+
FROM oldimage
53+
LEFT JOIN actor ON oi_actor=actor.actor_id) AS oi ON img_name=oi.oi_name
4654
JOIN page ON page_namespace = 6
4755
AND page_title = img_name
4856
JOIN categorylinks ON cl_from = page_id
4957
AND cl_type = 'file'
50-
AND cl_to = %s;
58+
AND cl_to = %s
59+
GROUP BY img_name
60+
ORDER BY oi_timestamp ASC;
5161
'''.format(cols=', '.join(IMAGE_COLS))
5262
params = (category_name.replace(' ', '_'),)
5363

@@ -59,9 +69,18 @@ def get_files(category_name):
5969
def get_file_info(filename):
6070
query = '''
6171
SELECT {cols}
62-
FROM commonswiki_p.image
63-
LEFT JOIN actor ON img_actor=actor.actor_id
64-
WHERE img_name = %s;
72+
FROM commonswiki_p.image AS i
73+
LEFT JOIN actor AS ci ON img_actor=ci.actor_id
74+
LEFT JOIN (SELECT oi_name,
75+
oi_actor,
76+
actor_user,
77+
actor_name,
78+
oi_timestamp
79+
FROM oldimage
80+
LEFT JOIN actor ON oi_actor=actor.actor_id) AS oi ON img_name=oi.oi_name
81+
WHERE img_name = %s
82+
GROUP BY img_name
83+
ORDER BY oi_timestamp ASC;
6584
'''.format(cols=', '.join(IMAGE_COLS))
6685
params = (filename.replace(' ', '_'),)
6786
results = fetchall_from_commonswiki(query, params)

0 commit comments

Comments
 (0)