Exemple #1
0
 def pre_update(new_data: dict, old_issue: Issue):
     if 'status' in new_data and old_issue.status != new_data['status']:
         new_data['status_date'] = datetime.now()
         if new_data['status'] == 'in progress':
             new_data['assignee_id'] = get_user_id()
         if new_data['status'] == 'todo':
             new_data['assignee_id'] = None
Exemple #2
0
 def start_time(project_id, issue_id=None):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         check_project(project_id, conn)
         entry = TimeEntry(project_id=project_id,
                           issue_id=issue_id,
                           user_id=user_id)
         conn.add(entry)
Exemple #3
0
 def check_project(project_id, conn):
     user_id = get_user_id()
     if conn.query(Project).join(projects_users).join(User).filter(
             User.id == user_id).filter(
                 Project.id == project_id).count() != 1:
         logger.error("check_project failed! project: %s, user: %s",
                      project_id, user_id)
         abort(404)
Exemple #4
0
 def stop_time():  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         entry = conn.query(TimeEntry).filter(
             TimeEntry.user_id == user_id).filter(
                 TimeEntry.end.is_(None)).first()
         if entry:
             entry.end = datetime.now()
             return time_entry_to_dict(entry)
Exemple #5
0
 def leave_project(project_id: int):  # pylint: disable=unused-variable
     with db.session_scope() as conn:
         check_project(project_id, conn)
         user_id = get_user_id()
         project = conn.query(Project).filter(
             Project.id == project_id).first()  # type: Project
         user = conn.query(User).filter(User.id == user_id).first()
         project.users.remove(user)
         return True
Exemple #6
0
 def get_projects(id: int = None):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         qs = conn.query(Project).outerjoin(Payment).join(projects_users).join(User).filter(User.id == user_id) \
                  .outerjoin(Issue,Project.id == Issue.project_id)
         if id:
             qs = qs.filter(Project.id == id)
         data = {r.id: project_to_dict(r) for r in qs.all()}
     return data
Exemple #7
0
 def get_ticking_stat():  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         entry = conn.query(TimeEntry).filter(
             TimeEntry.user_id == user_id, TimeEntry.end.is_(None)).first()
         if entry:
             return {'ticking': True, 'entry': time_entry_to_dict(entry)}
         else:
             return {'ticking': False}
     return {}
Exemple #8
0
 def delete_issue(id: int):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         issue = conn.query(Issue).join(Project).join(projects_users).join(
             User).filter(User.id == user_id).filter(
                 Issue.id == id).first()
         if not issue:
             abort(404)
         conn.delete(issue)
         return True
Exemple #9
0
 def delete_project_token(id: int):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         qs = conn.query(ProjectInvitationToken).join(Project).join(projects_users).join(User).filter(User.id == user_id) \
                   .filter(ProjectInvitationToken.id == id)
         prj_token = qs.first()
         if not prj_token:
             abort(404)
         conn.delete(prj_token)
         return True
Exemple #10
0
 def delete_payment(id: int):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         qs = conn.query(Payment).join(Project).join(projects_users).join(
             User).filter(User.id == user_id).filter(Payment.id == id)
         payment = qs.first()
         if not payment:
             abort(404)
         conn.delete(payment)
         return True
Exemple #11
0
 def delete_time_entry(id: int):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         qs = conn.query(TimeEntry).join(Project).join(projects_users).join(
             User).filter(User.id == user_id).filter(TimeEntry.id == id)
         entry = qs.first()
         if not entry:
             abort(404)
         conn.delete(entry)
         return True
Exemple #12
0
 def join_to_project(token: str):  # pylint: disable=unused-variable
     with db.session_scope() as conn:
         user_id = get_user_id()
         prj_token = conn.query(ProjectInvitationToken).filter(
             ProjectInvitationToken.token == token).first()
         if not prj_token:
             abort(404)
         project = conn.query(Project).filter(
             Project.id == prj_token.project_id).first()  # type: Project
         user = conn.query(User).filter(User.id == user_id).first()
         if user not in project.users:
             project.users.append(user)
         return True
Exemple #13
0
 def add_time(project_id: int, amount: str, start: str, issue_id=None):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         check_project(project_id, conn)
         seconds = parse(amount)
         start = dateparser(start) if start else (
             datetime.now() - timedelta(seconds=seconds))
         end = start + timedelta(seconds=seconds)
         entry = TimeEntry(project_id=project_id,
                           issue_id=issue_id,
                           start=start,
                           end=end,
                           user_id=user_id)
         conn.add(entry)
Exemple #14
0
 def add_payment(project_id: int, amount: str, paid_user_id: int, time: str,
                 note: str):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         check_project(project_id, conn)
         payment = Payment(
             project_id=project_id,
             amount=parse(amount),
             paid_user_id=paid_user_id,
             created_user_id=user_id,
             note=note,
             time=dateparser(time) if time else datetime.now())
         conn.add(payment)
         return True
Exemple #15
0
    def process_issues(issues):  # pylint: disable=unused-variable
        def pre_update(new_data: dict, old_issue: Issue):
            if 'status' in new_data and old_issue.status != new_data['status']:
                new_data['status_date'] = datetime.now()
                if new_data['status'] == 'in progress':
                    new_data['assignee_id'] = get_user_id()
                if new_data['status'] == 'todo':
                    new_data['assignee_id'] = None

        with db.session_scope() as conn:
            issues = process_resources(
                issues, Issue, conn, {
                    'pre_process': lambda d: {
                        'reporter_id': get_user_id()
                    },
                    'pre_update': pre_update,
                    'checker': lambda i: check_project(i.project_id, conn),
                    'post_process': lambda d, i: None if 'id' in d else {
                        'rank': i.id
                    },
                })
            return {i.id: issue_to_dict(i) for i in issues}
Exemple #16
0
 def get_issues(project_id: int):  # pylint: disable=unused-variable
     user_id = get_user_id()
     with db.session_scope() as conn:
         rows = conn.query(Issue).join(Project).join(projects_users).join(User).filter(User.id == user_id) \
                    .filter(Project.id == project_id).all()
         return {r.id: issue_to_dict(r) for r in rows}
Exemple #17
0
 def get_current_user(conn):
     user_id = get_user_id()
     return conn.query(User).filter(User.id == user_id).first()