Previous versions (before 2.0) allowed for granular can_edit DAG permissions so that different user groups can trigger different DAGs and access control is more specific. Since 2.0 it seems that this does not work as expected.

How to reproduce:
Create a copy of the VIEWER role, try adding it can dag edit on a specific DAG. **Expected Result:** user can trigger said DAG. **Actual Result:** user access is denied.

It seems to be a new parameter was added: **can create on DAG runs** and without it the user cannot run DAGs, however, with it, the user can run all DAGs without limitations and I believe this is an unintended use.

tests/www/test_views.py
resp = self.client.get('userstatschartview/chart/', follow_redirects=True)
        self.check_content_in_response('User Statistics', resp)
    def test_permissions_list(self):
        resp = self.client.get('permissions/list/', follow_redirects=True)
        self.check_content_in_response('List Base Permissions', resp)
    def test_viewmenus_list(self):
        resp = self.client.get('viewmenus/list/', follow_redirects=True)
        self.check_content_in_response('List View Menus', resp)
    def test_permissionsviews_list(self):
        resp = self.client.get('permissionviews/list/', follow_redirects=True)
        self.check_content_in_response('List Permissions on Views/Menus', resp)
    def test_home_filter_tags(self):
        from airflow.www.views import FILTER_TAGS_COOKIE
        with self.client:
            self.client.get('home?tags=example&tags=data', follow_redirects=True)
            assert 'example,data' == flask_session[FILTER_TAGS_COOKIE]
            self.client.get('home?reset_tags', follow_redirects=True)
            assert flask_session[FILTER_TAGS_COOKIE] is None
    def test_home_status_filter_cookie(self):
        from airflow.www.views import FILTER_STATUS_COOKIE
        with self.client:
            self.client.get('home', follow_redirects=True)
            assert 'all' == flask_session[FILTER_STATUS_COOKIE]
            self.client.get('home?status=active', follow_redirects=True)
            assert 'active' == flask_session[FILTER_STATUS_COOKIE]
            self.client.get('home?status=paused', follow_redirects=True)
            assert 'paused' == flask_session[FILTER_STATUS_COOKIE]
            self.client.get('home?status=all', follow_redirects=True)
            assert 'all' == flask_session[FILTER_STATUS_COOKIE]
    def test_task(self):