Exemplo n.º 1
0
exports.uniqueReference = function (options) {
    if (!(options.type instanceof Type)) {
        throw new Error(
            'uniqueReference: The `type` option was not specified,' +
                'or is not an instance of the `Type` class.'
        );
    }
    var type = new Type('unique_reference', {
        fields: {}
    });
    type.fields._id = fields.string({
        omit_empty: true,
        required: !!options.required,
        widget: widgets.hidden(),
        permissions: {},
        default_value: function (req) {
            return req.uuid;
        }
    });
    type.type = options.type;
    return type;
};
Exemplo n.º 2
0
var Type = require('couchtypes/types').Type;
var fields = require('couchtypes/fields');

exports.execute = new Type('execute', {
    fields : {
                 command: fields.string(),
                 message: fields.string(),
                 timestamp : fields.string(),
                 created_by : fields.string()
             }
});

exports.data = new Type('data', {
    fields : {
                 value : fields.string(),
                 timestamp : fields.string(),
                 created_by : fields.string()
             }
});
Exemplo n.º 3
0
/**
 * Kanso document types to export
 */

var Type = require('couchtypes/types').Type,
    fields = require('couchtypes/fields'),
    widgets = require('couchtypes/widgets');

exports.work_type = new Type('work_type', {
    fields: {
        name: fields.string(),
        code: fields.number({required: false}),
        description: fields.string({required: false})
    }
});

