Example #1
0
class TabledDocument(ParliamentaryItem):
    """
    Tabled documents:
    a tabled document captures metadata about the document (owner, date, title, description) 
    and can have multiple physical documents attached.

        The tabled documents form should have the following :

    -Document title
    -Document link
    -Upload field (s)
    -Document source  / author agency (who is providing the document)
    (=> new table agencies)

    -Document submitter (who is submitting the document)
    (a person -> normally mp can be other user)

    It must be possible to schedule a tabled document for a sitting.
    """
    consignatory = one2many("consignatory",
                            "bungeni.models.domain.ConsignatoryContainer",
                            "item_id")
    event = one2many("event", "bungeni.models.domain.EventItemContainer",
                     "item_id")
    versions = one2many(
        "versions", "bungeni.models.domain.TabledDocumentVersionContainer",
        "content_id")
    listings_class = ListTabledDocument
Example #2
0
class Ministry(Group):
    """ a government ministry
    """
    ministers = one2many("ministers",
                         "bungeni.models.domain.MinisterContainer", "group_id")
    questions = one2many("questions",
                         "bungeni.models.domain.QuestionContainer",
                         "ministry_id")
    bills = one2many("bills", "bungeni.models.domain.BillContainer",
                     "ministry_id")
Example #3
0
class Constituency(Entity):
    """ a locality region, which elects an MP 
    """
    cdetail = one2many("cdetail",
                       "bungeni.models.domain.ConstituencyDetailContainer",
                       "constituency_id")
    sort_replace = {'province_id': ['province'], 'region_id': ['region']}
    parliamentmembers = one2many(
        "parliamentmembers",
        "bungeni.models.domain.MemberOfParliamentContainer", "constituency_id")
    listings_class = ListConstituency
    interface.implements(interfaces.ITranslatable)
Example #4
0
class Motion(ParliamentaryItem):
    consignatory = one2many("consignatory",
                            "bungeni.models.domain.ConsignatoryContainer",
                            "item_id")
    event = one2many("event", "bungeni.models.domain.EventItemContainer",
                     "item_id")
    versions = one2many("versions",
                        "bungeni.models.domain.MotionVersionContainer",
                        "content_id")

    sort_on = ['motion_number', 'submission_date']
    sort_dir = 'desc'
    listings_class = ListMotion
Example #5
0
class Bill(ParliamentaryItem):
    consignatory = one2many("consignatory",
                            "bungeni.models.domain.ConsignatoryContainer",
                            "item_id")
    event = one2many("event", "bungeni.models.domain.EventItemContainer",
                     "item_id")
    assignedgroups = one2many(
        "assignedgroups",
        "bungeni.models.domain.GroupGroupItemAssignmentContainer", "item_id")

    versions = one2many("versions",
                        "bungeni.models.domain.BillVersionContainer",
                        "content_id")
    sort_on = ['submission_date']
    sort_dir = 'desc'
    listings_class = ListBill
Example #6
0
class Sitting(GroupSitting):
    """ A Sitting """
    interface.implements(interfaces.IBungeniTranscriptsSitting)

    transcripts2 = one2many("transcripts2",
                            "bungeni.transcripts.domain.TranscriptContainer",
                            "sitting_id")
Example #7
0
class Minister(GroupMembership):
    """ A Minister
    defined by its user_group_membership in a ministry (group)
    """
    titles = one2many("titles",
                      "bungeni.models.domain.MemberRoleTitleContainer",
                      "membership_id")
    listings_class = ListMinister
Example #8
0
class Government(Group):
    """ a government
    """
    sort_on = ['start_date']
    ministries = one2many("ministries",
                          "bungeni.models.domain.MinistryContainer",
                          "parent_group_id")
    listings_class = ListGovernment
Example #9
0
class PartyMember(GroupMembership):
    """ 
    Member of a political party or group, defined by its group membership 
    """
    titles = one2many("titles",
                      "bungeni.models.domain.MemberRoleTitleContainer",
                      "membership_id")
    listings_class = ListPartyMember
Example #10
0
class CommitteeMember(GroupMembership):
    """ A Member of a committee
    defined by its membership to a committee (group)"""

    titles = one2many("titles",
                      "bungeni.models.domain.MemberRoleTitleContainer",
                      "membership_id")
    listings_class = ListCommitteeMember
Example #11
0
class ParliamentaryItem(Entity):
    """
    """
    interface.implements(interfaces.IBungeniContent, interfaces.ITranslatable)
    #     interfaces.IHeadFileAttachments)
    sort_replace = {'owner_id': ['last_name', 'first_name']}
    files = one2many("files", "bungeni.models.domain.AttachedFileContainer",
                     "item_id")
