예제 #1
0
def create_card():

    '''Creates Card (Epic and Standard) from the card creation menu'''
    #TODO Make seperate functions for diffrent card types

    card_form = json.loads(request.form['payload'])
    card_form = sanitize.form_keys(card_form)

    card = Card.map_from_form(card_form)
    
    if card.type == CardType(0).name: #Standard
        
        #add the provided "steps" to the card to be netered into the database
        steps_form = card_form.get('steps')
        steps = create_objects_from_form_array(Step, steps_form)
        card.add_steps(steps)
        
        return_value = card_insert.new_card(card)

    elif card.type == CardType(1).name: #Epic
        #No special action needs to be taken, enter into database
        return_value = card_insert.new_epic(card)

    else:
        
        return_value = response.error("Card Type is Invalid")
    
    return return_value
예제 #2
0
def card_details(card_id, cursor = None):

    cursor.execute("""
                SELECT DISTINCT  
                        card.status as card_status, 
                        card.points as card_points, 
                        user.id as user_id,
                        user.first_name as user_first_name,
                        user.last_name as user_last_name,
                        card.created as card_created,
                        card.updated as card_updated,
                        epic.id as epic_id, 
                        epic_card.name as epic_name, 
                        epic.background_color as epic_background_color, 
                        epic.foreground_color as epic_foreground_color
                    from card
                    LEFT JOIN epic ON  epic.id = card.epic
                    LEFT JOIN card AS epic_card ON epic_card.epic = card.epic
                                                AND epic_card.type = 1
                    LEFT JOIN user ON card.poc = user.id
                WHERE   card.id = %(card_id)s""",
                {'card_id': card_id})

    result = cursor.fetchone()

    card = Card.map_from_form(result)

    return card
예제 #3
0
def get_card(card_index, project_id):

    '''Using the cards index, send back all information pertaining to the card
    Used primarily for the card details page'''

    card_refrence = Card()
    card_refrence.index = card_index

    card = card_select.card(project_id, card_refrence.proj_number())

    if card.type is CardType(0).name:
        steps = card_select.card_steps(card.id)
        card.add_steps(steps)

    elif card.type is CardType(1).name:
        assigned_cards = card_select.cards_assigned_to_epic(card.epic.id)
        card.add_assigned_cards(assigned_cards)

    return response.success(card.serialize())
예제 #4
0
def update_card_details(card_id):

    card_form = json.loads(request.form['payload'])
    card_form = sanitize.form_keys(card_form)

    print(card_form)
    card = Card.map_from_form(card_form)

    card_update.details(card)

    
    return get_card_details(card.id, api_response = False)
예제 #5
0
def update_card_description(card_id):

    '''Updates the provided card's description,
    then returns the value from the database'''

    card_form = json.loads(request.form['payload'])
    card_form = sanitize.form_keys(card_form)

    card = Card.map_from_form(card_form)

    card_update.description(card)

    return get_card_description(card.id, api_response = False)
예제 #6
0
def card_description(card_id, cursor = None):

    cursor.execute("""
                SELECT DISTINCT  
                        card_description.description as card_description
                    FROM card_description
                WHERE card_description.card_id = %(card_id)s""",
                {'card_id': card_id})

    result = cursor.fetchone()

    card = Card.map_from_form(result)

    return card
예제 #7
0
def card_name(card_id, cursor = None):

    cursor.execute("""
                SELECT distinct  
                        card.name as card_name
                    from card
                WHERE card.id = %(card_id)s""",
                {'card_id': card_id})

    result = cursor.fetchone()

    card = Card.map_from_form(result)

    return card
예제 #8
0
def next_card_index(project_id, cursor = None):

    cursor.execute("""
            SELECT  project.designator as card_proj_designator,
                    (max(card.proj_number) + 1) as card_proj_number 
                FROM card
                JOIN project on card.project = project.id
            WHERE project.id = %(project_id)s;""",
        {'project_id': project_id})

    result = cursor.fetchone()

    card = Card.map_from_form(result)

    return card.index
