1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 11:34:18 +00:00

First working version (1.0)

This commit is contained in:
Steffo 2019-12-25 02:41:52 +01:00
parent 363ce6373c
commit 7adef44e00
24 changed files with 1325 additions and 115 deletions

View file

@ -1,5 +1 @@
# `examplepack`
This is an example Pack for [Royalnet](https://github.com/Steffo99/royalnet)!
> To be updated with more info on how to create your own pack.
# `giftpack`

View file

@ -1,12 +0,0 @@
# Imports go here!
# TODO: If you create a new command, remember to import it here...
from .example import ExampleCommand
# Enter the commands of your Pack here!
# TODO: and add it to the list here!
available_commands = [
ExampleCommand,
]
# Don't change this, it should automatically generate __all__
__all__ = [command.__name__ for command in available_commands]

View file

@ -1,12 +0,0 @@
from typing import *
from royalnet.commands import *
from royalnet.utils import *
class ExampleCommand(Command):
name: str = "example"
description: str = "Say Hello to the world!"
async def run(self, args: CommandArgs, data: CommandData) -> None:
await data.reply("Hello world!")

View file

@ -1,10 +0,0 @@
from typing import *
from royalnet.commands import *
from royalnet.utils import *
class ExampleEvent(Event):
name = "example"
async def run(self, **kwargs) -> dict:
return {"hello": "world"}

View file

@ -1,13 +0,0 @@
from starlette.requests import Request
from starlette.responses import *
from royalnet.constellation import *
from royalnet.utils import *
class ApiExampleStar(PageStar):
path = "/api/example"
async def page(self, request: Request) -> JSONResponse:
return JSONResponse({
"hello": "world",
})

View file

@ -1,13 +0,0 @@
from starlette.requests import Request
from starlette.responses import *
from royalnet.constellation import *
from royalnet.utils import *
class ApiExcsampleStar(ExceptionStar):
error = 404
async def page(self, request: Request) -> JSONResponse:
return JSONResponse({
"error": "404 not found",
})

View file

@ -1,19 +0,0 @@
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declared_attr
class Example:
__tablename__ = "examples"
@declared_attr
def creator_id(self):
return Column(Integer, ForeignKey("users.uid"), primary_key=True)
@declared_attr
def creator(self):
return relationship("User", backref=backref("examples_createdx"))
@declared_attr
def example(self):
return Column(String, nullable=False, default="Hello world!")

View file

@ -1,2 +0,0 @@
# TODO: Increment this every new version of your pack!
semantic = "0.1.0"

View file

@ -0,0 +1,22 @@
# Imports go here!
from .addgift import AddgiftCommand
from .delgift import DelgiftCommand
from .getgift import GetgiftCommand
from .getgiftdst import GetgiftdstCommand
from .getgiftid import GetgiftidCommand
from .getgiftsrc import GetgiftsrcCommand
from .listgifts import ListgiftsCommand
# Enter the commands of your Pack here!
available_commands = [
AddgiftCommand,
DelgiftCommand,
GetgiftCommand,
GetgiftdstCommand,
GetgiftidCommand,
GetgiftsrcCommand,
ListgiftsCommand,
]
# Don't change this, it should automatically generate __all__
__all__ = [command.__name__ for command in available_commands]

View file

@ -0,0 +1,29 @@
from typing import *
from royalnet.commands import *
from royalnet.utils import *
from ..tables import XmasGift
class AddgiftCommand(Command):
name: str = "addgift"
aliases = ["newgift"]
description: str = "Aggiungi un nuovo regalo al pool."
async def run(self, args: CommandArgs, data: CommandData) -> None:
source = args[0]
destination = args[1]
extra_text = " ".join(args[2:])
xmasgift = self.alchemy.get(XmasGift)(
source=source,
destination=destination,
extra_text=extra_text,
)
data.session.add(xmasgift)
await data.session_commit()
await data.reply(f"🎁 Regalo creato:\n"
f"{xmasgift}")

View file

@ -0,0 +1,19 @@
from typing import *
from royalnet.commands import *
from ..tables import XmasGift
from sqlalchemy.sql.expression import func
class DelgiftCommand(Command):
name: str = "delgift"
description: str = "Elimina dal database il regalo con l'id specificato."
syntax: str = ""
async def run(self, args: CommandArgs, data: CommandData) -> None:
gift = data.session.query(self.alchemy.get(XmasGift)).filter_by(drawn=False, gift_id=int(args[0])).order_by(func.random()).first()
data.session.delete(gift)
await data.reply(f"🎁 Regalo eliminato (bye bye!):\n"
f"{gift}")
await data.session_commit()

View file

@ -0,0 +1,28 @@
from typing import *
from royalnet.commands import *
from royalnet.utils import *
from ..tables import XmasGift
from sqlalchemy.sql.expression import func
class GetgiftCommand(Command):
name = "getgift"
aliases = ["drawgift"]
description = "Estrai un regalo qualsiasi."
async def _get_gift(self, args, data):
# Requires postgres
return data.session.query(self.alchemy.get(XmasGift)).filter_by(drawn=False).order_by(func.random()).first()
async def run(self, args: CommandArgs, data: CommandData) -> None:
xmasgift = await self._get_gift(args, data)
if xmasgift is None:
raise CommandError("Nessun regalo sorteggiabile.")
await data.reply(f"🎁 Il prossimo regalo è...\n"
f"{xmasgift}!")
xmasgift.drawn = True
await data.session_commit()

View file

@ -0,0 +1,18 @@
from typing import *
from royalnet.commands import *
from .getgift import GetgiftCommand
from ..tables import XmasGift
from sqlalchemy.sql.expression import func
class GetgiftdstCommand(GetgiftCommand):
name: str = "getgiftdst"
aliases = ["drawgiftdst"]
description: str = "Estrai un regalo con un certo destinatario."
syntax: str = "{destinatario}"
async def _get_gift(self, args, data):
return data.session.query(self.alchemy.get(XmasGift)).filter_by(drawn=False, destination=args[0]).order_by(func.random()).first()

View file

@ -0,0 +1,18 @@
from typing import *
from royalnet.commands import *
from .getgift import GetgiftCommand
from ..tables import XmasGift
from sqlalchemy.sql.expression import func
class GetgiftidCommand(GetgiftCommand):
name: str = "getgiftid"
aliases = ["drawgiftid"]
description: str = "Estrai un regalo con un certo id."
syntax: str = "{id}"
async def _get_gift(self, args, data):
return data.session.query(self.alchemy.get(XmasGift)).filter_by(drawn=False, gift_id=int(args[0])).order_by(func.random()).first()

View file

@ -0,0 +1,18 @@
from typing import *
from royalnet.commands import *
from .getgift import GetgiftCommand
from ..tables import XmasGift
from sqlalchemy.sql.expression import func
class GetgiftsrcCommand(GetgiftCommand):
name: str = "getgiftsrc"
aliases = ["drawgiftsrc"]
description: str = "Estrai un regalo con un certo mittente."
syntax: str = "{mittente}"
async def _get_gift(self, args, data):
return data.session.query(self.alchemy.get(XmasGift)).filter_by(drawn=False, source=args[0]).order_by(func.random()).first()

View file

@ -0,0 +1,19 @@
from typing import *
from royalnet.commands import *
from ..tables import XmasGift
class ListgiftsCommand(Command):
name: str = "listgifts"
aliases = ["listgift"]
description: str = "Elenca tutti i regali registrati."
syntax: str = ""
async def run(self, args: CommandArgs, data: CommandData) -> None:
gifts = data.session.query(self.alchemy.get(XmasGift)).all()
msg = "🎁 Elenco regali:\n"
gift_msg = "\n".join([str(gift) for gift in gifts])
await data.reply(msg + gift_msg)

View file

@ -1,11 +1,8 @@
# Imports go here!
# TODO: If you create a new event, remember to import it here...
from .example import ExampleEvent
# Enter the commands of your Pack here!
# TODO: and add it to the list here!
available_events = [
ExampleEvent,
]
# Don't change this, it should automatically generate __all__

View file

@ -1,18 +1,13 @@
# Imports go here!
# TODO: If you create a new star, remember to import it here...
from .api_example import ApiExampleStar
from .api_excsample import ApiExcsampleStar
# Enter the PageStars of your Pack here!
# TODO: and to add it either to the list here if it is a PageStar...
available_page_stars = [
ApiExampleStar,
]
# Enter the ExceptionStars of your Pack here!
# TODO: or to the list here if it is an ExceptionStar!
available_exception_stars = [
ApiExcsampleStar,
]
# Don't change this, it should automatically generate __all__

View file

@ -1,9 +1,9 @@
# Imports go here!
from .xmasgift import XmasGift
# Enter the tables of your Pack here!
available_tables = [
XmasGift,
]
# Don't change this, it should automatically generate __all__

View file

@ -0,0 +1,34 @@
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declared_attr
class XmasGift:
__tablename__ = "xmasgifts"
@declared_attr
def gift_id(self):
return Column(Integer, primary_key=True)
@declared_attr
def source(self):
return Column(String, nullable=False)
@declared_attr
def destination(self):
return Column(String, nullable=False)
@declared_attr
def extra_text(self):
return Column(String, nullable=False, default="")
@declared_attr
def drawn(self):
return Column(Boolean, nullable=False, default=False)
def __str__(self):
msg = f"Regalo #{self.gift_id} da {self.source} a {self.destination}" + f": {self.extra_text}" if self.extra_text else ""
if self.drawn:
return f"⚫️ {msg}"
else:
return f"🔵 [b]{msg}[/b]"

1
giftpack/version.py Normal file
View file

@ -0,0 +1 @@
semantic = "1.0"

1105
poetry.lock generated Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,21 +1,12 @@
# Remember to run `poetry update` after you edit this file!
[tool.poetry]
# TODO: Insert here your Pack name!
name = "examplepack"
# TODO: Insert here your Pack description!
description = "An example pack for Royalnet."
# TODO: Increment this every new version of your pack!
version = "0.1.0"
# TODO: Set this to your full name and email!
authors = ["Name Surname <email@example.com>"]
# TODO: Set this to the license you want to use for your Pack!
license = ""
# TODO: Set this to the GitHub page of your pack (or another website)
homepage = "https://github.com/your-username/"
# TODO: Set this to a link to the Pack documentation (if there's any)
documentation = "https://gh.steffo.eu/royalpack/"
# TODO: Pick some classifiers to include your Pack in: https://pypi.org/classifiers/
name = "giftpack"
description = "A pack for the gift drawing at the Xmas 2019 family lunch"
version = "1.0"
authors = ["Stefano Pigozzi <ste.pigozzi@gmail.com>"]
license = "AGPL-3.0+"
homepage = "https://github.com/Steffo99/giftpack"
classifiers = [
"Development Status :: 3 - Alpha",
"Operating System :: OS Independent",
@ -29,11 +20,12 @@
python = "^3.8"
[tool.poetry.dependencies.royalnet]
version = "^5.1.6"
version = "^5.2"
# There will soon be a way to make all these optional
extras = [
"telegram",
"discord",
"matrix",
"alchemy_easy",
"bard",
"constellation",