From ee5bdd203eb0d016b54da8daa08249aa09fd3f9d Mon Sep 17 00:00:00 2001 From: Evgeniia Rassokhina Date: Mon, 10 Jun 2024 18:21:27 +0400 Subject: [PATCH] #1452 Remove unused columns from projects --- app/model/projects.js | 51 +++---------------- app/model/users.js | 6 +-- app/routes/citizen-scientist.js | 9 ---- app/routes/data-api/integration.js | 7 +-- app/routes/data-api/orders.js | 2 - app/routes/data-api/project/index.js | 1 - .../data-api/project/pattern_matchings.js | 10 ---- app/routes/data-api/user.js | 2 - app/routes/project.js | 12 ----- app/routes/visualizer.js | 9 ---- assets/app/admin/projects/list-detail.html | 36 ------------- assets/app/admin/projects/list.html | 2 - assets/app/admin/projects/list.js | 17 ------- assets/app/app.js | 1 - assets/app/app/settings/index.js | 4 -- assets/app/directives/search-bar.js | 2 +- 16 files changed, 10 insertions(+), 161 deletions(-) diff --git a/app/model/projects.js b/app/model/projects.js index 9cc7d8fc6..5ac2bbbd6 100644 --- a/app/model/projects.js +++ b/app/model/projects.js @@ -22,7 +22,6 @@ const roles = require('./roles') const projectSchema = joi.object().keys({ name: joi.string(), url: joi.string(), - description: joi.string().optional(), is_private: joi.boolean(), external_id: joi.string().optional(), }); @@ -61,7 +60,7 @@ var Projects = { }, listAll: function(callback) { - var q = "SELECT project_id as id, name, url, description, is_private, is_enabled \n"+ + var q = "SELECT project_id as id, name, url, is_private \n"+ "FROM projects"; queryHandler(q, callback); @@ -100,11 +99,7 @@ var Projects = { whereExp.push("1 = 1"); } if(query.hasOwnProperty('q')) { - whereExp.push("(p.name LIKE '%"+query.q+"%' OR p.description LIKE '%"+query.q+"%')"); - } - if(query.hasOwnProperty('featured')) { - selectExtra += 'featured, image, ' - whereExp.push("p.featured = 1 OR p.featured = 2"); + whereExp.push("(p.name LIKE '%"+query.q+"%')"); } if(!whereExp.length) { @@ -117,10 +112,7 @@ var Projects = { if(!query.basicInfo){ selectExtra += " p.citizen_scientist_enabled, \n"+ - " p.pattern_matching_enabled, \n"+ - " p.reports_enabled, \n"+ - " p.is_partner, \n"+ - " p.cnn_enabled \n"; + " p.is_partner \n"; } else { selectExtra += "p.project_id as id \n"; } @@ -220,7 +212,7 @@ var Projects = { const result = sites.map(s => { return { ...s, - utcOffset: fileHelper.formattedTzOffsetFromTimezoneName(s.timezone) + utcOffset: fileHelper.formattedTzOffsetFromTimezoneName(s.timezone ? s.timezone : 'UTC') } }) return result @@ -286,18 +278,14 @@ var Projects = { * @param {Object} project * @param {String} project.name * @param {String} project.url - * @param {String} project.description * @param {Number} project.owner_id - creator id - * @param {Number} project.project_type_id * @param {Boolean} project.is_private */ create: async function(project, owner_id, db) { var schema = joi.object().keys({ name: joi.string(), url: joi.string(), - description: joi.string().optional(), external_id: joi.string().optional(), - project_type_id: joi.number(), is_private: joi.boolean() }); @@ -311,13 +299,6 @@ var Projects = { } project = result.value; - - project.storage_usage = 0; - project.processing_usage = 0; - project.pattern_matching_enabled = 1; - project.aed_enabled = 1; - project.clustering_enabled = 1; - project.reports_enabled = 1; project.public_templates_enabled = 0; if (!db) { @@ -353,12 +334,7 @@ var Projects = { * @param {Number} project.project_id * @param {String} project.name * @param {String} project.url - * @param {String} project.description - * @param {Number} project.project_type_id * @param {Boolean} project.is_private - * @param {Boolean} project.is_enabled - * @param {Number} project.storage_usage - * @param {Number} project.processing_usage * @param {Function} callback(err, projectId) * * @return {Promise} resolved after the update. @@ -369,18 +345,8 @@ var Projects = { project_id: joi.number().required(), name: joi.string(), url: joi.string(), - description: joi.string().allow(null, '').optional(), - project_type_id: joi.number(), is_private: [joi.number().valid(0,1), joi.boolean()], - is_enabled: [joi.number().valid(0,1), joi.boolean()], - storage_usage: joi.number().allow(null), - processing_usage: joi.number().allow(null), citizen_scientist_enabled: [joi.number().valid(0,1), joi.boolean()], - pattern_matching_enabled: [joi.number().valid(0,1), joi.boolean()], - cnn_enabled: [joi.number().valid(0,1), joi.boolean()], - aed_enabled: [joi.number().valid(0,1), joi.boolean()], - clustering_enabled: [joi.number().valid(0,1), joi.boolean()], - reports_enabled: [joi.number().valid(0,1), joi.boolean()], public_templates_enabled: [joi.number().valid(0,1), joi.boolean()] }; return q.ninvoke(joi, 'validate', project, schema).then(function(projectInfo){ @@ -1134,7 +1100,7 @@ var Projects = { createInCoreAPI: async function(project, idToken) { const body = { name: project.name, - description: project.description, + description: '', is_public: !project.is_private, external_id: project.project_id } @@ -1188,7 +1154,6 @@ var Projects = { updateInCoreAPI: async function(data, idToken) { let body = {} data.name !== undefined && (body.name = data.name) - data.description !== undefined && (body.description = data.description) data.is_private !== undefined && (body.is_public = !data.is_private) const options = { method: 'PATCH', @@ -1258,14 +1223,12 @@ var Projects = { * Creates a project with given data * @param {*} data * @param {string} data.name - * @param {string} data.description * @param {string} data.url * @param {boolean} data.is_private * @param {integer} userId */ createProject: async function (data, userId, connection) { const projectData = { - project_type_id: 1, ...data } await q.ninvoke(joi, 'validate', projectData, projectSchema, { @@ -1336,9 +1299,7 @@ var Projects = { const projectData = { is_private: true, name: `${user.firstname} ${user.lastname}'s project`, - url: this.getPersonalProjectUrl(user), - description: `${user.firstname}'s personal project`, - project_type_id: 1 + url: this.getPersonalProjectUrl(user) }; await q.ninvoke(joi, 'validate', projectData, projectSchema, { stripUnknown: true, diff --git a/app/model/users.js b/app/model/users.js index 521184dcc..15051bae4 100644 --- a/app/model/users.js +++ b/app/model/users.js @@ -185,7 +185,7 @@ var Users = { let selectExtra = ''; let joinExtra = ''; - selectExtra = "p.project_id AS id, name, url, lat, lon, description, is_private, is_enabled, u.login AS `owner`"; + selectExtra = "p.project_id AS id, name, url, lat, lon, description, is_private, u.login AS `owner`"; joinExtra = "JOIN user_project_role AS upr ON (p.project_id = upr.project_id and upr.role_id = 4) \n"+ "JOIN user_project_role AS upr2 ON (p.project_id = upr2.project_id) \n"+ @@ -198,10 +198,6 @@ var Users = { if(query.hasOwnProperty('q')) { whereExp.push("p.name LIKE '%"+query.q+"%' OR p.description LIKE '%"+query.q+"%'"); } - if(query.hasOwnProperty('featured')) { - selectExtra += ', featured, image' - whereExp.push("p.featured = 1 OR p.featured = 2"); - } if (query.hasOwnProperty('publicTemplates')) { whereExp.push('p.deleted_at IS NULL'); } diff --git a/app/routes/citizen-scientist.js b/app/routes/citizen-scientist.js index b6efd0d4a..a8239ba14 100644 --- a/app/routes/citizen-scientist.js +++ b/app/routes/citizen-scientist.js @@ -69,14 +69,6 @@ router.get('/:projecturl?/', function(req, res, next) { var project = rows[0]; - if(!project.is_enabled) { - return res.render('project_disabled', { - project: project, - user: req.session.user - }); - } - - if(project.plan_period && project.plan_activated) { project.plan_due = new Date(project.plan_activated); project.plan_due.setFullYear(project.plan_due.getFullYear() + project.plan_period); @@ -102,7 +94,6 @@ router.get('/:projecturl?/', function(req, res, next) { authorized: true, public: !project.is_private, features:{ - pattern_matching: !!project.pattern_matching_enabled, citizen_scientist: !!project.citizen_scientist_enabled, }, super: !!req.session.user.isSuper, diff --git a/app/routes/data-api/integration.js b/app/routes/data-api/integration.js index f171253a9..503476120 100644 --- a/app/routes/data-api/integration.js +++ b/app/routes/data-api/integration.js @@ -14,14 +14,13 @@ router.post('/projects', verifyToken(), hasRole(['appUser', 'rfcxUser']), async try { const converter = new Converter(req.body, {}); converter.convert('name').toString(); - converter.convert('description').optional().toString(); converter.convert('is_private').toBoolean().default(true); converter.convert('external_id').toString(); const params = await converter.validate(); const user = await model.users.ensureUserExistFromAuth0(req.user); const url = await model.projects.findUniqueUrl(params.name, params.external_id, user.user_id) - const { name, description, is_private, external_id } = params - const projectId = await model.projects.createProject({ name, description, is_private, external_id, url }, user.user_id); + const { name, is_private, external_id } = params + const projectId = await model.projects.createProject({ name, is_private, external_id, url }, user.user_id); const project = await model.projects.find({ id: projectId }).get(0); res.status(201).json(project); } catch (e) { @@ -34,7 +33,6 @@ router.patch('/projects/:externalId', verifyToken(), hasRole(['appUser', 'rfcxUs const user = await model.users.ensureUserExistFromAuth0(req.user); const converter = new Converter(req.body, {}); converter.convert('name').optional().toString(); - converter.convert('description').optional().toString(); converter.convert('url').optional().toString(); const params = await converter.validate(); @@ -49,7 +47,6 @@ router.patch('/projects/:externalId', verifyToken(), hasRole(['appUser', 'rfcxUs project_id: project.project_id, name: params.name !== undefined ? params.name : project.name, url: params.url !== undefined ? params.url : project.url, - description: params.description !== undefined ? params.description : project.description, is_private: project.is_private, }) res.sendStatus(200); diff --git a/app/routes/data-api/orders.js b/app/routes/data-api/orders.js index 1e54081ef..1cc171417 100644 --- a/app/routes/data-api/orders.js +++ b/app/routes/data-api/orders.js @@ -157,8 +157,6 @@ router.post('/create-project', function(req, res, next) { }) ]).then(function() { console.log('project:', project); - // assign project_type_id to normal type - project.project_type_id = 1; return model.projects.createProjectInArbimonAndCoreAPI(project, req.session.user.id, req.session.idToken).then(function (projectId) { res.json({ diff --git a/app/routes/data-api/project/index.js b/app/routes/data-api/project/index.js index 6937b4654..3edaff534 100644 --- a/app/routes/data-api/project/index.js +++ b/app/routes/data-api/project/index.js @@ -204,7 +204,6 @@ router.post('/:projectUrl/info/update', function(req, res, next) { project_id: joi.number().required(), name: joi.string(), url: joi.string(), - description: joi.string().allow(null, '').optional(), is_private: joi.number(), public_templates_enabled: joi.number(), }; diff --git a/app/routes/data-api/project/pattern_matchings.js b/app/routes/data-api/project/pattern_matchings.js index c1442b947..1baaed18f 100644 --- a/app/routes/data-api/project/pattern_matchings.js +++ b/app/routes/data-api/project/pattern_matchings.js @@ -14,16 +14,6 @@ let cachedData = { counts: { } }; -// global project.pattern_matching_enabled check -router.use(function(req, res, next) { - if(!req.project.pattern_matching_enabled) { - return res.status(401).json({ error: "Pattern matching features are not enabled for your project." }); - } - - next(); -}); - - /** Return a list of all the pattern matchings in a project. */ router.get('/', function(req, res, next) { diff --git a/app/routes/data-api/user.js b/app/routes/data-api/user.js index 74c74fca0..7b7b8dbf5 100644 --- a/app/routes/data-api/user.js +++ b/app/routes/data-api/user.js @@ -20,7 +20,6 @@ router.get('/projectlist', function(req, res, next) { user_id: req.session.user.id, publicTemplates: publicTemplates, ...req.query.q && { q: req.query.q }, - ...req.query.featured && { featured: req.query.featured } }, function(err, rows) { if(err) return next(err); res.json(rows); @@ -32,7 +31,6 @@ router.get('/projectlist', function(req, res, next) { ...includeLocation && { include_location: true }, publicTemplates: publicTemplates, ...req.query.q && { q: req.query.q }, - ...req.query.featured && type !== 'my' && { featured: req.query.featured } }, function(err, rows) { if(err) return next(err); res.json(rows); diff --git a/app/routes/project.js b/app/routes/project.js index 44164ba3d..b14068c5e 100644 --- a/app/routes/project.js +++ b/app/routes/project.js @@ -68,13 +68,6 @@ router.get('/:projecturl?/', function(req, res, next) { var project = rows[0]; - if(!project.is_enabled) { - return res.render('project_disabled', { - project: project, - user: req.session.user - }); - } - model.users.getPermissions(req.session.user.id, project.project_id, function(err, rows) { var permissionsMap = rows.reduce(function(_, p) { _[p.name] = true; @@ -116,12 +109,7 @@ router.get('/:projecturl?/', function(req, res, next) { authorized: true, public: !project.is_private, features:{ - pattern_matching: !!project.pattern_matching_enabled, - cnn: !!project.cnn_enabled, citizen_scientist: !!project.citizen_scientist_enabled, - aed: !!project.aed_enabled, - clustering: !!project.clustering_enabled, - reports_enabled: !!project.reports_enabled, public_templates_enabled: !!project.public_templates_enabled, }, super: !!req.session.user.isSuper, diff --git a/app/routes/visualizer.js b/app/routes/visualizer.js index 5b1ca359c..8ef373f7d 100644 --- a/app/routes/visualizer.js +++ b/app/routes/visualizer.js @@ -70,14 +70,6 @@ router.get('/:projecturl?/', function(req, res, next) { var project = rows[0]; - if(!project.is_enabled) { - return res.render('project_disabled', { - project: project, - user: req.session.user - }); - } - - if(project.plan_period && project.plan_activated) { project.plan_due = new Date(project.plan_activated); project.plan_due.setFullYear(project.plan_due.getFullYear() + project.plan_period); @@ -103,7 +95,6 @@ router.get('/:projecturl?/', function(req, res, next) { authorized: true, public: !project.is_private, features:{ - pattern_matching: !!project.pattern_matching_enabled, citizen_scientist: !!project.citizen_scientist_enabled, }, super: !!req.session.user.isSuper, diff --git a/assets/app/admin/projects/list-detail.html b/assets/app/admin/projects/list-detail.html index 984ac2f48..ef20fd720 100644 --- a/assets/app/admin/projects/list-detail.html +++ b/assets/app/admin/projects/list-detail.html @@ -63,48 +63,12 @@

ng-model="controller.project.processing_limit"> -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-