Example #1
0
    def create(self, db: Session, *, obj_in: CreateSchemaType) -> ModelType:
        obj_in_data = camel_dict_to_snake(jsonable_encoder(obj_in))
        start_time = None
        end_time = None

        if "start_time" in obj_in_data and obj_in_data["start_time"]:
            start_time = dateutil.parser.parse(obj_in_data["start_time"])

        if "end_time" in obj_in_data and obj_in_data["end_time"]:
            end_time = dateutil.parser.parse(obj_in_data["end_time"])

        db_party = models.Party(
            title=obj_in_data["title"],
            leader_id=obj_in_data["leader_id"],
            game_id=obj_in_data["game_id"],
            max_players=obj_in_data["max_players"],
            min_players=obj_in_data["min_players"],
            description=obj_in_data["description"],
            channel_id=obj_in_data["channel_id"],
            start_time=start_time,
            end_time=end_time,
        )

        db.add(db_party)
        db.commit()
        db.refresh(db_party)
        return db_party
Example #2
0
    def update(self, db: Session, *, db_obj: ModelType,
               obj_in: Union[UpdateSchemaType, Dict[str, Any]]) -> ModelType:
        obj_data = camel_dict_to_snake(jsonable_encoder(db_obj))

        if isinstance(obj_in, dict):
            update_data = obj_in
        else:
            update_data = obj_in.dict(exclude_unset=True)

        for field in obj_data:
            if (field in update_data and field == "start_time"
                    and isinstance(update_data["start_time"], str)):
                setattr(db_obj, field,
                        dateutil.parser.parse(update_data["start_time"]))
            elif (field in update_data and field == "end_time"
                  and isinstance(update_data["end_time"], str)):
                setattr(db_obj, field,
                        dateutil.parser.parse(update_data["end_time"]))
            elif field in update_data:
                setattr(db_obj, field, update_data[field])

        db.add(db_obj)
        db.commit()
        db.refresh(db_obj)
        return db_obj
Example #3
0
 def create(self, db: Session, *, obj_in: CreateSchemaType) -> ModelType:
     obj_in_data = camel_dict_to_snake(jsonable_encoder(obj_in))
     db_obj = self.model(**obj_in_data)
     db.add(db_obj)
     db.commit()
     db.refresh(db_obj)
     return db_obj
Example #4
0
def resource_fixture(user: User, topic: Topic, session: Session) -> Resource:
    resource = Resource(name="UNSW",
                        url="unsw.edu.au",
                        user_id=user.id,
                        topics=[topic])
    session.add(resource)
    session.commit()
    yield resource
Example #5
0
def superuser_fixture(session: Session) -> User:
    user = User(
        name="Albus Dumbledore",
        email=TEST_SUPERUSER_EMAIL,
        password_hash=security.get_password_hash(TEST_SUPERUSER_PASSWORD),
        is_superuser=True,
    )
    session.add(user)
    session.commit()
    yield user
Example #6
0
def mark_resource_broken(*,
                         session: Session = Depends(get_session),
                         resource_id: int):
    """Mark a resource as broken"""
    db_resource = get_resource(session, resource_id)
    db_resource.broken += 1
    session.add(db_resource)
    session.commit()
    session.refresh(db_resource)
    return db_resource
Example #7
0
def user_fixture(session: Session) -> User:
    user = User(
        name="Harry Potter",
        email=TEST_USER_EMAIL,
        password_hash=security.get_password_hash(TEST_USER_PASSWORD),
        stripe_customer_id="TEST_CUSTOMER_ID",
    )
    session.add(user)
    session.commit()
    yield user
Example #8
0
def test_read_things_with_things(session: Session):
    new_thing = Thing(id="123456",
                      authority_id="test",
                      resolved_url="http://foo.bar",
                      resolved_status=200,
                      resolved_content={"foo": "bar"})
    session.add(new_thing)
    session.commit()
    count, pages, data = read_things_summary(session, 0, 0)
    assert 1 == count
    assert 0 == pages
    assert len(data) > 0
