class User(Model):
    __tablename__ = "users"
    __database__ = db
    __metadata__ = metadata

    id = Integer(primary_key=True)
    name = String(max_length=100)
    email = String(max_length=100)
Esempio n. 2
0
class Feedback(Table):
    _name = 'seat'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('row', String(255)),
        Column('number', String(10000)),
        Column('users', ForeignKey('users')),
    ]
Esempio n. 3
0
class Seat(Table):
    _name = 'seat'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('row', String(255)),
        Column('number', String(10000)),
        Column('users', ForeignKey('users')),
        Column('i_need_help', Boolean(), default=False),
    ]
Esempio n. 4
0
class AbsenceMeta(Table):
    _name = 'absence_meta'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('row', String(255)),
        Column('code', String(10)),
        Column('active', Boolean(), default=True),
        Column('users', ForeignKey('users')),
    ]
Esempio n. 5
0
class Feedback(Table):
    _name = 'feedback'
    _schema = [
        Column('lesson_review', String(10000)),
        Column('teacher_review', String(10000)),
        Column('material', Integer()),
        Column('teacher', ForeignKey('users')),
        Column('users', ForeignKey('users')),
    ]
Esempio n. 6
0
class Item(Model):
    """Representation of an Item, this is a Database Object."""

    __tablename__ = "item"
    __database__ = Database.database
    __metadata__ = Database.metadata
    __table_args__ = (UniqueConstraint('owner', 'item_id'),)

    id: int = Integer(primary_key=True, index=True)
    item_id: str = String(max_length=4)
    name: str = String(max_length=50)
    owner: Player = ForeignKey(Player)
    value: int = Integer()
    _rarity: int = Integer()
    _item_type: int = Integer()

    @property
    def embed_field(self) -> dict[str, str]:
        """Get a embed field that represents the Item"""
        return {
            "name": f"`{self.item_id}` | {self.rarity.emoji} {self.name}",
            "value": f"Value: {self.value} - Type: {self.item_type.name}"
        }

    @property
    async def embed(self) -> Embed:
        """Get a Embed that represents the Item"""
        embed = Embed(title=f"{self.rarity.emoji} {self.name}", colour=self.rarity.colour)
        embed.add_field(name="Item ID", value=f"`{self.item_id}`")
        embed.add_field(name="Value", value=str(self.value))

        bot = ArenaBot.instance
        owner = bot.get_user(self.owner.id)
        if owner is None:
            owner = await bot.fetch_user(self.owner.id)

        embed.set_author(name=owner.display_name, icon_url=owner.avatar_url)
        return embed

    @property
    def rarity(self) -> Rarity:
        """Get the rarity of the item."""
        return Rarity(self._rarity)

    @rarity.setter
    def rarity(self, value: Rarity) -> None:
        self._rarity = value.value

    @property
    def item_type(self) -> ItemType:
        """Get the type of the item."""
        return ItemType(self._item_type)

    @item_type.setter
    def item_type(self, value: ItemType) -> None:
        self._item_type = value.value
Esempio n. 7
0
class Comment(Model):
    __table__ = 'comments'

    id = String(primary_key=True, default=next_id)
    blog_id = String()
    user_id = String()
    user_name = String()
    user_image = String(column_type='varchar(500)')
    content = Text()
    created_at = Float(default=time.time)
Esempio n. 8
0
class Question(Table):
    _name = 'question'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('question', String(1000)),
        Column('answares', CodeString(2000), default=''),
        Column('possible_answare', String(1000), default=''),
        Column('qtype', String(50), default='plain'),
        Column('img', String(255), required=False, default=''),
        Column('users', ForeignKey('users'), default=DEFAULT_USER),
        Column('time_created', DateTime(), default=datetime.utcnow),
    ]