Example #12
0
class CommitteeStaff(GroupMembership):
    """
    Comittee Staff
    """
    titles = one2many("titles",
                      "bungeni.models.domain.MemberRoleTitleContainer",
                      "membership_id")
    listings_class = ListCommitteeStaff
Example #13
0
class Province(Entity):
    """
    Province of the Constituency
    """
    constituencies = one2many("constituencies",
                              "bungeni.models.domain.ConstituencyContainer",
                              "province_id")
    interface.implements(interfaces.ITranslatable)
Example #14
0
class Region(Entity):
    """
    Region of the constituency
    """
    constituencies = one2many("constituencies",
                              "bungeni.models.domain.ConstituencyContainer",
                              "region_id")
    interface.implements(interfaces.ITranslatable)
Example #15
0
class AgendaItem(ParliamentaryItem):
    """
    Generic Agenda Item that can be scheduled on a sitting
    """

    versions = one2many("versions",
                        "bungeni.models.domain.AgendaItemVersionContainer",
                        "content_id")
    listings_class = ListAgendaItem
Example #16
0
class GroupSitting(Entity):
    """Scheduled meeting for a group (parliament, committee, etc)"""
    interface.implements(interfaces.ITranslatable)

    attendance = one2many(
        "attendance", "bungeni.models.domain.GroupSittingAttendanceContainer",
        "sitting_id")

    items = one2many("items", "bungeni.models.domain.ItemScheduleContainer",
                     "sitting_id")

    sreports = one2many("sreports",
                        "bungeni.models.domain.Report4SittingContainer",
                        "sitting_id")

    @property
    def short_name(self):
        return self.start_date.strftime('%d %b %y %H:%M')
Example #17
0
class Transcript(ParliamentaryItem):
    """
    A Transcript
    """
    #interface.implements( interfaces.IAgendaItem )
    #interface.implements( bmi.IBungeniContent, interfaces.IBungeniTranscript  )

    versions = one2many(
        "versions", "bungeni.transcripts.domain.TranscriptVersionContainer",
        "content_id")
Example #18
0
class Question(ParliamentaryItem):
    #supplementaryquestions = one2many("supplementaryquestions",
    #"bungeni.models.domain.QuestionContainer", "supplement_parent_id")
    event = one2many("event", "bungeni.models.domain.EventItemContainer",
                     "item_id")
    consignatory = one2many("consignatory",
                            "bungeni.models.domain.ConsignatoryContainer",
                            "item_id")
    versions = one2many("versions",
                        "bungeni.models.domain.QuestionVersionContainer",
                        "content_id")
    sort_on = ['question_number', 'submission_date']
    sort_dir = 'desc'
    listings_class = ListQuestion

    def getParentQuestion(self):
        if self.supplement_parent_id:
            session = Session()
            parent = session.query(Question).get(self.supplement_parent_id)
            return parent.short_name
Example #19
0
class MemberOfParliament(GroupMembership):
    """
    defined by groupmembership and additional data
    """
    sort_on = ['last_name', 'first_name', 'middle_name']
    sort_replace = {
        "user_id": ["last_name", "first_name"],
        "constituency_id": ["name"],
        "party_id": ["name"]
    }
    titles = one2many("titles",
                      "bungeni.models.domain.MemberRoleTitleContainer",
                      "membership_id")
    listings_class = ListMemberOfParliament
Example #20
0
class Committee(Group):
    """ a parliamentary committee of MPs
    """
    committeemembers = one2many(
        "committeemembers", "bungeni.models.domain.CommitteeMemberContainer",
        "group_id")
    committeestaff = one2many("committeestaff",
                              "bungeni.models.domain.CommitteeStaffContainer",
                              "group_id")
    agendaitems = one2many("agendaitems",
                           "bungeni.models.domain.AgendaItemContainer",
                           "group_id")
    sittings = one2many("sittings",
                        "bungeni.models.domain.GroupSittingContainer",
                        "group_id")
    sort_replace = {
        'committee_type_id': [
            'committee_type',
        ]
    }
    assigneditems = one2many(
        "assigneditems",
        "bungeni.models.domain.ItemGroupItemAssignmentContainer", "group_id")
    listings_class = ListCommittee
Example #21
0
class ItemSchedule(Entity):
    """
    for which sitting was a parliamentary item scheduled
    """

    discussions = one2many(
        "discussions",
        "bungeni.models.domain.ScheduledItemDiscussionContainer",
        "schedule_id")

    @property
    def getItem(self):
        session = Session()
        s_item = self.item
        s_item.__parent__ = self
        return s_item

    @property
    def getDiscussion(self):
        session = Session()
        s_discussion = self.discussion
        s_discussion.__parent__ = self
        return s_discussion
