from flask import abort
from flask import make_response
from flask.views import View
from flask.views import request

from pycs.database.Project import Project
from pycs.frontend.notifications.NotificationManager import NotificationManager


class EditProjectDescription(View):
    """
    edit a projects description
    """
    # pylint: disable=arguments-differ
    methods = ['POST']

    def __init__(self, nm: NotificationManager):
        # pylint: disable=invalid-name
        self.nm = nm


    def dispatch_request(self, user: str, project_id: int):
        # pylint: disable=unused-argument
        # extract request data
        data = request.get_json(force=True)
        description = data.get('description')

        if description is None:
            abort(400, 'description argument is missing')

        project = Project.get_or_404(project_id)

        project.description = description
        project.commit()

        self.nm.edit_project(project)

        return make_response()