Esempio n. 9
0
class Lesson(Table):
    _name = 'lesson'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('title', String(255)),
        Column('description', String(10000)),
        Column('author', ForeignKey('users'), default=1),
        Column('file', String(255), required=False),
        Column('time_created', DateTime(), default=datetime.utcnow),
        Column('active', Boolean(), default=False),
        Column('quiz', ForeignKey('quiz'), required=False),
        Column('live_quiz', ForeignKey('live_quiz'), required=False),
    ]
Esempio n. 10
0
class User(Model):
    def __init__(self, **kw):
        super(User, self).__init__(**kw)

    __table__ = 'users'

    id = String(primary_key=True, default=next_id)
    email = String()
    password = String()
    admin = Bool(default=False)
    name = String()
    image = String(column_type='varchar(500)')
    created_at = Float(default=time.time)
Esempio n. 11
0
class EventUsers(Table):
    _name = 'event_users'
    _soft_restricted_keys = ['score', 'notes']
    _schema = [
        Column('event', ForeignKey('event')),
        Column('users', ForeignKey('users')),
        Column('confirmation', String(10), default='noans'),
        Column('accepted', Boolean(), default=False),
        Column('bring_power_cord', Boolean(), default=False),
        Column('attend_weekly', Boolean(), default=False),
        Column('notes', String(5000), default=''),
        Column('score', Float(), default=0, required=False),
        Column('i_helped', Boolean(), default=False),
        Column('helped', String(5000), required=False),
    ]
Esempio n. 12
0
class LessonFeedbackQuestion(Table):
    _name = 'lesson_feedback_question'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('author', ForeignKey('users'), default=DEFAULT_USER),
        Column('type', String(50)),
        Column('description', String(5000)),
        Column('answers', CodeString(10000))
    ]

    @classmethod
    async def get_by_lesson_id(cls, lid):
        return await cls.get_by_join("lesson_feedback_meta",
                                     lesson=lid,
                                     id=StringLiteral("question"))
Esempio n. 13
0
class Feedback(Table):
    _name = 'feedback'
    _schema = [
        Column('lesson_review', String(10000)),
        Column('teacher_review', String(10000)),
        Column('material', Integer()),
        Column('teacher', ForeignKey('users')),
        Column('users', ForeignKey('users')),
        # O tym czy dobrze było zorganizowane
        # Czy polecilbys nasze warsztaty znajomym
        # Czy moglibyśmy lepiej się reklamować
        # Czy jakieś zagadnienia były za mało poruszone Albo za dużo
        # Czego brakowało
        # https://docs.google.com/forms/d/e/1FAIpQLSctlgSwoKQoB_3Hc5bfu3RYLbz0TNKQmg23jnc8MJ3wwRJn7g/viewform
    ]
Esempio n. 14
0
class LessonFeedback(Table):
    _name = 'lesson_feedback'
    _schema = [
        Column('users', ForeignKey('users')),
        Column('lesson', ForeignKey('lesson')),
        Column('feedback', String(5000)),
    ]
Esempio n. 15
0
class LessonStatus(Table):
    _name = 'lesson_status'
    _schema = [
        Column('lesson', ForeignKey('lesson')),
        Column('users', ForeignKey('users')),
        Column('status', String(20)),
    ]
Esempio n. 16
0
class ExerciseStatus(Table):
    _name = 'exercise_status'
    _schema = [
        Column('exercise', ForeignKey('exercise')),
        Column('users', ForeignKey('users')),
        Column('status', String(20)),
    ]
Esempio n. 17
0
class EventSponsor(Table):
    _name = 'event_sponsor'
    _schema = [
        Column('order_number', Integer()),
        Column('event', ForeignKey('event')),
        Column('sponsor', ForeignKey('sponsor')),
        Column('rank', String(255)),
    ]
Esempio n. 18
0
class ExerciseAnsware(Table):
    _name = 'lesson_status'
    _schema = [
        Column('exercise', ForeignKey('exercise')),
        Column('users', ForeignKey('users')),
        Column('answare', CodeString(5000)),
        Column('status', String(20)),
    ]
