Example #1
0
    def search_logs(self, filter={}, sort='', order='', page=0, perpage=None):
        statement = self.prepare_logs_search_statement(filter)

        statement = sort_statement(
            statement,
            self.logs,
            sort,
            order,
            'creation_time',
            True,
            [
                'creation_time',
                'id',
            ],
        )
        statement = paginate_statement(statement, page, perpage)

        result = self.connection.execute(statement).fetchall()
        if 0 == len(result):
            return IDCollection()

        logs = IDCollection()
        for row in result:
            log = LogEntry(
                id=row[self.logs.c.id],
                creation_time=row[self.logs.c.creation_time],
                scope=row[self.logs.c.scope],
                remote_origin=row[self.logs.c.remote_origin],
                subject_id=row[self.logs.c.subject_id],
                object_id=row[self.logs.c.object_id],
            )

            logs.add(log)
        return logs
Example #2
0
	def search_sticker_placements(
			self,
			filter={},
			sort='',
			order='',
			page=0,
			perpage=None
		):
		statement = self.prepare_sticker_placements_search_statement(filter)

		statement = sort_statement(
			statement,
			self.sticker_placements,
			sort,
			order,
			'placement_time',
			True,
			[
				'placement_time',
				'id',
			],
		)
		statement = paginate_statement(statement, page, perpage)

		result = self.connection.execute(statement).fetchall()
		if 0 == len(result):
			return IDCollection()

		sticker_ids = []
		for row in result:
			sticker_ids.append(row[self.sticker_placements.c.sticker_id])

		stickers = self.search_stickers(filter={'sticker_ids': sticker_ids})

		sticker_placements = IDCollection()
		for row in result:
			sticker_placement = StickerPlacement(
				id=row[self.sticker_placements.c.id],
				placement_time=row[self.sticker_placements.c.placement_time],
				subject_id=row[self.sticker_placements.c.subject_id],
				user_id=row[self.sticker_placements.c.user_id],
				sticker_id=row[self.sticker_placements.c.sticker_id],
				position_x=row[self.sticker_placements.c.position_x],
				position_y=row[self.sticker_placements.c.position_y],
				rotation=row[self.sticker_placements.c.rotation],
				scale=row[self.sticker_placements.c.scale],
			)
			if sticker_placement.sticker_id_bytes in stickers:
				sticker_placement.sticker = stickers.get(
					sticker_placement.sticker_id_bytes
				)

			sticker_placements.add(sticker_placement)
		return sticker_placements
Example #3
0
    def search_members(
        self,
        filter={},
        sort='',
        order='',
        page=0,
        perpage=None,
    ):
        statement = self.prepare_members_search_statement(filter)

        statement = sort_statement(
            statement,
            self.members,
            sort,
            order,
            'pledge_relationship_start_time',
            True,
            [
                'pledge_relationship_start_time',
                'id',
            ],
        )
        statement = paginate_statement(statement, page, perpage)

        result = self.connection.execute(statement).fetchall()
        if 0 == len(result):
            return IDCollection()

        members = IDCollection()
        for row in result:
            member = PatreonMember(
                id=row[self.members.c.id],
                client_id=row[self.members.c.client_id],
                campaign_id=row[self.members.c.campaign_id],
                tier_id=row[self.members.c.tier_id],
                user_id=row[self.members.c.user_id],
                amount_cents=row[self.members.c.amount_cents],
                last_fulfill_time=row[self.members.c.last_fulfill_time],
                last_charge_time=row[self.members.c.last_charge_time],
                last_charge_status=row[self.members.c.last_charge_status],
                lifetime_support_cents=row[
                    self.members.c.lifetime_support_cents],
                pledge_relationship_start_time=row[
                    self.members.c.pledge_relationship_start_time],
                name=row[self.members.c.name],
            )

            members.add(member)
        return members
