diff --git a/climmob/config/routes.py b/climmob/config/routes.py index 2f389205..11f029ab 100755 --- a/climmob/config/routes.py +++ b/climmob/config/routes.py @@ -154,7 +154,7 @@ ) from climmob.views.assessment import ( assessment_view, - deleteAssessmentSection_view, + DeleteAssessmentSectionView, getAssessmentDetails_view, assessmenthead_view, deleteassessmenthead_view, @@ -170,7 +170,8 @@ HomeView, HealthView, NotFoundView, - ForbiddenView, + # ForbiddenView, + Forbidden, LoginView, RegisterView, LogoutView, @@ -185,12 +186,12 @@ from climmob.views.cloneProjects.cloneProjects import CloneProjectsView from climmob.views.dashboard import dashboard_view, projectInformation_view from climmob.views.editData import ( - editDataView, + EditDataView, downloadDataView, downloadErroLogDocument_view, ) from climmob.views.enumerator import ( - getEnumeratorDetails_view, + GetEnumeratorDetailsView, enumerators_view, deleteEnumerator_view, ) @@ -239,19 +240,20 @@ CurationOfProjectsView, GetUnitOfAnalysisByLocationView, GetObjectivesByLocationAndUnitOfAnalysisView, + FinishProjectView, ) from climmob.views.projectHelp.projectHelp import projectHelp_view from climmob.views.project_analysis import analysisDataView from climmob.views.project_combinations import projectCombinations_view from climmob.views.project_enumerators import ( - projectEnumerators_view, + ProjectEnumeratorsView, removeProjectEnumerators_view, ) from climmob.views.project_metadata import ( ProjectMetadataFormView, ShowMetadataFormView, ) -from climmob.views.project_technologies import projectTecnologies_view +from climmob.views.project_technologies import ProjectTechnologiesView from climmob.views.projectsSummary.projectsSummary import ( DownloadProjectsSummaryView, ProjectsSummaryCurationView, @@ -732,7 +734,7 @@ def loadRoutes(config): addRoute( "getEnumeratorDetails", "/user/{user}/enumerator/{enumid}", - getEnumeratorDetails_view, + GetEnumeratorDetailsView, "json", ) ) @@ -864,7 +866,7 @@ def loadRoutes(config): addRoute( "prjenumerators", "/user/{user}/project/{project}/enumerators", - projectEnumerators_view, + ProjectEnumeratorsView, "project/enumerators/enumerators.jinja2", ) ) @@ -943,6 +945,14 @@ def loadRoutes(config): "project/closepregistry.jinja2", ) ) + routes.append( + addRoute( + "finishproject", + "/user/{user}/project/{project}/finishproject", + FinishProjectView, + "project/finishproject.jinja2", + ) + ) # Assessment routes.append( @@ -1023,7 +1033,7 @@ def loadRoutes(config): addRoute( "deleteassessmentgroup", "/user/{user}/project/{project}/assessment/{assessmentid}/{groupid}/delete", - deleteAssessmentSection_view, + DeleteAssessmentSectionView, "json", ) ) @@ -1048,7 +1058,7 @@ def loadRoutes(config): addRoute( "prjtechnologies", "/user/{user}/project/{project}/technologies", - projectTecnologies_view, + ProjectTechnologiesView, "project/technologies/technologies.jinja2", ) ) @@ -1147,7 +1157,7 @@ def loadRoutes(config): addRoute( "EditDataRegistry", "/user/{user}/project/{project}/form/{formid}/EditData", - editDataView, + EditDataView, "project/editData/editData.jinja2", ) ) @@ -1155,7 +1165,7 @@ def loadRoutes(config): addRoute( "EditDataAssessment", "/user/{user}/project/{project}/form/{formid}/{codeid}/EditData", - editDataView, + EditDataView, "project/editData/editData.jinja2", ) ) @@ -2254,7 +2264,9 @@ def loadRoutes(config): appendToRoutes(routes) config.add_notfound_view(NotFoundView, renderer="404.jinja2") - config.add_forbidden_view(ForbiddenView, renderer="403.jinja2") + # config.add_forbidden_view(ForbiddenView, renderer="403.jinja2") + + config.add_forbidden_view(Forbidden, renderer="403.jinja2") # Custom mapping can happen here AFTER the host maps for plugin in p.PluginImplementations(p.IRoutes): diff --git a/climmob/processes/db/project.py b/climmob/processes/db/project.py index 72427765..7681986c 100644 --- a/climmob/processes/db/project.py +++ b/climmob/processes/db/project.py @@ -65,6 +65,8 @@ "getProjectFullDetailsById", "getProjectsByUserThatRequireSetup", "update_project_status", + "get_user_access_type_in_project", + "get_project_status", ] @@ -455,6 +457,11 @@ def extraDetailsForProject(activeProject, request): activeProject["languages"] = getPrjLangInProject( activeProject["project_id"], request ) + activeProject["Country"] = ( + request.dbsession.query(Country) + .filter_by(cnty_cod=activeProject["project_cnty"]) + .first() + ) for plugin in p.PluginImplementations(p.IProjectTechnologyOptions): activeProject = plugin.get_extra_information_for_data_exchange( @@ -955,6 +962,27 @@ def update_project_status(project_id, status, request): request.dbsession.query(Project).filter( Project.project_id == project_id ).update({"project_status": status}) - return True + return True, "" except Exception as e: return False, str(e) + + +def get_user_access_type_in_project(project_id, user, request): + res = mapFromSchema( + request.dbsession.query(userProject.access_type) + .filter(userProject.user_name == user) + .filter(userProject.project_id == project_id) + .first() + ) + if res: + return True, res["access_type"] + return False, "" + + +def get_project_status(projectId, request): + project_status = mapFromSchema( + request.dbsession.query(Project.project_status) + .filter(Project.project_id == projectId) + .first() + ) + return project_status["project_status"] diff --git a/climmob/processes/db/project_metadata_form.py b/climmob/processes/db/project_metadata_form.py index 9f341d6e..1eae183f 100644 --- a/climmob/processes/db/project_metadata_form.py +++ b/climmob/processes/db/project_metadata_form.py @@ -49,7 +49,9 @@ def knowIfTheProjectMetadataIsComplete(request, projectId): quantityRequired = mapFromSchema( request.dbsession.query( func.count(MetadataForm.metadata_id).label("quantity_required") - ).one() + ) + .filter(MetadataForm.metadata_active == 1) + .one() ) quantityCompleted = mapFromSchema( request.dbsession.query( diff --git a/climmob/templates/403.jinja2 b/climmob/templates/403.jinja2 index a2a88c11..98375c36 100644 --- a/climmob/templates/403.jinja2 +++ b/climmob/templates/403.jinja2 @@ -1,28 +1,29 @@ - - - -
- - -