Esempio n. 19
0
class Sponsor(Table):
    _name = 'sponsor'
    _schema = [
        Column('id', Integer(), primary_key=True),
        Column('name', String(255)),
        Column('description', String(5000)),
        Column('logo', String(255), required=False, default=''),
        Column('webpage', String(255), required=False, default=''),
        Column('linkedin', String(255), required=False),
        Column('twitter', String(255), required=False),
        Column('facebook', String(255), required=False),
        Column('city', String(255), required=False),
        Column('country', String(255), required=False),
    ]
Esempio n. 20
0
class ExerciseAnsware(Table):
    _name = 'exercise_answare'
    _schema = [
        Column('exercise', ForeignKey('exercise')),
        Column('users', ForeignKey('users')),
        Column('answare', CodeString(5000)),
        Column('first_answare', CodeString(5000), default=""),
        Column('status', String(20)),
    ]
Esempio n. 21
0
 def _schema(cls):
     return [
         Column('users', ForeignKey('users')),
         Column(cls._fk_col, ForeignKey(cls._fk_col)),
         Column('progress', Integer(), default=0),
         Column('score', Integer(), default=-1),
         Column('comment', CodeString(1000), required=False, default=''),
         Column('status', String(50), default='NotStarted'),
     ]
Esempio n. 22
0
class Quiz(Table):
    _name = 'quiz'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('title', String(255)),
        Column('description', String(10000)),
        Column('users', ForeignKey('users'), default=1),
        Column('time_created', DateTime(), default=datetime.utcnow),
    ]

    async def get_question(self, question_order=0):
        if question_order + 1 >= await self.get_question_amount():
            return {'last': True, 'msg': 'That was last question in the quiz.'}
        qq = await QuizQuestions.get_first_by_many_field_value(
            quiz=self.id, question_order=question_order)
        return await Question.get_by_id(qq.question)

    async def get_question_amount(self):
        return len(await QuizQuestions.get_by_field_value('quiz', self.id))
Esempio n. 23
0
class AbsenceMeta(Table):
    _name = 'absence_meta'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('lesson', ForeignKey('lesson')),
        Column('code', String(10)),
        Column('active', Boolean(), default=True),
        Column('users', ForeignKey('users')),
        Column('time_created', DateTime(), default=datetime.utcnow),
        Column('time_ended', DateTime()),
    ]
Esempio n. 24
0
class Exercise(Table):
    _name = 'exercise'
    _schema = [
        Column('id', Integer, primary_key=True),
        Column('title', String(255)),
        Column('task', CodeString(10000)),
        Column('possible_answare', CodeString(1000), required=False),
        Column('author', ForeignKey('users'), default=1),
        Column('time_created', DateTime(), default=datetime.utcnow),
        Column('lesson', ForeignKey('lesson')),
    ]
Esempio n. 25
0
class Blog(Model):
    __table__ = 'blog'

    id = String(primary_key=True, default=next_id)
    user_id = String()
    user_name = String()
    user_image = String(column_type='varchar(500)')
    name = String()
    summary = String(column_type='varchar(200)')
    content = Text()
    created_at = Float(default=time.time)
Esempio n. 26
0
class Event(Table):
    _name = 'event'
    _schema = [
        Column('id', Integer(), primary_key=True),
        Column('title', String(500), unique=True),
        Column('description', String(1000)),
        Column('country', String(255)),
        Column('city', String(255)),
        Column('geo_location_lang', Float()),
        Column('geo_location_long', Float()),
        Column('address', String(500)),
        Column('address_picture', String(500)),
        Column('address_desc', String(500)),
        Column('create_date', DateTime(), default=datetime.utcnow),
        Column('start_date', DateTime(), default=datetime.utcnow),
        Column('end_date', DateTime(), default=datetime.utcnow),
        Column('registration_start_date', DateTime(), default=datetime.utcnow),
        Column('registration_end_date', DateTime(), default=datetime.utcnow),
        Column('reg_active', Boolean(), default=True),
        Column('event_active', Boolean(), default=True),
    ]
