def screenshot_set_create_bundle_view(request, set_id=None): my_set, shots = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id, enable_logged_out=False) if not my_set: return not_found() upload_ids = request.POST.getlist('upload_id') or [] try: upload_ids = [long(i) for i in upload_ids] except (ValueError, TypeError): logging.info('invalid upload_ids: %s (set id: %s)', upload_ids, set_id) return bad_request('Invalid `upload_id`, each should be long integer.') if not upload_ids: logging.info('upload ids: %s body: %s %s %s', upload_ids, request.body, request.POST, request.method) return bad_request('Invalid `upload_id`, each should be a GAE upload ID.') upload_names = filter(lambda n: n and n.strip(), request.POST.getlist('upload_name') or []) if len(upload_ids) != len(upload_names): logging.info('invalid upload_names: %s upload_ids: %s (set id: %s)', upload_ids, upload_names, set_id) return bad_request('Invalid `upload_name`, each should be an upload filename corresponding to the `upload_id` provided.') hq = request.POST.get('hq') == '1' bundle = screenshot_bundler.build_screenshot_bundle(my_set, request.user, upload_ids, upload_names, hq=hq) if not bundle: return unavailable_response() return api_response({ 'bundleId': bundle.encrypted_id, })
def screenshot_set_delete_view(request, set_id=None): my_set, _ = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id) if not my_set: return not_found() screenshots.delete_my_set(request.user, my_set) return ok_response()
def _screenshot_set_view_GET(request, set_id=None): the_set, shots = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id, enable_logged_out=True) if not the_set: return not_found() return api_response({ 'set': the_set.to_dict(), 'shots': [shot.to_dict() for shot in shots], })
def screenshot_delete_shot_view(request, set_id=None, shot_id=None): my_set, shots = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id) if not my_set: return not_found() shot = [s for s in shots if s.encrypted_id == shot_id] if not shot: return not_found() shot = shot[0] screenshots.delete_shot_in_set(my_set, shot) return ok_response()
def screenshot_set_duplicate_view(request, set_id=None): my_set, _ = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id) if not my_set or request.user.id != my_set.user.id: return bad_request('You dont have premissions.') form = NewSetForm(request.POST) if not form.is_valid(): return bad_request('Invalid new set.', errors=form.errors) new_set = screenshots.duplicate_set(my_set, form.cleaned_data['name'], form.cleaned_data['version'], form.cleaned_data['platform']) return api_response({ 'set': new_set.to_dict() })
def _screenshot_set_view_POST(request, set_id=None): my_set, shots = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id) form = EditSetForm(request.POST) if not form.is_valid(): return bad_request('Invalid update set form data.', errors=form.errors) kwargs = {} if request.POST.get('version'): kwargs['version'] = form.cleaned_data['version'] if request.POST.get('name'): kwargs['name'] = form.cleaned_data['name'] screenshots.update_set(my_set, **kwargs) return api_response({ 'set': my_set.to_dict(), })
def screenshot_shot_view(request, set_id=None, shot_id=None): my_set, shots = screenshots.get_set_and_shots_by_encrypted_id(request.user, set_id) if not my_set: return not_found() shot = [s for s in shots if s.encrypted_id == shot_id] if not shot: return not_found() shot = shot[0] if request.method == 'GET': return api_response({ 'shot': shot.to_dict(), }) form = CreateUpdateShotForm(request.POST) if not form.is_valid(): return bad_request('Invalid update shot data.', errors=form.errors) fields = form.cleaned_data post_keys = set(request.POST.keys()) for key in fields.keys(): if key not in post_keys: # default from the form del fields[key] if 'screenshot_image_id' in fields: fields['screenshot_image'] = fields['screenshot_image_id'] del fields['screenshot_image_id'] if 'background_image_id' in fields: fields['background_image'] = fields['background_image_id'] del fields['background_image_id'] screenshots.update_shot(shot, **fields) return api_response({ 'shot': shot.to_dict(), })