def save_to_transifex(request, template=None): """Save translations to Transifex.""" log.debug("Save to Transifex.") if request.method != 'POST': log.error("Non-POST request") raise Http404 try: data = json.loads(request.POST['data']) except MultiValueDictKeyError as e: log.error(str(e)) return HttpResponse("error") """Check if user authenticated to Transifex.""" profile = UserProfile.objects.get(user=request.user) username = data.get('auth', {}) \ .get('username', profile.transifex_username) password = data.get('auth', {}) \ .get('password', base64.decodestring(profile.transifex_password)) if len(username) == 0 or len(password) == 0: return HttpResponse("authenticate") """Make PUT request to Transifex API.""" payload = [] for entity in data.get('strings'): obj = { # Identify translation strings using hashes "source_entity_hash": hashlib.md5( ':'.join([entity['original'], '']) .encode('utf-8')).hexdigest(), "translation": entity['translation'] } payload.append(obj) log.debug(json.dumps(payload, indent=4)) """Make PUT request to Transifex API.""" try: p = Project.objects.get(url=data['url']) except Project.DoesNotExist as e: log.error(str(e)) return HttpResponse("error") response = utils.req('put', p.transifex_project, p.transifex_resource, data['locale'], username, password, payload) """Save Transifex username and password.""" if data.get('auth', {}).get('remember', {}) == 1: profile.transifex_username = data['auth']['username'] profile.transifex_password = base64.encodestring( data['auth']['password']) profile.save() try: return HttpResponse(response.status_code) except AttributeError: return HttpResponse(response)
def save_to_transifex(request, template=None): """Save translations to Transifex.""" log.debug("Save to Transifex.") if request.method != "POST": log.error("Non-POST request") raise Http404 try: data = json.loads(request.POST["data"]) except MultiValueDictKeyError as e: log.error(str(e)) return HttpResponse("error") """Check if user authenticated to Transifex.""" profile = UserProfile.objects.get(user=request.user) username = data.get("auth", {}).get("username", profile.transifex_username) password = data.get("auth", {}).get("password", base64.decodestring(profile.transifex_password)) if len(username) == 0 or len(password) == 0: return HttpResponse("authenticate") """Make PUT request to Transifex API.""" payload = [] for entity in data.get("strings"): obj = { # Identify translation strings using hashes "source_entity_hash": hashlib.md5(":".join([entity["original"], ""]).encode("utf-8")).hexdigest(), "translation": entity["translation"], } payload.append(obj) log.debug(json.dumps(payload, indent=4)) """Make PUT request to Transifex API.""" try: p = Project.objects.get(url=data["url"]) except Project.DoesNotExist as e: log.error(str(e)) return HttpResponse("error") response = utils.req("put", p.transifex_project, p.transifex_resource, data["locale"], username, password, payload) """Save Transifex username and password.""" if data.get("auth", {}).get("remember", {}) == 1: profile.transifex_username = data["auth"]["username"] profile.transifex_password = base64.encodestring(data["auth"]["password"]) profile.save() try: return HttpResponse(response.status_code) except AttributeError: return HttpResponse(response)
def update_from_transifex(request, template=None): """Update all project locales from Transifex repository.""" log.debug("Update all project locales from Transifex repository.") if not request.user.has_perm('base.can_manage'): return render(request, '403.html', status=403) if request.method != 'POST': log.error("Non-POST request") raise Http404 try: pk = request.POST['pk'] transifex_project = request.POST['transifex_project'] transifex_resource = request.POST['transifex_resource'] except MultiValueDictKeyError as e: log.error(str(e)) return HttpResponse("error") try: p = Project.objects.get(pk=pk) except Project.DoesNotExist as e: log.error(str(e)) return HttpResponse("error") """Check if user authenticated to Transifex.""" profile, created = UserProfile.objects.get_or_create(user=request.user) username = request.POST.get( 'transifex_username', profile.transifex_username) password = request.POST.get( 'transifex_password', base64.decodestring(profile.transifex_password)) if len(username) == 0 or len(password) == 0: return HttpResponse("authenticate") for l in p.locales.all(): """Make GET request to Transifex API.""" response = utils.req('get', transifex_project, transifex_resource, l.code, username, password) """Save or update Transifex data to DB.""" if hasattr(response, 'status_code') and response.status_code == 200: entities = json.loads(response.content) for entity in entities: _save_entity(project=p, string=entity["key"], comment=entity["comment"]) if len(entity["translation"]) > 0: e = Entity.objects.get(project=p, string=entity["key"]) _save_translation( entity=e, locale=l, string=entity["translation"]) log.debug("Transifex data for " + l.name + " saved to DB.") else: return HttpResponse(response) """Save Transifex username and password.""" if 'remember' in request.POST and request.POST['remember'] == "on": profile.transifex_username = request.POST['transifex_username'] profile.transifex_password = base64.encodestring( request.POST['transifex_password']) profile.save() return HttpResponse(response.status_code)
def update_from_transifex(request, template=None): """Update all project locales from Transifex repository.""" log.debug("Update all project locales from Transifex repository.") if not request.user.has_perm('base.can_manage'): return render(request, '403.html', status=403) if request.method != 'POST': log.error("Non-POST request") raise Http404 try: pk = request.POST['pk'] transifex_project = request.POST['transifex_project'] transifex_resource = request.POST['transifex_resource'] except MultiValueDictKeyError as e: log.error(str(e)) return HttpResponse("error") try: p = Project.objects.get(pk=pk) except Project.DoesNotExist as e: log.error(str(e)) return HttpResponse("error") """Check if user authenticated to Transifex.""" profile = UserProfile.objects.get(user=request.user) username = request.POST.get('transifex_username', profile.transifex_username) password = request.POST.get( 'transifex_password', base64.decodestring(profile.transifex_password)) if len(username) == 0 or len(password) == 0: return HttpResponse("authenticate") for l in p.locales.all(): """Make GET request to Transifex API.""" response = utils.req('get', transifex_project, transifex_resource, l.code, username, password) """Save or update Transifex data to DB.""" if hasattr(response, 'status_code') and response.status_code == 200: entities = json.loads(response.content) for entity in entities: _save_entity(project=p, string=entity["key"], comment=entity["comment"]) if len(entity["translation"]) > 0: e = Entity.objects.get(project=p, string=entity["key"]) _save_translation(entity=e, locale=l, string=entity["translation"]) log.debug("Transifex data for " + l.name + " saved to DB.") else: return HttpResponse(response) """Save Transifex username and password.""" if 'remember' in request.POST and request.POST['remember'] == "on": profile.transifex_username = request.POST['transifex_username'] profile.transifex_password = base64.encodestring( request.POST['transifex_password']) profile.save() return HttpResponse(response.status_code)