예제 #9
0
def card_with_user_task(user_id, project_id, cursor = None):
    
    cursor.execute("""
                SELECT distinct 
                        card.id as card_id, 
                        project.designator as card_proj_designator, 
                        card.proj_number as card_proj_number, 
                        card.name as card_name, 
                        card.type as card_type, 
                        card.status as card_status, 
                        card.points as card_points, 
                        card_description.description as card_description, 
                        user.id as user_id,
                        user.first_name as user_first_name,
                        user.last_name as user_last_name,
                        card.created as card_created,
                        card.updated as card_updated,
                        epic.id as epic_id, 
                        epic_card.name as epic_name, 
                        epic.background_color as epic_background_color, 
                        epic.foreground_color as epic_foreground_color
                    from card
                    JOIN card_description ON card_description.card_id = card.id
                    JOIN project on card.project = project.id
                    LEFT JOIN epic ON  epic.id = card.epic
                    LEFT JOIN card AS epic_card ON epic_card.epic = card.epic
                                                AND epic_card.type = 1
                    LEFT JOIN user ON card.poc = user.id
                WHERE 
                    card.project = %(project_id)s AND
                    card.status <> 3 AND (
                    card.poc = %(user_id)s OR
                    card.id IN 
                        (
                            SELECT distinct card_id
                                from card_steps
                            where assigned = %(user_id)s
                        ));""",
                {'user_id': user_id, 'project_id' : project_id})

    results = cursor.fetchall()

    cards = []
    for row in results:
        
        cards.append(Card.map_from_form(row))

    return cards
예제 #10
0
def backlog(project_id, cursor = None):

    cursor.execute("""
                SELECT  card.id as card_id, 
                        project.designator as card_proj_designator, 
                        card.proj_number as card_proj_number, 
                        card.name as card_name, 
                        card.type as card_type, 
                        card.status as card_status, 
                        card.points as card_points, 
                        card_description.description as card_description, 
                        user.id as user_id,
                        user.first_name as user_first_name,
                        user.last_name as user_last_name,
                        card.created as card_created,
                        card.updated as card_updated,
                        epic.id as epic_id, 
                        epic_card.name as epic_name, 
                        epic.background_color as epic_background_color, 
                        epic.foreground_color as epic_foreground_color
                    from card
                    JOIN card_description ON card_description.card_id = card.id
                    JOIN project on card.project = project.id
                    LEFT JOIN epic ON  card.epic = epic.id
                    LEFT JOIN card AS epic_card ON epic_card.epic = card.epic
                                                AND epic_card.type = 1
                    LEFT JOIN user ON card.poc = user.id
                WHERE card.sprint IS NULL AND 
                      card.type <> 1 AND
                      card.status <>3 AND
                      card.project = %(project_id)s""",
                      {'project_id': project_id})

    results = cursor.fetchall()

    cards = []
    for row in results:
        cards.append(Card.map_from_form(row))

    return cards
예제 #11
0
def card(project_id, proj_number, cursor = None):

    cursor.execute("""
                SELECT distinct 
                        card.id as card_id, 
                        project.designator as card_proj_designator, 
                        card.proj_number as card_proj_number, 
                        card.name as card_name, 
                        card.type as card_type, 
                        card.status as card_status, 
                        card.points as card_points, 
                        card_description.description as card_description, 
                        user.id as user_id,
                        user.first_name as user_first_name,
                        user.last_name as user_last_name,
                        card.created as card_created,
                        card.updated as card_updated,
                        epic.id as epic_id, 
                        epic_card.name as epic_name, 
                        epic.background_color as epic_background_color, 
                        epic.foreground_color as epic_foreground_color
                    from card
                    JOIN card_description ON card_description.card_id = card.id
                    JOIN project on card.project = project.id
                    LEFT JOIN epic ON  epic.id = card.epic
                    LEFT JOIN card AS epic_card ON epic_card.epic = card.epic
                                                AND epic_card.type = 1
                    LEFT JOIN user ON card.poc = user.id
                WHERE   project.id = %(project_id)s AND 
                        card.proj_number = %(num)s""",
                {'project_id': project_id , 'num': proj_number})


    result = cursor.fetchone()

    card = Card.map_from_form(result)

    return card