Example #4
0
	def search_collected_stickers(
			self,
			filter={},
			sort='',
			order='',
			page=0,
			perpage=None
		):
		statement = self.prepare_collected_stickers_search_statement(filter)

		statement = sort_statement(
			statement,
			self.collected_stickers,
			sort,
			order,
			'receive_time',
			True,
			[
				'receive_time',
				'id',
			],
		)
		statement = paginate_statement(statement, page, perpage)

		result = self.connection.execute(statement).fetchall()
		if 0 == len(result):
			return IDCollection()

		sticker_ids = []
		for row in result:
			sticker_ids.append(row[self.collected_stickers.c.sticker_id])

		stickers = self.search_stickers(filter={'sticker_ids': sticker_ids})

		collected_stickers = IDCollection()
		for row in result:
			collected_sticker = CollectedSticker(
				id=row[self.collected_stickers.c.id],
				receive_time=row[self.collected_stickers.c.receive_time],
				user_id=row[self.collected_stickers.c.user_id],
				sticker_id=row[self.collected_stickers.c.sticker_id],
			)
			if collected_sticker.sticker_id_bytes in stickers:
				collected_sticker.sticker = stickers.get(
					collected_sticker.sticker_id_bytes
				)

			collected_stickers.add(collected_sticker)
		return collected_stickers
Example #5
0
    def search_clients(
        self,
        filter={},
        sort='',
        order='',
        page=0,
        perpage=None,
    ):
        statement = self.prepare_clients_search_statement(filter)

        statement = sort_statement(
            statement,
            self.clients,
            sort,
            order,
            'creation_time',
            True,
            [
                'creation_time',
                'id',
            ],
        )
        statement = paginate_statement(statement, page, perpage)

        result = self.connection.execute(statement).fetchall()
        if 0 == len(result):
            return IDCollection()

        clients = IDCollection()
        for row in result:
            client = PatreonClient(
                id=row[self.clients.c.id],
                creation_time=row[self.clients.c.creation_time],
                client_id=row[self.clients.c.client_id],
                client_secret=row[self.clients.c.client_secret],
                webhook_secret=row[self.clients.c.webhook_secret],
                access_token=row[self.clients.c.access_token],
                access_token_expiration_time=row[
                    self.clients.c.access_token_expiration_time],
                refresh_token=row[self.clients.c.refresh_token],
                campaign_id=row[self.clients.c.campaign_id],
                creation_name=row[self.clients.c.creation_name],
            )

            clients.add(client)
        return clients
Example #6
0
    def search_bans(
        self,
        filter={},
        sort='',
        order='',
        page=0,
        perpage=None,
    ):
        statement = self.prepare_bans_search_statement(filter)

        statement = sort_statement(
            statement,
            self.bans,
            sort,
            order,
            'creation_time',
            True,
            [
                'creation_time',
                'id',
            ],
        )
        statement = paginate_statement(statement, page, perpage)

        result = self.connection.execute(statement).fetchall()
        if 0 == len(result):
            return IDCollection()

        bans = IDCollection()
        for row in result:
            ban = Ban(
                id=row[self.bans.c.id],
                creation_time=row[self.bans.c.creation_time],
                remote_origin=row[self.bans.c.remote_origin],
                scope=row[self.bans.c.scope],
                reason=row[self.bans.c.reason],
                note=row[self.bans.c.note],
                expiration_time=row[self.bans.c.expiration_time],
                view_time=row[self.bans.c.view_time],
                created_by_user_id=row[self.bans.c.created_by_user_id],
                user_id=row[self.bans.c.user_id],
            )

            bans.add(ban)
        return bans
Example #7
0
	def search_stickers(
			self,
			filter={},
			sort='',
			order='',
			page=0,
			perpage=None
		):
		statement = self.prepare_stickers_search_statement(filter)

		statement = sort_statement(
			statement,
			self.stickers,
			sort,
			order,
			'creation_time',
			True,
			[
				'creation_time',
				'id',
			],
		)
		statement = paginate_statement(statement, page, perpage)

		result = self.connection.execute(statement).fetchall()
		if 0 == len(result):
			return IDCollection()

		stickers = IDCollection()
		for row in result:
			sticker = Sticker(
				id=row[self.stickers.c.id],
				creation_time=row[self.stickers.c.creation_time],
				name=row[self.stickers.c.name],
				display=row[self.stickers.c.display],
				category=row[self.stickers.c.category],
				category_order=row[self.stickers.c.category_order],
				group_bits=row[self.stickers.c.group_bits],
			)

			stickers.add(sticker)
		return stickers