Пример #1
0
class ToDoListOptions(Schema):
    project = fields.CoalesceField(
        [fields.Integer(), fields.Text()], default=None, required=False)
    tag = custom_fields.StringIdentifiedField(models.Tag,
                                              default=None,
                                              required=False)
    query = fields.Text(default='')
    all_tasks = fields.Bool(default=False)
    flat = fields.Bool(default=False)
    limit = fields.Integer(default=25)
    ignore_priority = fields.Bool(default=False)
    minimum_priority = fields.CoalesceField(
        [fields.Integer(), fields.Text()], default=None, required=False)
    state = fields.Enum(models.State,
                        soft_match=True,
                        required=False,
                        default=None)
    order_by = fields.List(
        fields.MultiChoiceField(
            {
                'created_at',
                'finished_at',
                'state',
                'priority',
                'project',
            },
            soft_match=True,
        ),
        required=False,
        default=None,
    )
Пример #2
0
class CreateTodoSchema(Schema):
    tags = fields.List(
        fields.CoalesceField([
            fields.Integer(),
            fields.Text(min=1, max=127, pattern=re.compile(r'\w+')),
        ]),
        default=(),
    )
    project = fields.CoalesceField(
        [
            fields.Integer(),
            fields.Text(min=1, max=127, pattern=re.compile(r'\w+')),
        ],
        required=False,
    )
    parents = fields.List(
        fields.CoalesceField([
            fields.Integer(),
            fields.Text(),
        ]),
        default=(),
    )
    priority = fields.CoalesceField(
        [
            fields.Integer(),
            fields.Text(min=1, max=127, pattern=re.compile(r'\w+')),
        ],
        required=False,
    )
Пример #3
0
class StatsOptionsSchema(Schema):
    project = fields.CoalesceField(
        [fields.Integer(), fields.Text()], default=None, required=False)
    tag = custom_fields.StringIdentifiedField(models.Tag,
                                              default=None,
                                              required=False)
    top_level_only = fields.Bool(default=True)
    ignore_priority = fields.Bool(default=False)
    minimum_priority = fields.CoalesceField(
        [fields.Integer(), fields.Text()], default=None, required=False)
    last_n_days = fields.Integer(default=128)
Пример #4
0
class CommentSchema(Schema):
    target = fields.CoalesceField([fields.Integer(), fields.Text()])
    project = custom_fields.StringIdentifiedField(models.Project, default=None)
    comment = fields.Text()
Пример #5
0
class TaggedSchema(Schema[models.Tagged]):
    todo_target = fields.CoalesceField([fields.Integer(), fields.Text()])
    tag_target = custom_fields.StringIdentifiedField(models.Tag)
    project = custom_fields.StringIdentifiedField(models.Project, default=None)
    recursive = fields.Bool(default=False, write_only=True)
Пример #6
0
class ModifyToDoSchema(Schema):
    target = fields.CoalesceField([fields.Integer(), fields.Text()])
    project = custom_fields.StringIdentifiedField(models.Project, default=None)
    description = fields.Text()
Пример #7
0
class ModifyPrioritySchema(Schema[models.Tagged]):
    todo = fields.CoalesceField([fields.Integer(), fields.Text()])
    project = custom_fields.StringIdentifiedField(models.Project, default=None)
    priority = fields.CoalesceField([fields.Integer(), fields.Text()])
    recursive = fields.Bool(default=False, write_only=True)
Пример #8
0
class AlarmListOptions(Schema):
    limit = fields.Integer(default=25)
    query = fields.CoalesceField(
        [fields.Integer(), fields.Text()], default=None, required=False)
Пример #9
0
        SC.session.commit()
    except IntegrityError:
        SC.session.rollback()
        return 'Project already exists', status.HTTP_400_BAD_REQUEST

    return schema.serialize(project)


@todo_project_views.route('/project/', methods = ['PATCH'])
@inject_schema(
    Schema(
        {
            'project': StringIdentifiedField(models.Project),
            'default_priority_filter': fields.CoalesceField(
                [fields.Integer(), fields.Text()],
                default = None,
                required = False,
            ),
        }
    ),
    use_args = False,
)
def modify_project(project: models.Project, default_priority_filter: t.Union[int, str, None]):
    if default_priority_filter is not None:
        default_priority_filter = get_priority_level(SC.session, default_priority_filter, project)
    project.default_priority_filter = default_priority_filter
    SC.session.commit()
    return schemas.ProjectSchema().serialize(project)


@todo_project_views.route('/project/', methods = ['GET'])