Example #9
0
    def lock(self, db: Session, *, db_obj: ModelType) -> ModelType:
        """
        Lock Party

        :param db: Database Session
        :param db_obj: Party instance
        """
        db_obj.locked = True

        db.add(db_obj)
        db.commit()
        db.refresh(db_obj)
        return db_obj
Example #10
0
def test_get_thing_with_id_thing(session: Session):
    id = "123456"
    new_thing = Thing(id=id,
                      authority_id="test",
                      resolved_url="http://foo.bar",
                      resolved_status=200,
                      resolved_content={"foo": "bar"})
    session.add(new_thing)
    session.commit()
    shouldnt_be_none = get_thing_with_id(session, id)
    assert shouldnt_be_none is not None
    assert shouldnt_be_none.primary_key is not None
    assert id == shouldnt_be_none.id
Example #11
0
def update_course(*,
                  session: Session = Depends(get_session),
                  course_id: int,
                  course: CourseUpdate,
                  current_user: User = Depends(deps.get_current_user)):
    db_course = get_course(session, course_id, current_user)
    course_data = course.dict(exclude_unset=True)
    for key, value in course_data.items():
        setattr(db_course, key, value)
    session.add(db_course)
    session.commit()
    session.refresh(db_course)
    return db_course
Example #12
0
def test_last_time_thing_created(session: Session):
    test_authority = "test"
    created = last_time_thing_created(session, test_authority)
    assert created is None
    new_thing = Thing(id="123456",
                      authority_id=test_authority,
                      resolved_url="http://foo.bar",
                      resolved_status=200,
                      resolved_content={"foo": "bar"},
                      tcreated=datetime.datetime.now())
    session.add(new_thing)
    session.commit()
    new_created = last_time_thing_created(session, test_authority)
    assert new_created is not None
Example #13
0
def update_hero(*,
                session: Session = Depends(get_session),
                hero_id: int,
                hero: HeroUpdate):
    db_hero = session.get(Hero, hero_id)
    if not db_hero:
        raise HTTPException(status_code=404, detail="Hero not found")
    hero_data = hero.dict(exclude_unset=True)
    for key, value in hero_data.items():
        setattr(db_hero, key, value)
    session.add(db_hero)
    session.commit()
    session.refresh(db_hero)
    return db_hero
Example #14
0
def create_assignment(*,
                      session: Session = Depends(get_session),
                      course_id: int,
                      assignment: AssignmentCreate,
                      current_user: User = Depends(deps.get_current_user)):
    # check that the user is authorized to get this course
    get_course(session, course_id, current_user)
    # create the assignment
    assignment_db = Assignment.from_orm(assignment)
    assignment_db.course_id = course_id  # assign to this course
    session.add(assignment_db)
    session.commit()
    session.refresh(assignment_db)
    return assignment_db
Example #15
0
def _add_some_things(session: Session,
                     num_things: int,
                     authority_id: str,
                     tcreated: datetime.datetime = None):
    for i in range(num_things):
        new_thing = Thing(id=str(i),
                          authority_id=authority_id,
                          resolved_url="http://foo.bar",
                          resolved_status=200,
                          resolved_content={"foo": "bar"})
        if tcreated is not None:
            new_thing.tcreated = tcreated
        session.add(new_thing)
    session.commit()
Example #16
0
def assignment_fixture(course: Course, session: Session) -> Assignment:
    assignment = Assignment(
        name="Big Exam",
        description="Huge Exam",
        status="completed",
        due=datetime.date(2021, 12, 12),
        course_id=course.id,
        weight=50,
        mark=100,
        outcome="pass",
    )
    session.add(assignment)
    session.commit()
    yield assignment
Example #17
0
def course_fixture(user: User, session: Session) -> Course:
    course = Course(
        name="Discrete Maths",
        code="MATH1081",
        description="Hello world",
        status="completing",
        due=datetime.date(2021, 8, 29),
        user_id=user.id,
        syllabus=[{
            "item": 123
        }],
    )
    session.add(course)
    session.commit()
    yield course
