Exemple #1
0
def set_language(request):
    logger.debug('SET LANGAUGE')

    url = '/' + '/'.join(request.META['HTTP_REFERER'].split('/')[3:])
    match = resolve(url)
    logger.debug('MATCH: {0}'.format(match))
    if match:
        url = '{0}:{1}'.format(match.namespace, match.url_name)
    else:
        url = 'people:choose_language'

    if request.method == 'POST':

        if request.POST.get('language', '') != '':
            user_language = request.POST.get('language', '')
            person = get_or_create_person(request)
            set_current_language_for_person(person, user_language)
            translation.activate(user_language)
            request.session[translation.LANGUAGE_SESSION_KEY] = user_language

            response = redirect(
                reverse(url))  # render(request,  'people/set_language.html')
            response = set_language_cookie(response, user_language)
            logger.debug('RESPONSE: {0}'.format(response))
            return response

    else:
        return redirect(reverse(url))
Exemple #2
0
    def get(self, request, *args, **kwargs):
        person = get_or_create_person(self.request)
        demographic, created = Demographic.objects.get_or_create(person=person)
        if created:
            demographic.save()

        known_languages = KnownLanguage.objects.filter(person=person)

        if len(known_languages) == 0:
            url = reverse('people:choose_language') + '?next=people:profile'
            return redirect(url)
        elif len(known_languages) >= 1:

            # TODO: SUPPORT MULTIPLE LANGUAGES
            set_current_language_for_person(person,
                                            known_languages[0].language)
            current_language = known_languages[0]

            if current_language.level_of_proficiency is None:
                url = \
                    reverse('people:choose_language') + '?next=people:profile'
                return redirect(url)

        num_recordings = Recording.objects.filter(person=person).count()

        # Disabling this for now as we're not onboarding.
        # Also there seems to be a bug someone people
        # if num_recordings == 0 and person.just_signed_up:
        #     url = reverse('corpus:record')  # onboard?
        #     return redirect(url)

        return super(ProfileDetail, self).get(request, *args, **kwargs)
Exemple #3
0
def choose_language(request):
    person = get_or_create_person(request)
    if not person:
        return redirect(reverse('account_login'))

    current_language = get_current_language(request)
    if current_language:
        set_current_language_for_person(person, current_language)

    next_page = request.GET.get('next', None)

    known_languages = KnownLanguage.objects.filter(person=person).count()
    if known_languages > 0:
        extra = known_languages
    else:
        extra = 1

    unknown = get_unknown_languages(person)
    KnownLanguageFormset = inlineformset_factory(
        Person,
        KnownLanguage,
        form=KnownLanguageFormWithPerson,
        fields=('language', 'level_of_proficiency', 'person', 'accent',
                'dialect'),
        max_num=get_num_supported_languages(),
        extra=extra,
    )
    # formset  = KnownLanguageFormset(form_kwargs={'person':person})
    # KnownLanguageFormsetWithPerson = inlineformset_factory(Person, KnownLanguage, form=form,  fields=('language','level_of_proficiency','person'), max_num=get_num_supported_languages(), extra=known_languages+1)

    formset = KnownLanguageFormset(instance=person,
                                   form_kwargs={
                                       'person': person,
                                       'require_proficiency': True
                                   })

    if request.method == 'POST':

        # Upon first post to the person choosing their language
        # We can ensure that the user just signed up
        person.just_signed_up = False
        person.save()

        formset = KnownLanguageFormset(request.POST,
                                       request.FILES,
                                       instance=person,
                                       form_kwargs={
                                           'person': person,
                                           'require_proficiency': True
                                       })
        if formset.has_changed():
            if formset.is_valid():
                instances = formset.save()

                current_language = get_current_language(request)
                if not current_language:
                    for instance in instances:
                        if instance.active:
                            current_language = obj.language
                if not current_language:
                    current_language = translation.get_language()

                try:
                    set_current_language_for_person(person, current_language)
                except:
                    logger.debug(
                        "We may be trying to set a language when knownlanguage doens't exist"
                    )

                if next_page:
                    response = redirect(reverse(next_page))
                else:
                    response = redirect(reverse('people:choose_language'))

                response = set_language_cookie(response, current_language)

                return response

        else:
            if formset.is_valid():
                if next_page:
                    return redirect(reverse(next_page))
                # else:
                #     return redirect(reverse('people:choose_language'))
            # formset = KnownLanguageFormsetWithPerson(instance=person)

    response = render(
        request, 'people/choose_language.html', {
            'known_language_form': formset,
            'known_languages': known_languages,
            'unknown_languages': unknown,
            'just_signup_track': person.just_signed_up,
        })

    current_language = get_current_language(request)
    if current_language:
        set_current_language_for_person(person, current_language)
        response = set_language_cookie(response, current_language)
    else:
        logger.debug('no current language')
    return response