UNPKG

1.91 kBJavaScriptView Raw
1
2
3var Class = require('sji')
4 ,forms = require('j-forms')
5 ,jest = require('jest')
6 ,MongooseAdminAudit = require('./mongoose_admin_audit.js').MongooseAdminAudit
7 ,async = require('async')
8 ,_ = require('underscore');
9
10var AdminModel = module.exports = Class.extend({
11 init: function(options){
12 options = options || {};
13 this.name = options.name || null;
14 this.model = options.model || null;
15 this.form_type = options.form_type || forms.AdminForm;
16 this.resource = options.resource || jest.MongooseResource(this.model);
17 this.list = [];
18 this.sortable = null;
19 this.actions = [];
20 this.is_single = false;
21 },
22 update:function(req,user,document_id,params,callback){
23 var self = this;
24 var model = self.model;
25 var form_type = self.form_type;
26 var form = null;
27 async.waterfall([
28 function(cbk)
29 {
30 model.findById(document_id, function(err, document) {
31 cbk(err,document);
32 });
33 },
34 function(document,cbk)
35 {
36 form = new form_type(req,{instance:document,data:params},model);
37 form.is_valid(function(err,valid){
38 cbk(err || valid);
39 });
40 },
41 function(cbk)
42 {
43 form.save(cbk);
44 },
45 function(document,cbk){
46
47 MongooseAdminAudit.logActivity(user, self.name, document._id, 'edit', null, function(err, auditLog) {
48 cbk(null, document);
49 });
50 }],
51 callback);
52 },
53 count:function(callback)
54 {
55 if(this.is_single)
56 this.model.count({},callback);
57 else
58 callback(null,1);
59 }
60
61});
\No newline at end of file