Esempio n. 27
0
class User(Model):
    __table__ = 'users'

    name = String(primary_key=True, length=20)
    password = String(length=20)
Esempio n. 28
0
class Friend(Model):
    __table__ = 'friends'
    # userA and userB store user's name
    userA = String(length=20, primary_key=True)
    userB = String(length=20)
Esempio n. 29
0
class Users(Table):
    _restricted_keys = ['session_uuid', 'password']
    _soft_restricted_keys = ['score', 'notes']
    _name = 'users'
    _schema = [
        Column('id', Integer(), primary_key=True),
        Column('email', String(255), unique=True),
        Column('name', String(255)),
        Column('surname', String(255)),
        Column('password', String(1000)),
        Column('create_date', DateTime(), default=datetime.utcnow),
        Column('last_login', DateTime(), default=datetime.utcnow),
        Column('mentor', Boolean(), default=False),
        Column('organiser', Boolean(), default=False),
        Column('admin', Boolean(), default=False),
        Column('session_uuid', String(255), required=False),
        Column('img', String(255), required=False, default=''),
        Column('linkedin', String(255), required=False),
        Column('twitter', String(255), required=False),
        Column('facebook', String(255), required=False),
        Column('city', String(255), required=False),
        Column('education', String(255), required=False),
        Column('university', String(255), required=False),
        Column('t_shirt', String(10), required=False),
        Column('lang', String(20), required=False, default='pl'),
        Column('age', Integer(), required=False, default=99),
        Column('python', Boolean(), default=False),
        Column('operating_system', String(10), required=False),
        Column('description', String(5000), required=False),
        Column('motivation', String(5000), required=False),
        Column('what_can_you_bring', String(5000), required=False),
        Column('experience', String(5000), required=False),
        Column('app_idea', String(5000), required=False),
        Column('pyfunction', String(255), required=False),
        Column('confirmation', String(10), default='noans'),
        Column('active', Boolean(), default=False),
        Column('accepted_rules', Boolean(), default=False),
        Column('accepted', Boolean(), default=False),
        Column('bring_power_cord', Boolean(), default=False),
        Column('attend_weekly', Boolean(), default=False),
        Column('i_needed_help', Integer(), default=0),
        Column('notes', String(5000), default=''),
        Column('score', Float(), default=0, required=False),
        Column('i_helped', Boolean(), default=False),
        Column('helped', String(5000), required=False),
    ]

    _banned_user_keys = [
        'i_needed_help',
        'accepted_rules',
    ]
    _public_keys = _banned_user_keys + [
        'education',
        'university',
        't_shirt',
        'operating_system',
        'motivation',
        'experience',
        'app_idea',
        'accepted',
        'confirmation',
        'i_helped',
        'helped',
    ]

    async def create(self):
        self.password = hash_string(self.password)
        return await super().create()

    async def set_password(self, password):
        self.password = hash_string(password)

    @classmethod
    async def get_user_by_session_uuid(cls, session_uuid):
        try:
            return await cls.get_first('session_uuid', session_uuid)
        except DoesNotExist:
            return None

    async def get_public_data(self):
        data = await self.to_dict()
        data = safe_del_key(data, self._public_keys)
        return data

    async def get_my_user_data(self):
        data = await self.to_dict()
        data = safe_del_key(data, self._banned_user_keys)
        return data
