Exemple #1
0
def main():
    setup_session(sys.argv[1])

    icons = {}
    frequencies = {}

    with transaction.manager:
        for valueset in DBSession.query(common.ValueSet).options(
            joinedload(common.ValueSet.parameter), joinedload_all(common.ValueSet.values, common.Value.domainelement)
        ):
            values = sorted(list(valueset.values), key=lambda v: v.domainelement.number)
            try:
                assert abs(sum(v.frequency for v in values) - 100) < 1
            except AssertionError:
                print valueset.name
                print [v.frequency for v in valueset.values]
                raise

            fracs = []
            colors = []

            for v in values:
                color = v.domainelement.jsondata["color"]
                frequency = round(v.frequency)
                assert frequency

                if frequency not in frequencies:
                    figure(figsize=(0.4, 0.4))
                    axes([0.1, 0.1, 0.8, 0.8])
                    coll = pie((int(100 - frequency), frequency), colors=("w", "k"))
                    coll[0][0].set_linewidth(0.5)
                    save("freq-%s" % frequency)
                    frequencies[frequency] = True

                v.jsondata = {"frequency_icon": "freq-%s.png" % frequency}
                fracs.append(frequency)
                colors.append(color)
                v.domainelement.jsondata = {"color": color, "icon": "pie-100-%s.png" % color}

            assert len(colors) == len(set(colors))
            fracs, colors = tuple(fracs), tuple(colors)

            basename = "pie-"
            basename += "-".join("%s-%s" % (f, c) for f, c in zip(fracs, colors))
            valueset.jsondata = {"icon": basename + ".png"}
            if (fracs, colors) not in icons:
                figure(figsize=(0.4, 0.4))
                axes([0.1, 0.1, 0.8, 0.8])
                coll = pie(tuple(reversed(fracs)), colors=["#" + _color for _color in reversed(colors)])
                for wedge in coll[0]:
                    wedge.set_linewidth(0.5)
                save(basename)
                icons[(fracs, colors)] = True
Exemple #2
0
    def test_setup_session(self):
        from clld.scripts.util import setup_session

        res = setup_session(
            '%s#main' % TESTS_DIR.joinpath('test.ini').as_posix(),
            create_engine('sqlite://'))
        self.assertEquals(res, 'tests')
Exemple #3
0
def test_setup_session(testsdir):
    from clld.scripts.util import setup_session

    res = setup_session(
        '%s#main' % (testsdir / 'test.ini').as_posix(),
        create_engine('sqlite://'))
    assert res == 'tests'
Exemple #4
0
    def test_setup_session(self):
        from clld.scripts.util import setup_session

        res = setup_session(
            '%s#main' % TESTS_DIR.joinpath('test.ini').as_posix(),
            create_engine('sqlite://'))
        self.assertEquals(res, 'tests')
Exemple #5
0
def with_session(args):
    setup_session(args.pkg_dir.parent.joinpath('development.ini').as_posix())
Exemple #6
0
def test_setup_session(testsdir):
    from clld.scripts.util import setup_session

    res = setup_session('%s#main' % (testsdir / 'test.ini').as_posix(),
                        create_engine('sqlite://'))
    assert res == 'tests'
Exemple #7
0
def main():
    setup_session(sys.argv[1])

    icons = {}
    frequencies = {}

    with transaction.manager:
        for valueset in DBSession.query(common.ValueSet).options(
                joinedload(common.ValueSet.parameter),
                joinedload_all(common.ValueSet.values,
                               common.Value.domainelement)):
            values = sorted(list(valueset.values),
                            key=lambda v: v.domainelement.number)
            try:
                assert abs(sum(v.frequency for v in values) - 100) < 1
            except AssertionError:
                print valueset.name
                print[v.frequency for v in valueset.values]
                raise

            fracs = []
            colors = []

            for v in values:
                color = v.domainelement.jsondata['color']
                frequency = round(v.frequency)
                assert frequency

                if frequency not in frequencies:
                    figure(figsize=(0.4, 0.4))
                    axes([0.1, 0.1, 0.8, 0.8])
                    coll = pie((int(100 - frequency), frequency),
                               colors=('w', 'k'))
                    coll[0][0].set_linewidth(0.5)
                    save('freq-%s' % frequency)
                    frequencies[frequency] = True

                v.jsondata = {'frequency_icon': 'freq-%s.png' % frequency}
                fracs.append(frequency)
                colors.append(color)
                v.domainelement.jsondata = {
                    'color': color,
                    'icon': 'pie-100-%s.png' % color
                }

            assert len(colors) == len(set(colors))
            fracs, colors = tuple(fracs), tuple(colors)

            basename = 'pie-'
            basename += '-'.join('%s-%s' % (f, c)
                                 for f, c in zip(fracs, colors))
            valueset.jsondata = {'icon': basename + '.png'}
            if (fracs, colors) not in icons:
                figure(figsize=(0.4, 0.4))
                axes([0.1, 0.1, 0.8, 0.8])
                coll = pie(
                    tuple(reversed(fracs)),
                    colors=['#' + _color for _color in reversed(colors)])
                for wedge in coll[0]:
                    wedge.set_linewidth(0.5)
                save(basename)
                icons[(fracs, colors)] = True
Exemple #8
0
def with_session(args):
    setup_session(args.pkg_dir.parent.joinpath('development.ini').as_posix())
Exemple #9
0
def with_session(args):
    setup_session(str(args.pkg_dir.parent.joinpath('development.ini')))
Exemple #10
0
def test_setup_session(testsdir):
    from clld.scripts.util import setup_session

    res = setup_session('{0}#main'.format(testsdir / 'test.ini'), create_engine('sqlite://'))
    assert res == 'tests'