Example #1
0
    def test_can_save_links(self):
        LinkFormSet = formset_factory(LinkForm,
                                      max_num=None,
                                      formset=BaseLinkFormSet)

        formset = LinkFormSet(
            data={
                'form-TOTAL_FORMS': 2,
                'form-INITIAL_FORMS': 0,
                'form-0-anchor': 'Anchor 1',
                'form-0-url': 'http://link1.com/',
                'form-1-anchor': 'Anchor 2',
                'form-1-url': 'http://link2.com/',
            })

        save_links(self.client.request, self.standard_user, formset)

        user = User.objects.get(id=self.standard_user.id)
        user_links = UserLink.objects.filter(user=user)

        link_anchors = [link.anchor for link in user_links]
        link_urls = [link.url for link in user_links]

        self.assertEqual(len(user_links), 2)
        self.assertIn('Anchor 1', link_anchors)
        self.assertIn('Anchor 2', link_anchors)
        self.assertIn('http://link1.com/', link_urls)
        self.assertIn('http://link2.com/', link_urls)
Example #2
0
    def test_can_save_links(self):
        LinkFormSet = formset_factory(LinkForm, max_num=None,
                                      formset=BaseLinkFormSet)

        formset = LinkFormSet(
            data={
                'form-TOTAL_FORMS': 2,
                'form-INITIAL_FORMS': 0,
                'form-0-anchor': 'Anchor 1',
                'form-0-url': 'http://link1.com/',
                'form-1-anchor': 'Anchor 2',
                'form-1-url': 'http://link2.com/',
            }
        )

        save_links(self.client.request, self.standard_user, formset)

        user = User.objects.get(id=self.standard_user.id)
        user_links = UserLink.objects.filter(user=user)

        link_anchors = [link.anchor for link in user_links]
        link_urls = [link.url for link in user_links]

        self.assertEqual(len(user_links), 2)
        self.assertIn('Anchor 1', link_anchors)
        self.assertIn('Anchor 2', link_anchors)
        self.assertIn('http://link1.com/', link_urls)
        self.assertIn('http://link2.com/', link_urls)
Example #3
0
def profile_settings(request):
    """
    Allows a user to update their own profile.
    """
    user = request.user

    has_skills = Skill.objects.count() > 0
    has_roles = Role.objects.count() > 0

    SkillFormSet = formset_factory(SkillForm, formset=BaseSkillFormSet)

    user_skills = UserSkill.objects.filter(user=user).order_by('skill__name')
    skill_data = [{'skill': s.skill, 'proficiency': s.proficiency}
                  for s in user_skills]

    LinkFormSet = formset_factory(LinkForm, formset=BaseLinkFormSet)

    user_links = UserLink.objects.filter(user=user).order_by('anchor')
    link_data = [{'anchor': l.anchor, 'url': l.url}
                 for l in user_links]

    if request.method == 'POST':
        form = ProfileForm(request.POST, user=user)
        skill_formset = SkillFormSet(request.POST, prefix='skill')
        link_formset = LinkFormSet(request.POST, prefix='link')

        if form.is_valid() and skill_formset.is_valid() \
           and link_formset.is_valid():
            # Save user info
            user.first_name = form.cleaned_data['first_name']
            user.last_name = form.cleaned_data['last_name']
            user.bio = form.cleaned_data['bio']
            user.roles = form.cleaned_data['roles']

            user.save()

            save_skills(request, user, skill_formset)
            save_links(request, user, link_formset)

            user_links = UserLink.objects.filter(user=user)
            match_link_to_brand(user_links)

            site = get_current_site(request)
            messages.success(request, _(
                'Your {} profile has been updated.'.format(site.name)))

    else:
        form = ProfileForm(user=user)
        skill_formset = SkillFormSet(initial=skill_data, prefix='skill')
        link_formset = LinkFormSet(initial=link_data, prefix='link')

    context = {
        'form': form,
        'skill_formset': skill_formset,
        'link_formset': link_formset,
        'has_skills': has_skills,
        'has_roles': has_roles,
    }

    return render(request, 'accounts/profile_settings.html', context)
Example #4
0
def profile_settings(request):
    """
    Allows a user to update their own profile.
    """
    user = request.user

    has_skills = Skill.objects.count() > 0
    has_roles = Role.objects.count() > 0

    SkillFormSet = formset_factory(SkillForm, formset=BaseSkillFormSet)

    user_skills = UserSkill.objects.filter(user=user).order_by('skill__name')
    skill_data = [{
        'skill': s.skill,
        'proficiency': s.proficiency
    } for s in user_skills]

    LinkFormSet = formset_factory(LinkForm, formset=BaseLinkFormSet)

    user_links = UserLink.objects.filter(user=user).order_by('anchor')
    link_data = [{'anchor': l.anchor, 'url': l.url} for l in user_links]

    if request.method == 'POST':
        form = ProfileForm(request.POST, user=user)
        skill_formset = SkillFormSet(request.POST, prefix='skill')
        link_formset = LinkFormSet(request.POST, prefix='link')

        forms = [form, link_formset]

        if has_skills:
            forms.append(skill_formset)

        if all([f.is_valid() for f in forms]):
            # Save user info
            user.full_name = form.cleaned_data['full_name']
            user.bio = form.cleaned_data['bio']
            user.roles = form.cleaned_data['roles']
            user.save()

            if has_skills:
                save_skills(request, user, skill_formset)

            save_links(request, user, link_formset)

            user_links = UserLink.objects.filter(user=user)
            match_link_to_brand(user_links)

            site = get_current_site(request)
            messages.success(
                request,
                _('Your {} profile has been updated.'.format(site.name)))

    else:
        form = ProfileForm(user=user)
        skill_formset = SkillFormSet(initial=skill_data, prefix='skill')
        link_formset = LinkFormSet(initial=link_data, prefix='link')

    context = {
        'form': form,
        'skill_formset': skill_formset,
        'link_formset': link_formset,
        'has_skills': has_skills,
        'has_roles': has_roles,
    }

    return render(request, 'accounts/profile_settings.html', context)