def exit(request, project_slug, lang_code, resource_slug=None, *args, **kwargs): """ Exiting Lotte """ if request.method != 'POST': return HttpResponse(status=405) # Permissions handling # Project should always be available project = get_object_or_404(Project, slug=project_slug) team = Team.objects.get_or_none(project, lang_code) check = ProjectPermission(request.user) if not check.submit_translations(team or project) and not\ check.maintain(project): return permission_denied(request) language = Language.objects.by_code_or_alias(lang_code) resources = [] if resource_slug: resources = Resource.objects.filter(slug=resource_slug, project=project) if not resources: raise Http404 else: resources = Resource.objects.filter(project=project) data = simplejson.loads(request.raw_post_data) if data.get('updated'): modified = True # ActionLog & Notification for resource in resources: nt = 'project_resource_translated' context = {'project': project, 'resource': resource, 'language': language, 'sender': request.user} object_list = [project, resource, language] if team: object_list.append(team) action_logging(request.user, object_list, nt, context=context) else: modified = False lotte_done.send(None, request=request, resources=resources, language=language, modified=modified) redirect_url = reverse('team_detail', args=[project_slug, language.code]) if request.is_ajax(): json = simplejson.dumps(dict(redirect=redirect_url)) return HttpResponse(json, mimetype='application/json') return HttpResponseRedirect(redirect_url)
def exit(request, project_slug, lang_code, resource_slug=None, *args, **kwargs): """ Exiting Lotte """ # Permissions handling # Project should always be available project = get_object_or_404(Project, slug=project_slug) team = Team.objects.get_or_none(project, lang_code) check = ProjectPermission(request.user) if not check.submit_translations(team or project) and not\ check.maintain(project): return permission_denied(request) language = Language.objects.by_code_or_alias(lang_code) resources = [] if resource_slug: resources = Resource.objects.filter(slug=resource_slug, project=project) if not resources: raise Http404 url = reverse('resource_detail', args=[project_slug, resource_slug]) else: resources = Resource.objects.filter(project=project) url = reverse('project_detail', args=[project_slug]) if request.POST.get('updated', None) == 'true': modified = True # ActionLog & Notification for resource in resources: nt = 'project_resource_translated' context = {'project': project, 'resource': resource, 'language': language} object_list = [project, resource, language] action_logging(request.user, object_list, nt, context=context) if settings.ENABLE_NOTICES: txnotification.send_observation_notices_for(project, signal=nt, extra_context=context) else: modified = False lotte_done.send(None, request=request, resources=resources, language=language, modified=modified) if request.is_ajax(): json = simplejson.dumps(dict(redirect=url)) return HttpResponse(json, mimetype='application/json') return HttpResponseRedirect(url)
def exit(request, project_slug, lang_code, resource_slug=None, *args, **kwargs): """ Exiting Lotte """ if request.method != 'POST': return HttpResponse(status=405) # Permissions handling # Project should always be available project = get_object_or_404(Project, slug=project_slug) team = Team.objects.get_or_none(project, lang_code) check = ProjectPermission(request.user) if not check.submit_translations(team or project) and not\ check.maintain(project): return permission_denied(request) language = Language.objects.by_code_or_alias(lang_code) resources = [] if resource_slug: resources = Resource.objects.filter(slug=resource_slug, project=project) if not resources: raise Http404 else: resources = Resource.objects.filter(project=project) data = simplejson.loads(request.raw_post_data) if data.get('updated'): modified = True # ActionLog & Notification for resource in resources: nt = 'project_resource_translated' context = { 'project': project, 'resource': resource, 'language': language, 'sender': request.user } object_list = [project, resource, language] if team: object_list.append(team) action_logging(request.user, object_list, nt, context=context) else: modified = False lotte_done.send(None, request=request, resources=resources, language=language, modified=modified) redirect_url = reverse('team_detail', args=[project_slug, language.code]) if request.is_ajax(): json = simplejson.dumps(dict(redirect=redirect_url)) return HttpResponse(json, mimetype='application/json') return HttpResponseRedirect(redirect_url)