Example #22
0
class Parliament(Group):
    """ a parliament
    """
    sort_on = ['start_date']
    sessions = one2many("sessions",
                        "bungeni.models.domain.ParliamentSessionContainer",
                        "parliament_id")
    committees = one2many("committees",
                          "bungeni.models.domain.CommitteeContainer",
                          "parent_group_id")
    governments = one2many("governments",
                           "bungeni.models.domain.GovernmentContainer",
                           "parent_group_id")
    parliamentmembers = one2many(
        "parliamentmembers",
        "bungeni.models.domain.MemberOfParliamentContainer", "group_id")
    politicalgroups = one2many(
        "politicalgroups", "bungeni.models.domain.PoliticalGroupContainer",
        "parent_group_id")
    bills = one2many("bills", "bungeni.models.domain.BillContainer",
                     "parliament_id")
    questions = one2many("questions",
                         "bungeni.models.domain.QuestionContainer",
                         "parliament_id")
    motions = one2many("motions", "bungeni.models.domain.MotionContainer",
                       "parliament_id")
    sittings = one2many("sittings",
                        "bungeni.models.domain.GroupSittingContainer",
                        "group_id")
    offices = one2many("offices", "bungeni.models.domain.OfficeContainer",
                       "parent_group_id")
    agendaitems = one2many("agendaitems",
                           "bungeni.models.domain.AgendaItemContainer",
                           "group_id")
    tableddocuments = one2many(
        "tableddocuments", "bungeni.models.domain.TabledDocumentContainer",
        "parliament_id")
    preports = one2many("preports", "bungeni.models.domain.ReportContainer",
                        "group_id")
    listings_class = ListParliament
Example #23
0
class PoliticalParty(PoliticalEntity):
    """ a political party (ouside the parliament)
    """
    partymembers = one2many("partymembers",
                            "bungeni.models.domain.PartyMemberContainer",
                            "group_id")
Example #24
0
class User(Entity):
    """Domain Object For A User.
    General representation of a person
    """

    interface.implements(interfaces.IBungeniUser, interfaces.ITranslatable)

    def __init__(self, login=None, **kw):
        if login:
            self.login = login
        super(User, self).__init__(**kw)
        self.salt = self._makeSalt()

    def _makeSalt(self):
        return ''.join(random.sample(string.letters[:52], 12))

    def setPassword(self, password):
        self.password = self.encode(password)

    def getPassword(self):
        return None

    def encode(self, password):
        return md5.md5(password + self.salt).hexdigest()

    def checkPassword(self, password_attempt):
        attempt = self.encode(password_attempt)
        return attempt == self.password

    def _get_status(self):
        return self.active_p

    def _set_status(self, value):
        self.active_p = value

    status = property(_get_status, _set_status)

    @property
    def fullname(self):
        return "%s %s" % (self.first_name, self.last_name)

    sort_on = ['last_name', 'first_name', 'middle_name']
    sort_replace = {'user_id': ['last_name', 'first_name']}
    addresses = one2many("addresses",
                         "bungeni.models.domain.UserAddressContainer",
                         "user_id")
    delegations = one2many("delegations",
                           "bungeni.models.domain.UserDelegationContainer",
                           "user_id")
    _password = property(getPassword, setPassword)

    bills = one2many("bills", "bungeni.models.domain.BillContainer",
                     "owner_id")
    questions = one2many("questions",
                         "bungeni.models.domain.QuestionContainer", "owner_id")
    motions = one2many("motions", "bungeni.models.domain.MotionContainer",
                       "owner_id")
    agendaitems = one2many("agendaitems",
                           "bungeni.models.domain.AgendaItemContainer",
                           "owner_id")
    tableddocuments = one2many(
        "tableddocuments", "bungeni.models.domain.TabledDocumentContainer",
        "owner_id")
Example #25
0
class PoliticalGroup(PoliticalEntity):
    """ a political group in a parliament
    """
    partymembers = one2many("partymembers",
                            "bungeni.models.domain.PartyMemberContainer",
                            "group_id")
Example #26
0
class AttachedFile(Entity):
    "Files attached to a parliamentary item"
    versions = one2many("versions",
                        "bungeni.models.domain.AttachedFileVersionContainer",
                        "content_id")
Example #27
0
class OfficeMember(GroupMembership):
    """ clerks, .... """
    titles = one2many("titles",
                      "bungeni.models.domain.MemberRoleTitleContainer",
                      "membership_id")
    listings_class = ListOfficeMember
Example #28
0
class Office(Group):
    """ parliamentary Office like speakers office,
    clerks office etc. internal only"""
    officemembers = one2many("officemembers",
                             "bungeni.models.domain.OfficeMemberContainer",
                             "group_id")