Ejemplo n.º 1
0
def get_positions(group, user, limit=20):
    threshold = 0.4
    actors = {x.pk: x for x in group.members.all()}
    groups = {
        x.actor_id: x.group for x in (
            models.Member.objects.
            annotate(untilnow=Case(
                When(until__isnull=False, then=F('until')),
                default=datetime.datetime.now(),
            )).
            filter(
                actor__ingroup=group,
                group__title='plitinė partija',
            ).
            select_related('group').
            order_by('untilnow', 'since')
        )
    }
    positions = services.compare_positions(group, user)
    compat = ((x, d) for x, d in positions if d < threshold)
    incompat = ((x, d) for x, d in reversed(positions) if d >= threshold)
    result = []
    for i, (left, right) in zip(range(limit), itertools.zip_longest(compat, incompat, fillvalue=(None, None))):
        result.append((
            _actor_details(groups, actors, *left),
            _actor_details(groups, actors, *right),
        ))
    return result
Ejemplo n.º 2
0
def get_positions(group, user, limit=20):
    threshold = 0.4
    actors = {x.pk: x for x in group.members.all()}
    groups = {
        x.actor_id: x.group for x in (
            models.Member.objects.
            annotate(untilnow=Case(
                When(until__isnull=False, then=F('until')),
                default=datetime.datetime.now(),
            )).
            filter(
                actor__ingroup=group,
                group__title='plitinė partija',
            ).
            select_related('group').
            order_by('untilnow', 'since')
        )
    }
    positions = services.compare_positions(group, user)
    compat = ((x, d) for x, d in positions if d < threshold)
    incompat = ((x, d) for x, d in reversed(positions) if d >= threshold)
    result = []
    for i, (left, right) in zip(range(limit), itertools.zip_longest(compat, incompat, fillvalue=(None, None))):
        result.append((
            _actor_details(groups, actors, *left),
            _actor_details(groups, actors, *right),
        ))
    return result
Ejemplo n.º 3
0
def test_compare_positions(app):
    user = factories.UserFactory()
    topic = factories.TopicFactory()
    factories.TopicCuratorFactory(user=user, topic=topic)

    # Fill topic with some content
    factories.create_topic_posts(topic, user, [
        ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas',
         'lrs.lt', '2006-11-26'),
        ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt',
         '2016-03-22', [
             (1, 0,
              'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.',
              [
                  (1, 'šiuolaikiška, modernu', True),
              ]),
             (1, 0,
              'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [
                  (-1, 'balsų pirkimas', None),
              ]),
         ]),
        ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [
            (0, 0,
             'Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.',
             [
                 (1, 'šiuolaikiška, modernu', None),
             ]),
        ]),
        ('quote', 'Juozas Bernatonis', 'seimo narys', 'delfi.lt', '2016-03-26', [
            (0, 1,
             'Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais.',
             [
                 (1, 'didės užsienio lietuvių aktyvumas rinkimuose', None),
             ]),
        ]),
        ('quote', 'Mantas Adomėnas', 'seimo narys', '15min.lt', '2006-03-22', [
            (0, 0,
             'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.',
             [
                 (1, 'šiuolaikiška, modernu', None),
             ]),
        ]),
    ])

    # Check topic was actually filled with correct data
    assert services.dump_topic_posts(topic) == '\n'.join([
        '( ) (y) Juozas Bernatonis (seimo narys)                                              delfi.lt 2016-03-26    ',
        ' |      Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais.                   (-1)',
        ' |      - (y) didės užsienio lietuvių aktyvumas rinkimuose                                                  ',
        ' |                                                                                                          ',
        '( ) (n) Mantas Adomėnas (seimo narys)                                          kauno.diena.lt 2016-03-22    ',
        ' |      Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.                                 (1)',
        ' |      - (y) šiuolaikiška, modernu < (counterargument)                                                     ',
        ' |      Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.                                      (1)',
        ' |      - (n) balsų pirkimas                                                                                ',
        ' |                                                                                                          ',
        '( ) (y) Eligijus Masiulis (seimo narys)                                              delfi.lt 2015-10-08    ',
        ' |      Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.          (0)',
        ' |      - (y) šiuolaikiška, modernu                                                                         ',
        ' |                                                                                                          ',
        ' o  (-) Balsavimo internetu koncepcijos patvirtinimas                                  lrs.lt 2006-11-26 (-1)',
        ' |                                                                                                          ',
        '( ) (y) Mantas Adomėnas (seimo narys)                                                15min.lt 2006-03-22    ',
        ' |      Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.                                 (0)',
        ' |      - (y) šiuolaikiška, modernu                                                                         ',
    ])

    mantas_adomenas = models.Actor.objects.get(first_name='Mantas',
                                               last_name='Adomėnas').pk
    eligijus_masiulis = models.Actor.objects.get(first_name='Eligijus',
                                                 last_name='Masiulis').pk

    group = factories.GroupFactory(
        members=[mantas_adomenas, eligijus_masiulis])

    # Check list of actor and user positions for quotes
    assert list(services.get_user_quote_positions(group, user)) == [
        (mantas_adomenas, -1.0, 1),
        (mantas_adomenas, -1.0, 1),
        (eligijus_masiulis, 1.0, 0),
        (mantas_adomenas, 1.0, 0),
    ]

    # Check list of actor and user positions for arguments
    assert list(services.get_user_argument_positions(group, user)) == [
        ('balsų pirkimas', mantas_adomenas, -1.0, -1.0),
        ('šiuolaikiška, modernu', mantas_adomenas, 0, -1.0),
        ('šiuolaikiška, modernu', eligijus_masiulis, 1.0, -1.0),
    ]

    # Check list of actor and user positions for events
    assert list(services.get_user_event_positions(group, user)) == []

    # Finally check if position comparison works
    assert services.compare_positions(group, user) == [
        (mantas_adomenas, 0.125),
        (eligijus_masiulis, 1.0),
    ]
