Beispiel #1
0
def create_labels(course_id):
    """
    Adds a label to a course.
    """
    data = request.get_json()
    if data is None:
        return Iresponse.create_response("", 404)
    name = data["name"]
    labelid = uuid.uuid4()
    exist_label = Label.query.filter_by(label_name=name).all()

    if exist_label:
        return Iresponse.create_response("", 200)

    course = Course.query.get(course_id)
    if course is None:
        return Iresponse.create_response("", 404)

    new_label = Label()
    new_label.label_name = name
    new_label.label_id = labelid
    new_label.course = course

    if not database.addItemSafelyToDB(new_label):
        return Iresponse.internal_server_error()

    database.db.session.commit()
    return Iresponse.create_response("", 200)
Beispiel #2
0
def create_request(json_data):
    """
    Function that handles the create request for a ticket.
    """
    name = escape(json_data["name"])
    name = name  # flake8
    studentid = escape(json_data["studentid"])
    email = escape(json_data["email"])
    subject = escape(json_data["subject"])
    message = escape(json_data["message"])
    courseid = escape(json_data["courseid"])
    labelid = escape(json_data["labelid"])
    files = json_data['files']

    response_body = {}

    bound_tas = list()
    label = None

    if labelid != "":
        label = Label.query.get(uuid.UUID(labelid))
        bound_tas = get_label_tas(label, studentid)

    if len(bound_tas) < 1:
        status_id = TicketStatus.unassigned
    else:
        status_id = TicketStatus.waiting_for_help

    ticket = Ticket(id=uuid.uuid4(),
                    user_id=studentid,
                    course_id=courseid,
                    status_id=status_id,
                    title=subject,
                    email=email,
                    label=label,
                    files=files,
                    timestamp=datetime.now())

    for ta in bound_tas:
        ticket.bound_tas.append(ta)
        level_up = levels.add_experience(levels.EXP_FOR_ASSING, ta.id)
        levels.notify_level_change(ta.id, ticket, level_up)

    if not database.addItemSafelyToDB(ticket):
        return Iresponse.internal_server_error()

    try:
        msg = notifications.notify(studentid, ticket, message,
                                   Message.NTFY_TYPE_MESSAGE)
        msg = msg
    except Exception as e:
        raise e
        return Iresponse.create_response(str(e), 400)

    response_body['ticketid'] = ticket.id
    response = Iresponse.create_response(response_body, 201)
    response.headers.add('Location', 'api/ticket/{0}'.format(ticket.id))
    return response
Beispiel #3
0
def remove_label(label_id):
    """
    Function that removes a label.
    """
    label = Label.query.get(label_id)
    print(label)
    if label is None:
        return Iresponse.create_response("", 404)

    if not database.deleteSafelyFromDB(label, remove_label):
        return Iresponse.internal_server_error()

    return Iresponse.create_response("", 202)
Beispiel #4
0
def delete_request(note_id):
    """
    Process the request to delete a note.
    """
    note = Note.query.get(note_id)
    if note is None:
        return Iresponse.create_response("", 404)
    try:
        levels.deduct_experience(levels.EXP_FOR_NOTE, note.user_id)
        database.db.session.delete(note)
        database.db.session.commit()
    except Exception:
        print("LOG: Deleting error")
        return Iresponse.internal_server_error()
    return Iresponse.create_response("", 202)
Beispiel #5
0
def create_request(jsonData):
    """
    Function that handles the create request for a course.
    """
    mail = escape(jsonData['mail'])
    title = escape(jsonData['title'])
    description = escape(jsonData['description'])

    course = Course()
    course.id = uuid.uuid4()
    course.course_email = mail
    course.title = title
    course.description = description

    if not database.addItemSafelyToDB(course):
        return Iresponse.internal_server_error()

    return Iresponse.create_response("", 200)
Beispiel #6
0
def create_request(jsonData):
    """
    Process the request to create a node.
    """
    ticket_id = escape(jsonData["ticket_id"])
    user_id = escape(jsonData["user_id"])
    message = escape(jsonData["text"])

    response_body = {}

    if message == '':
        response_body['message'] = "empty message"

    if ticket_id == '':
        response_body['ticket_id'] = "No ticket id has been supplied"

    if user_id == '':
        response_body['user_id'] = "No user id has been supplieds"

    ticket = Ticket.query.get(ticket_id)
    if ticket is None:
        response_body['ticket'] = "No ticket exists with this id"

    if len(response_body) != 0:
        return Iresponse.create_response(response_body, 400)

    note = Note()
    note.id = uuid.uuid4()
    note.user_id = user_id
    note.ticket_id = ticket_id
    note.text = message
    note.timestamp = datetime.now()

    if not database.addItemSafelyToDB(note):
        return Iresponse.internal_server_error()

    parse_note(message, ticket)
    levels.add_experience(levels.EXP_FOR_NOTE, note.user_id)
    # add header location.
    return Iresponse.create_response(note.serialize, 201)
Beispiel #7
0
def register_user(json_data):
    email = escape(json_data["email"])
    name = escape(json_data["name"])
    studentid = int(escape(json_data["studentid"]))
    password = escape(json_data["password"])
    repassword = escape(json_data["password_confirmation"])

    validated = validate_userdata(email, name, studentid, password, repassword)
    if validated != '':
        return Iresponse.create_response({"status": validated}, 200)

    # Backend check if email/studentid already exists
    user = User.query.filter_by(email=email).first()
    if user:
        return Iresponse.create_response({"status": "Email is taken"}, 200)

    studentid = json_data["studentid"]
    user = User.query.filter_by(id=studentid).first()

    if user:
        return Iresponse.create_response({"status": "Studentid taken"}, 200)

    new_user = User()
    salt = bcrypt.gensalt()
    hashedpsw = bcrypt.hashpw(password.encode('utf-8'), salt)
    new_user.password = hashedpsw
    new_user.id = studentid
    new_user.name = name
    new_user.email = email
    new_user.level = 1
    new_user.experience = 1

    if not database.addItemSafelyToDB(new_user):
        return Iresponse.internal_server_error()

    return Iresponse.create_response({"status": "OK"}, 201)