exports.transaction = new Type('transaction', {
    fields: {
        transaction_type: fields.choice({values: {"donation": "Donation", "sale": "Sale"}}),
        party: {
            name: fields.string(),
            email: fields.email({required: false}),
            city: fields.string({required: false}),
            /* the first option for 'referred by' is deliberately blank, to allow for a default of no referral source */
            referred_by: fields.choice({required: false, values: {"": "", "search:cheap-computer": "Search for cheap/free computers", "search:recycling": "Search for computer recycling", "news": "News story", "flyer": "Flyer", "school": "School", "social-service": "Social service agency", "facebook": "Facebook", "twitter": "Twitter", "other": "Other"}})
        },
        items: fields.array({widget: widgets.textarea({cols: 40, rows: 5}), hint: "See sidebar for tips on entering item quantities and prices",
            /* the parseEach function should split off the numeric part of each item and use that as the item quantity; the remainder - anything after a number and a space */
            parseEach: function (string) {
                var description, desc_split, unit_price, extended_price
                var quantity = parseFloat(string.split(" ", 1)[0]);
Exemplo n.º 4
0
var Type = require('couchtypes/types').Type,
    fields = require('couchtypes/fields'),
    widgets = require('couchtypes/widgets'),
    permissions = require('couchtypes/permissions'),
    editorRole = 'wikieditor';

exports.page = new Type('page', {
    permissions: {
        add: permissions.hasRole(editorRole),
        update: permissions.hasRole(editorRole),
        remove: permissions.hasRole(editorRole)
    },
    fields: {
        _id: fields.string({
            validators: [function(doc, val, raw) {
                if (!permissions.hasRole('_admin')) {
                    // user is not admin, check page _id
                    var restricted = ["TAPIRWIKISETTINGS", "NewPage"];
                    for (i in restricted) {
                        if (val == restricted[i]) throw new Error("Restricted _id: " + restricted[i] + ". Not allowed to modify.");
                    }
                }
            }]
        }),
        body: fields.string(),
        edited_by: fields.string(),
        edited_on: fields.string()
    }
});
Exemplo n.º 5
0
/**
 * Kanso document types to export
 */

var Type = require('couchtypes/types').Type,
    fields = require('couchtypes/fields'),
    widgets = require('couchtypes/widgets');

exports.recipe = new Type('recipe', {
    fields: {
        title: fields.string(),
        source: fields.string({required: false}),
        ns: fields.number({required: false}),
        pageid: fields.number({required: false}),
        templates: fields.string({required: false}),
        iwlinks: fields.string({required: false}),
        displaytitle: fields.string({required: false}),
        langlinks: fields.string({required: false}),
        links: fields.string({required: false}),
        title: fields.string({required: false}),
        text: fields.string({required: false}),
        revid: fields.string({required: false}),
        externallinks: fields.string({required: false}),
        images: fields.string({required: false}),
        sections: fields.string({required: false}),
        properties: fields.string({required: false}),
        categories: fields.string({required: false})
    }
});
Exemplo n.º 6
0
exports.jpedit = function (doc, req) {
	var form = new Form({
		//tasks: fields.string(),
		//noc_code: fields.string(),
		profile_date: fields.string(),
		//leader_date: fields.string(),
		accountability: fields.string(),
		//staff_sign: fields.string(),
		//director_sign: fields.string(),
		core1: fields.string(),
		core2: fields.string(),
		core3: fields.string(),
		core4: fields.string(),
		core5: fields.string(),
		core6: fields.string(),
		core7: fields.string(),
		core8: fields.string(),

		_id: fields.string(),

		//core_comp: fields.string(),
		position_purpose: fields.string(),
		job_title: fields.string(),
		nature_work: fields.string(),
		//accountability_old: fields.string(),
		//updated: fields.string(),
		//leader_sign: fields.string(),
		qualifications: fields.string(),
		admin_area: fields.string(),
		//job_code: fields.string(),
		dev_phase: fields.string(),
		//position_num: fields.string(),
		//staff_date: fields.string(),
		//created: fields.string(),
		dept: fields.string(),
		//director_date: fields.string(),
		job_family: fields.string()
	});
	form.validate(req);

	if (form.isValid()) {
		form.core_comp = form.core1 + "|" + form.core2 + "|" + form.core3 + "|" + form.core4 + "|" + form.core5 + "|" + form.core6 + "|" + form.core7 + "|" + form.core8
		var currentdate = new Date(); 
		form.updated = currentdate.getDate();
		form.values._rev = doc._rev;
		return [form.values, toJSON(form.values)];
	} else {
		return [null, toJSON(form.errors)];
	}
};
Exemplo n.º 7
0
/**
 * Kanso document types to export
 */

var Type = require('couchtypes/types').Type,
    fields = require('couchtypes/fields'),
    permissions = require('couchtypes/permissions'),
    widgets = require('couchtypes/widgets');


exports.keyresult = new Type('keyresult', {
	fields: {
		results: fields.string()
	}
});

// a objective
exports.objective = new Type('objective', {


	// a objective has the following fields/schema
    fields: {
        created: fields.createdTime(),
		creator: fields.creator(),
        goal: fields.string({widget: widgets.textarea({cols: 40, rows: 1})}) ,
        keyresults: fields.embedList({
        	type: exports.keyresult

        })
    }
});
Exemplo n.º 8
0
var Type = require('couchtypes/types').Type,
	fields = require('couchtypes/fields');

exports.picture = new Type('picture', {
	fields: {
		creator: fields.creator(),
		dateinit: fields.createdTime(),
		title: fields.string(),
		description: fields.string(),
		vote: fields.number(),
		picture: fields.attachments()
	}
});

exports.comment = new Type('comment', {
	fields: {
		creator: fields.creator(),
		dateinit: fields.createdTime(),
		content: fields.string(),
		vote: fields.number(),
		ref_picture : fields.string()
	}
});
Exemplo n.º 9
0
var permissions = require('couchtypes/permissions'),
    fields = require('couchtypes/fields'),
    Type = require('couchtypes/types').Type;


exports['duality-contrib-comments:comment'] = new Type(
    'duality-contrib-comments:comment',
    {
        permissions: {
            add: permissions.loggedIn(),
            update: permissions.hasRole('_admin'),
            delete: permissions.any([
                permissions.usernameMatchesField('user'),
                permissions.hasRole('_admin')
            ])
        },
        fields: {
            user: fields.creator(),
            text: fields.string(),
            time: fields.string(),
            target: fields.string()
        }
    }
);
Exemplo n.º 10
0
var Type = exports.Type = function Type(name, options) {
    if (typeof name !== 'string') {
        throw new Error('First argument must be the type name');
    }
    this.name = name;
    options = options || {};

    var f = {};
    f._id = fields.string({
        omit_empty: true,
        required: false,
        widget: widgets.hidden(),
        permissions: {
            update: permissions.fieldUneditable()
        },
        default_value: function (req) {
            return req.uuid;
        }
    });
    f._rev = fields.string({
        omit_empty: true,
        required: false,
        widget: widgets.hidden()
    });
    f._deleted = fields.boolean({
        omit_empty: true,
        required: false,
        widget: widgets.hidden()
    });
    f.type = fields.string({
        default_value: name,
        widget: widgets.hidden(),
        validators: [
            function (doc, val, raw) {
                if (val !== name) {
                    throw new Error('Unexpected value for type');
                }
            },
        ]
    });
    for (var k in options.fields) {
        if (options.fields.hasOwnProperty(k)) {
            f[k] = options.fields[k];
        }
    }

    options.fields = f;
    _.extend(this, _.defaults(options, {
        permissions: []
    }));

    if (options.display_name) {
        if (typeof options.display_name !== 'function') {
            this.display_name = function (doc) {
                if (typeof options.display_name === 'string') {
                    options.display_name = [options.display_name];
                }
                return utils.getPropertyPath(doc, options.display_name);
            };
        }
    }
};
Exemplo n.º 11
0
/**
 * Kanso document types to export
 */

var Type = require('couchtypes/types').Type,
    fields = require('couchtypes/fields'),
    widgets = require('couchtypes/widgets');

exports.page = new Type('page', {
    fields: {
        title: fields.string(),
        // empty slug field maps to homepage
        slug: fields.string(),
        body: fields.string({
            widget: widgets.textarea({cols: 40, rows: 10})
        }),
        ordering: fields.number(),
        template: fields.string(),
        audit: {
            // add prev revisions field ?
            created: fields.createdTime(), // timestamp to created?
            //updated: fields.number(), // add modified field?
            created_by: fields.creator(), // creator field?
            //updated_by: fields.string() // add updator field?
        }
    }
});
Exemplo n.º 12
0
    permissions.usernameMatchesField('editableBy'),
    utils.roleMatchesField('editableBy'),
  ]);
}

exports.transaction = new Type('transaction', {
  permissions: {
    add:    permissions.loggedIn(),
    update: permissions.loggedIn(),
    remove: permissions.hasRole('_admin')
  },
  fields: {
    id:             idField(/\w+/),
    to:             fields.string({
      permissions: {
        update: permissions.fieldUneditable(),
      },
    }),
    editableBy:       fields.string({
      permissions: {
        update: permissions.fieldUneditable(),
      },
    }),
    declaredBy:    fields.creator(),
    from:           fields.string({
      permissions: {
        update: permissions.fieldUneditable(),
      },
    }),
    amount:         fields.number(),
    executionDate: fields.string({
Exemplo n.º 13
0
var Type        = require('couchtypes/types').Type;
var fields      = require('couchtypes/fields');
var permissions = require('couchtypes/permissions');
var idField     = require('../ITS/fields').idField;


exports.notification = new Type('notification', {
  permissions: {
    add: permissions.hasRole('notification_manager'),
    update: permissions.hasRole('notification_manager'),
    remove: permissions.hasRole('notification_manager')
  },
  fields: {
    id: idField(/\d+\-<subscriber>/),
    subscriber: fields.string(),
    message_txt: fields.string({
      require: false
    }),
    message_html: fields.string({
      require: false
    }),
    subject: fields.string({
      require: false
    }),
    created_at: fields.createdTime(),
    displayed: fields.boolean({
      default_value: function (req) {
        return false;
      },
      permissions: {
        update: permissions.usernameMatchesField('subscriber'),