-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathadmin-model.js
More file actions
61 lines (56 loc) · 1.81 KB
/
admin-model.js
File metadata and controls
61 lines (56 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
var Class = require('sji')
,forms = require('j-forms')
,jest = require('jest')
,MongooseAdminAudit = require('./mongoose_admin_audit.js').MongooseAdminAudit
,async = require('async')
,_ = require('underscore');
var AdminModel = module.exports = Class.extend({
init: function(options){
options = options || {};
this.name = options.name || null;
this.model = options.model || null;
this.form_type = options.form_type || forms.AdminForm;
this.resource = options.resource || jest.MongooseResource(this.model);
this.list = [];
this.sortable = null;
this.actions = [];
this.is_single = false;
},
update:function(req,user,document_id,params,callback){
var self = this;
var model = self.model;
var form_type = self.form_type;
var form = null;
async.waterfall([
function(cbk)
{
model.findById(document_id, function(err, document) {
cbk(err,document);
});
},
function(document,cbk)
{
form = new form_type(req,{instance:document,data:params},model);
form.is_valid(function(err,valid){
cbk(err || valid);
});
},
function(cbk)
{
form.save(cbk);
},
function(document,cbk){
MongooseAdminAudit.logActivity(user, self.name, document._id, 'edit', null, function(err, auditLog) {
cbk(null, document);
});
}],
callback);
},
count:function(callback)
{
if(this.is_single)
this.model.count({},callback);
else
callback(null,1);
}
});