Esempio n. 30
0
class Users(Table):
    _restricted_keys = ['session_uuid', 'password', 'magic_string', 'magic_string_date']
    _soft_restricted_keys = ['score', 'notes']
    _name = 'users'
    _schema = [
        Column('id', Integer(), primary_key=True),
        Column('email', String(255), unique=True),
        Column('name', String(255)),
        Column('surname', String(255)),
        Column('password', String(1000)),
        Column('magic_string', String(50), default='', required=False),
        Column('create_date', DateTime(), default=datetime.utcnow),
        Column('last_login', DateTime(), default=datetime.utcnow),
        Column('magic_string_date', DateTime(), default=datetime.utcnow),
        Column('mentor', Boolean(), default=False),
        Column('organiser', Boolean(), default=False),

        Column('admin', Boolean(), default=False),
        Column('session_uuid', String(255), required=False),

        Column('img', String(255), required=False, default=''),
        Column('linkedin', String(255), required=False),
        Column('twitter', String(255), required=False),
        Column('facebook', String(255), required=False),

        Column('city', String(255), required=False),
        Column('education', String(255), required=False),
        Column('university', String(255), required=False),
        Column('t_shirt', String(10), required=False),
        Column('lang', String(20), required=False, default='pl'),
        Column('age', Integer(), required=False, default=99),

        Column('python', Boolean(), default=False),
        Column('operating_system', String(10), required=False),
        Column('description', String(5000), required=False),
        Column('motivation', String(5000), required=False),
        Column('what_can_you_bring', String(5000), required=False),
        Column('experience', String(5000), required=False),
        Column('app_idea', String(5000), required=False),

        Column('pyfunction', String(255), required=False),

        Column('confirmation', String(10), default='noans'),
        Column('active', Boolean(), default=False),
        Column('accepted_rules', Boolean(), default=False),
        Column('accepted', Boolean(), default=False),
        Column('bring_power_cord', Boolean(), default=False),
        Column('attend_weekly', Boolean(), default=False),
        Column('i_needed_help', Integer(), default=0),

        Column('notes', String(5000), default=''),
        Column('score', Float(), default=0, required=False),
        Column('i_helped', Boolean(), default=False),
        Column('helped', String(5000), required=False),
        Column('gdpr', Boolean(), default=False),
    ]

    _banned_user_keys = [
        'i_needed_help', 'accepted_rules',
    ]
    _public_keys = _banned_user_keys + [
        'education', 'university', 't_shirt',
        'operating_system', 'motivation', 'experience',
        'app_idea', 'accepted', 'confirmation',
        'i_helped', 'helped',
    ]

    async def create(self):
        self.password = hash_string(self.password)
        return await super().create()

    @staticmethod
    async def validate_password(new_password):
        if len(new_password) < 8:
            return {"success": False, "msg": "Password needs to be at least 8 characters long"}
        if new_password == new_password.lower() or new_password == new_password.upper():
            return {
                "success": False,
                "msg": "Password needs to contain at least one small and one capital letter"
            }
        if not any([a for a in new_password if a.isnumeric()]):
            return {
                "success": False,
                "msg": "Password needs to contain at least one number"
            }
        if not any([a for a in new_password if not a.isalnum()]):
            return {
                "success": False,
                "msg": "Password needs to contain at least one small non alpha-numeric character like !, ? or *"
            }
        return {"success": True}

    async def set_password(self, password):
        self.password = hash_string(password)

    async def set_magic_string(self):
        self.magic_string = create_uuid()
        self.magic_string_date = datetime.utcnow()

    @classmethod
    async def get_user_by_session_uuid(cls, session_uuid):
        try:
            return await cls.get_first('session_uuid', session_uuid)
        except DoesNotExist:
            return None

    async def get_public_data(self):
        data = await self.to_dict()
        data = safe_del_key(data, self._public_keys)
        return data

    async def get_my_user_data(self):
        data = await self.to_dict()
        data = safe_del_key(data, self._banned_user_keys)
        return data

    async def update(self, **kwargs):
        if not self.magic_string_date:
            self.magic_string_date = datetime.utcnow()
        return await super().update(**kwargs)

    def is_only_attendee(self):
        return not (self.admin or self.mentor or self.organiser)