Source

scrapy-vrk / src / vrk / items.py

Full commit
# coding: utf-8

# This file is part of scrapy-vrk.
#
# scrapy-vrk is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# scrapy-vrk is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with scrapy-vrk. If not, see <http://www.gnu.org/licenses/>.

import string

from functools import partial

from scrapy.contrib.loader import processor
from scrapy.item import Field
from scrapy.item import Item


def parse_number(s):
    s = s.strip().strip('%').replace(',', '.')
    if '.' in s:
        return float(s)
    else:
        return int(s)


Text = partial(Field,
        input_processor=processor.MapCompose(string.strip),
        output_processor=processor.Compose(processor.Join(), string.strip))

Number = partial(Field,
        input_processor=processor.MapCompose(parse_number),
        output_processor=processor.TakeFirst())


class Constituency(Item):
    # Apygardos numeris
    constituency_no = Number()

    # Apygarda
    constituency = Text()

    # Apylinkių skaičius
    distircts = Number()

    # Apylinkių skaičius, iš kurių gauti duomenys
    distircts_data_received = Number()

    # Rinkėjų skaičius
    number_of_voters = Number()

    # Dalyvavo rinkėjų
    turnouts = Number()

    # Dalyvavo rinkėjų, procentais
    turnouts_percent = Number()

    # Negaliojančių biuletenių skaičius
    invalid_ballot_papers = Number()

    # Negaliojančių biuletenių procentas
    invalid_ballot_papers_percent = Number()

    # Galiojančių biuletenių skaičius
    valid_ballot_papers = Number()

    # Galiojančių biuletenių procentas
    valid_ballot_papers_percent = Number()


class Distirct(Item):
    # Apylinkės numeris
    distirct_no = Number()

    # Apylinkė
    distirct = Text()

    # Rinkėjų skaičius
    number_of_voters = Number()

    # Dalyvavo rinkėjų
    turnouts = Number()

    # Dalyvavo rinkėjų, procentais
    turnouts_percent = Number()

    # Negaliojančių biuletenių skaičius
    invalid_ballot_papers = Number()

    # Negaliojančių biuletenių procentas
    invalid_ballot_papers_percent = Number()

    # Galiojančių biuletenių skaičius
    valid_ballot_papers = Number()

    # Galiojančių biuletenių procentas
    valid_ballot_papers_percent = Number()


class DistirctResults(Item):
    # Apygardos numeris
    constituency_no = Number()

    # Apygarda
    constituency = Text()

    # Apylinkės numeris
    distirct_no = Number()

    # Apylinkė
    distirct = Text()

    # Partijos numeris rinkimuose
    party_no = Number()

    # Partijos pavadinimas
    party = Text()

    # Balsų skaičius apylinkėje
    in_distirct = Number()

    # Balsų skaičius paštu
    by_post = Number()

    # Balsų skaičius viso
    total = Number()

    # Galiojančių biuletenių procentas
    valid_ballot_papers_percent = Number()


class PreferentialVotes(Item):
    # Apygardos numeris
    constituency_no = Number()

    # Apygarda
    constituency = Text()

    # Apylinkės numeris
    distirct_no = Number()

    # Apylinkė
    distirct = Text()

    # Partijos pavadinimas
    party = Text()

    # Porinkiminis numeris sąraše
    post_election_no = Number()

    # Kadidato vardas ir pavardė
    candidate = Text()

    # Priešrinkiminis numeris sąraše
    pre_election_no = Number()

    # Pirmumo balsai
    preferential_votes = Number()


class PersonInterests(Item):
    person = Text()
    person_indication = Text()
    state = Text()
    relation_with_legal_person = Text()
    start_date = Text()
    end_date = Text()
    entity_code = Text()
    title = Text()
    other = Text()


class PersonAgreements(Item):
    person = Text()
    person_indication = Text()
    agreement = Text()
    agreement_from = Text()
    other_party_of_agreement = Text()
    start_date = Text()
    end_date = Text()
    amount = Number()
    entity_code = Text()
    title = Text()
    description = Text()


class PersonActivity(Item):
    person = Text()
    person_indication = Text()
    activity_type = Text()
    start_date = Text()
    end_date = Text()
    other = Text()