Example #18
0
def load_csv_bom(bom_name, csv_file):
    create_db_and_tables()
    session = Session(engine)
    remove_page_bom(session, bom_name)
    bom_table = BOMTable(name=bom_name)

    for row in csv.DictReader(csv_file, delimiter=",", quotechar='"'):
        session.add(
            BOMItem(
                name=row["Name"],
                material=row["Material"],
                quantity=row["Quantity"],
                bom_table=bom_table,
            )
        )
    session.commit()
Example #19
0
File: users.py Project: hill/UEM2
def create_user(*, session: Session = Depends(get_session), user: UserCreate):

    # create the stripe customer
    customer = stripe.Customer.create(email=user.email, name=user.name)

    db_user = User.from_orm(
        user,
        {
            "password_hash": security.get_password_hash(user.password),
            "stripe_customer_id": customer["id"],
        },
    )
    session.add(db_user)
    session.commit()
    session.refresh(db_user)
    return db_user
Example #20
0
File: users.py Project: hill/UEM2
def update_user(
        *,
        session: Session = Depends(get_session),
        user_id: int,
        user: UserUpdate,
        current_user: User = Depends(deps.get_current_active_user),
):
    db_user = get_user(session, user_id)
    if db_user.id != current_user.id:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
    user_data = user.dict(exclude_unset=True)
    for key, value in user_data.items():
        setattr(db_user, key, value)
    session.add(db_user)
    session.commit()
    session.refresh(db_user)
    return db_user
Example #21
0
def update_resource(
        *,
        session: Session = Depends(get_session),
        resource_id: int,
        resource: ResourceUpdate,
        current_user: User = Depends(deps.get_current_user),
):
    db_resource = get_resource(session, resource_id)
    if not current_user.is_superuser and db_resource.user.id != current_user.id:
        raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED)
    resource_data = resource.dict(exclude_unset=True)
    for key, value in resource_data.items():
        setattr(db_resource, key, value)
    session.add(db_resource)
    session.commit()
    session.refresh(db_resource)
    return db_resource
Example #22
0
def vote_on_resource(*,
                     session: Session = Depends(get_session),
                     resource_id: int,
                     vote: int):
    """Upvote or downvote a resource using the `vote` query param.

    Use `/vote?vote=1` for an upvote, `/vote?vote=-1` for a downvote.
    Any user (including unauthorized users) may PATCH to this route.
    """
    if vote not in {1, -1}:
        raise HTTPException(
            status_code=400,
            detail="Vote may only upvote (1) or downvote (-1) once")
    db_resource = get_resource(session, resource_id)
    db_resource.votes += vote
    session.add(db_resource)
    session.commit()
    session.refresh(db_resource)
    return db_resource
Example #23
0
def many_resources_fixture(user: User, topic: Topic,
                           session: Session) -> List[Resource]:
    resources = [
        Resource(name="Google",
                 url="google.com",
                 user_id=user.id,
                 topics=[topic]),
        Resource(name="UNSW", url="unsw.edu.au", user_id=user.id, topics=[]),
        Resource(
            name="Introduction To Deep Learning",
            url="https://sebastianraschka.com/blog/2021/dl-course.html",
            user_id=user.id,
            topics=[topic],
        ),
    ]
    for resource in resources:
        session.add(resource)
    session.commit()
    yield resources
Example #24
0
def create_course(*,
                  session: Session = Depends(get_session),
                  course: CourseCreate,
                  current_user: User = Depends(deps.get_current_user)):
    db_course = Course.from_orm(course, {"user_id": current_user.id})

    session.add(db_course)
    session.commit()
    session.refresh(db_course)

    new_assignments = []
    for assignment in course.assignments:
        new_assignment = Assignment.from_orm(assignment,
                                             {"course_id": db_course.id})
        new_assignments.append(new_assignment)

    session.add_all(new_assignments)
    db_course.assignments = new_assignments
    session.commit()
    session.refresh(db_course)
    return db_course
