Exemplo n.º 1
0
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,
  })
Exemplo n.º 2
0
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()
Exemplo n.º 3
0
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],
  })
Exemplo n.º 4
0
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()
Exemplo n.º 5
0
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()
  })
Exemplo n.º 6
0
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(),
  })
Exemplo n.º 7
0
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(),
  })