Fix MyAlbum code step1
This commit is contained in:
@ -282,3 +282,61 @@ ORDER BY
|
||||
CREATE INDEX idx_gps_checkins_cp_number ON gps_checkins(cp_number);
|
||||
CREATE INDEX idx_rog_location_cp ON rog_location(cp);
|
||||
*/
|
||||
|
||||
-- チェックポイントごとの集計VIEW
|
||||
-- チェックポイントごとの集計ビューを作成
|
||||
DROP VIEW IF EXISTS v_checkpoint_summary CASCADE;
|
||||
CREATE OR REPLACE VIEW v_checkpoint_summary AS
|
||||
WITH checkpoint_counts AS (
|
||||
SELECT
|
||||
e.event_id,
|
||||
ev.event_name,
|
||||
gc.cp_number,
|
||||
l.sub_loc_id,
|
||||
l.location_name,
|
||||
e.category_id,
|
||||
nc.category_name,
|
||||
COUNT(CASE
|
||||
WHEN gc.validate_location = true AND gc.buy_flag = false
|
||||
THEN 1
|
||||
END) as normal_checkins,
|
||||
COUNT(CASE
|
||||
WHEN gc.validate_location = true AND gc.buy_flag = true
|
||||
THEN 1
|
||||
END) as purchase_checkins
|
||||
FROM
|
||||
rog_entry e
|
||||
JOIN rog_newevent2 ev ON e.event_id = ev.id
|
||||
JOIN rog_newcategory nc ON e.category_id = nc.id
|
||||
JOIN gps_checkins gc ON ev.event_name = gc.event_code
|
||||
AND CAST(e.zekken_number AS TEXT) = gc.zekken_number
|
||||
LEFT JOIN rog_location l ON gc.cp_number = l.cp
|
||||
AND l."group" LIKE '%' || gc.event_code || '%'
|
||||
WHERE
|
||||
e.is_active = true
|
||||
AND gc.validate_location = true
|
||||
GROUP BY
|
||||
e.event_id,
|
||||
ev.event_name,
|
||||
gc.cp_number,
|
||||
l.sub_loc_id,
|
||||
l.location_name,
|
||||
e.category_id,
|
||||
nc.category_name
|
||||
)
|
||||
SELECT
|
||||
event_id,
|
||||
event_name,
|
||||
cp_number,
|
||||
sub_loc_id,
|
||||
location_name,
|
||||
category_id,
|
||||
category_name,
|
||||
normal_checkins,
|
||||
purchase_checkins
|
||||
FROM
|
||||
checkpoint_counts
|
||||
ORDER BY
|
||||
event_name,
|
||||
cp_number,
|
||||
category_id;
|
||||
@ -127,6 +127,8 @@ urlpatterns += [
|
||||
path('update-goal-time/', views.update_goal_time, name='update-goal-time'),
|
||||
path('get-goalimage/', views.get_goalimage, name='get-goalimage'),
|
||||
|
||||
path('get-photolist/', views.get_photo_list, name='get-photolist'),
|
||||
|
||||
]
|
||||
|
||||
if settings.DEBUG:
|
||||
|
||||
55
rog/views.py
55
rog/views.py
@ -2683,6 +2683,61 @@ def update_checkins_old(request):
|
||||
)
|
||||
|
||||
|
||||
@api_view(['GET'])
|
||||
def get_photo_list():
|
||||
print("/get_photo_list")
|
||||
|
||||
zekken = requests.args.get('zekken')
|
||||
password = requests.args.get('pw')
|
||||
event_code = requests.args.get('event')
|
||||
|
||||
zekken_conversion = {
|
||||
"MF3-160": "MZ3-160",
|
||||
"MF3-161": "MZ3-161",
|
||||
"MF3-162": "MZ3-162",
|
||||
"MF3-163": "MZ3-163",
|
||||
"MF5-170": "MZ5-170",
|
||||
"MF5-171": "MZ5-171",
|
||||
"MF5-172": "MZ5-172",
|
||||
"MF5-173": "MZ5-173",
|
||||
"MF5-174": "MZ5-174",
|
||||
"MF5-175": "MZ5-175",
|
||||
"MF5-176": "MZ5-176",
|
||||
"MF5-177": "MZ5-177",
|
||||
"MF5-178": "MZ5-178",
|
||||
"MF5-179": "MZ5-179"
|
||||
}
|
||||
|
||||
if zekken in zekken_conversion:
|
||||
zekken = zekken_conversion[zekken]
|
||||
|
||||
photo_list = []
|
||||
|
||||
photo_list.extend(_get_photo_list(zekken, event_code))
|
||||
|
||||
return JsonResponse({
|
||||
"status": "OK",
|
||||
"photo_list": photo_list,
|
||||
"report": _get_final_report(zekken, event_code)
|
||||
})
|
||||
|
||||
def _get_final_report(self, zekken, event_code):
|
||||
report = f"https://sumasenrogaining.s3.us-west-2.amazonaws.com/{event_code}/scoreboard/certificate_{zekken}.pdf"
|
||||
return report
|
||||
|
||||
def _get_photo_list(self,zekken, event_code):
|
||||
photos = []
|
||||
try:
|
||||
checkins = GpsCheckin.objects.filter(zekken_number=zekken, event_code=event_code)
|
||||
for checkin in checkins:
|
||||
if checkin.image_address:
|
||||
photos.append({
|
||||
"cp_number": checkin.cp_number,
|
||||
"photo_url": checkin.image_address.url
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error in _get_photo_list: {str(e)}")
|
||||
return photos
|
||||
|
||||
@api_view(['GET'])
|
||||
def export_excel(request, zekken_number, event_code):
|
||||
|
||||
Reference in New Issue
Block a user