Example #25
0
def create_plants():
    plant_1 = Plant(name="Hebe")
    plant_2 = Plant(name="Astilbe")
    plant_3 = Plant(name="Sedum")
    plant_4 = Plant(name="Helenium")
    plant_5 = Plant(name="Heather")

    session = Session(engine)

    session.add(plant_1)
    session.add(plant_2)
    session.add(plant_3)
    session.add(plant_4)
    session.add(plant_5)

    session.commit()

    session.close()
Example #26
0
File: data.py Project: hill/UEM2
def generate_demo_data(session: Session):
    """Generates demonstration data from models"""

    # check that the db is empty
    if session.query(models.User).first():
        log.info("Data already exists, skipping data generation.")
        return
    log.info("Generating demo data.")

    user = models.User(
        name="Tom Hill",
        email="*****@*****.**",
        password_hash=security.get_password_hash("password"),
        stripe_customer_id=stripe.Customer.create()["id"],
    )

    session.add(user)
    session.commit()
    session.refresh(user)

    discrete_maths = models.Course(
        name="Introduction to Reinforcement Learning",
        code="RL479",
        description="description",
        status="completing",
        due="2021-12-12",
        syllabus=[
            {
                "id": 1,
                "name": "Introduction to Reinforcement Learning",
                "completed": False,
            },
            {
                "id": 2,
                "name": "Exploration and Control",
                "completed": False
            },
            {
                "id": 3,
                "name": "MDPs and Dynamic Programming",
                "completed": False
            },
            {
                "id": 4,
                "name": "Fundementals of Dynamic Programming Algorithms",
                "completed": False,
            },
            {
                "id": 5,
                "name": "Model-Free Prediction",
                "completed": False
            },
            {
                "id": 6,
                "name": "Model-Free Control",
                "completed": False
            },
            {
                "id": 7,
                "name": "Function Approximation",
                "completed": False
            },
            {
                "id": 8,
                "name": "Planning & Models",
                "completed": False
            },
            {
                "id": 9,
                "name": "Policy-Gradient and Actor-Critic Methods",
                "completed": False,
            },
            {
                "id": 10,
                "name": "Approximate Dynamic Programming",
                "completed": False
            },
            {
                "id": 11,
                "name": "Multi-Step & Off Policy",
                "completed": False
            },
            {
                "id": 12,
                "name": "Deep RL 1",
                "completed": False
            },
            {
                "id": 13,
                "name": "Deep RL 2",
                "completed": False
            },
        ],
        cover={"color": "#8bbeb2"},
        user_id=user.id,
    )

    maths = models.Topic(name="mathematics")
    algebra = models.Topic(name="algebra")

    session.add_all([discrete_maths, maths, algebra])
    session.commit()
    session.refresh(maths)
    session.refresh(algebra)  # could try session.expire_all() instead?

    linear_algebra = models.Resource(
        name="Interactive Linear Algebra",
        url="http://textbooks.math.gatech.edu/ila/index.html",
        user_id=user.id,
        topics=[maths, algebra],
    )

    big_exam = models.Assignment(
        name="Big Exam",
        description="Examination of:Set theory, Proof, Graph Theory",
        due="2021-12-12",
        course_id=discrete_maths.id,
        status="in_progress",
        weight=50,
    )

    session.add_all([linear_algebra, big_exam])
    session.commit()
Example #27
0
def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate):
    db_hero = Hero.from_orm(hero)
    session.add(db_hero)
    session.commit()
    session.refresh(db_hero)
    return db_hero
Example #28
0
def create_topic(*, session: Session = Depends(get_session), topic: TopicCreate):
    db_topic = Topic.from_orm(topic)
    session.add(db_topic)
    session.commit()
    session.refresh(db_topic)
    return db_topic
Example #29
0
def topic_fixture(session: Session) -> Topic:
    topic = Topic(name="mathematics")
    session.add(topic)
    session.commit()
    yield topic