Ejemplo n.º 4
0
def test_compare_positions(app):
    user = factories.UserFactory()
    topic = factories.TopicFactory()
    factories.TopicCuratorFactory(user=user, topic=topic)

    # Fill topic with some content
    factories.create_topic_posts(topic, user, [
        ('event', 0, 1, 'Balsavimo internetu koncepcijos patvirtinimas', 'lrs.lt', '2006-11-26'),
        ('quote', 'Mantas Adomėnas', 'seimo narys', 'kauno.diena.lt', '2016-03-22', [
            (1, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [
                (1, 'šiuolaikiška, modernu', True),
            ]),
            (1, 0, 'Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.', [
                (-1, 'balsų pirkimas', None),
            ]),
        ]),
        ('quote', 'Eligijus Masiulis', 'seimo narys', 'delfi.lt', '2015-10-08', [
            (0, 0, 'Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.', [
                (1, 'šiuolaikiška, modernu', None),
            ]),
        ]),
        ('quote', 'Juozas Bernatonis', 'seimo narys', 'delfi.lt', '2016-03-26', [
            (0, 1, 'Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais.', [
                (1, 'didės užsienio lietuvių aktyvumas rinkimuose', None),
            ]),
        ]),
        ('quote', 'Mantas Adomėnas', 'seimo narys', '15min.lt', '2006-03-22', [
            (0, 0, 'Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.', [
                (1, 'šiuolaikiška, modernu', None),
            ]),
        ]),
    ])

    # Check topic was actually filled with correct data
    assert services.dump_topic_posts(topic) == '\n'.join([
        '( ) (y) Juozas Bernatonis (seimo narys)                                              delfi.lt 2016-03-26    ',
        ' |      Žemas užsienio lietuvių aktyvumas susijęs su dalyvavimo rinkimuose sunkumais.                   (-1)',
        ' |      - (y) didės užsienio lietuvių aktyvumas rinkimuose                                                  ',
        ' |                                                                                                          ',
        '( ) (n) Mantas Adomėnas (seimo narys)                                          kauno.diena.lt 2016-03-22    ',
        ' |      Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.                                 (1)',
        ' |      - (y) šiuolaikiška, modernu < (counterargument)                                                     ',
        ' |      Atidaroma galimybė prekiauti balsais ir likti nebaudžiamam.                                      (1)',
        ' |      - (n) balsų pirkimas                                                                                ',
        ' |                                                                                                          ',
        '( ) (y) Eligijus Masiulis (seimo narys)                                              delfi.lt 2015-10-08    ',
        ' |      Mes palaikysim tokį įstatymą, nes turime žengti į priekį ir reaguoti į XXI a. iššūkius.          (0)',
        ' |      - (y) šiuolaikiška, modernu                                                                         ',
        ' |                                                                                                          ',
        ' o  (-) Balsavimo internetu koncepcijos patvirtinimas                                  lrs.lt 2006-11-26 (-1)',
        ' |                                                                                                          ',
        '( ) (y) Mantas Adomėnas (seimo narys)                                                15min.lt 2006-03-22    ',
        ' |      Nepasiduokime paviršutiniškiems šūkiams – šiuolaikiška, modernu.                                 (0)',
        ' |      - (y) šiuolaikiška, modernu                                                                         ',
    ])

    mantas_adomenas = models.Actor.objects.get(first_name='Mantas', last_name='Adomėnas').pk
    eligijus_masiulis = models.Actor.objects.get(first_name='Eligijus', last_name='Masiulis').pk

    group = factories.GroupFactory(members=[mantas_adomenas, eligijus_masiulis])

    # Check list of actor and user positions for quotes
    assert list(services.get_user_quote_positions(group, user)) == [
        (mantas_adomenas, -1.0, 1),
        (mantas_adomenas, -1.0, 1),
        (eligijus_masiulis, 1.0, 0),
        (mantas_adomenas, 1.0, 0),
    ]

    # Check list of actor and user positions for arguments
    assert list(services.get_user_argument_positions(group, user)) == [
        ('balsų pirkimas', mantas_adomenas, -1.0, -1.0),
        ('šiuolaikiška, modernu', mantas_adomenas, 0, -1.0),
        ('šiuolaikiška, modernu', eligijus_masiulis, 1.0, -1.0),
    ]

    # Check list of actor and user positions for events
    assert list(services.get_user_event_positions(group, user)) == [
    ]

    # Finally check if position comparison works
    assert services.compare_positions(group, user) == [
        (mantas_adomenas, 0.125),
        (eligijus_masiulis, 1.0),
    ]