Security News
PyPI Introduces Digital Attestations to Strengthen Python Package Security
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Bootstraped Admin Forms for MongoDB via Mongoose, originally forked from mongoose-admin.
var express = require('express'),
app = express();
require('formage').init(app, express [, models, options]);
Look at \example
directory.
// Site-wide options, and their default values
require('formage').init(app, express, models, {
title: 'Admin',
root: '/admin',
default_section: 'main',
username: 'admin',
password: 'admin',
admin_users_gui: ture
);
var model = new mongoose.model('songs', schema);
model.label = 'My Songs';
model.singular = 'Song';
// external files specific to this model
model.static = {
js: [ '/js/songs.js' ],
css: ['/css/songs.css' ]
};
// one-document models
model.single = true;
model.formage = {
filters: ['artist', 'year'],
// additional actions on this model
actions: [
{
value: 'release',
label: 'Release',
func: function (user, ids, callback) {
console.log('You just released songs ' + ids);
callback();
}
}
],
// list of fields to be displayed by formage for this model
list: ['number', 'title', 'album', 'artist', 'year'],
// list of order fields
order_by: ['-year', 'album', 'number'],
// list of fields that must be populated
// (see http://mongoosejs.com/docs/api.html#document_Document-populate)
list_populate: ['album'],
// list of fields on which full-text search is available
search: ['title', 'album', 'artist']
};
var schema = new mongoose.Schema({
artist: { type: String, label: 'Who made it?' },
// lang is a two letter ISO 639-1 code as recognized by google
location: { type: Schema.Types.GeoPoint, widget_options: {lang: 'nl'}}
});
var ReversedWidget = formage.widgets.TextWidget.extend({
render: function (res) {
this.value = this.value.split("").reverse().join("");
this.attrs.style = '-moz-transform: scale(-1, 1); -webkit-transform: scale(-1, 1); transform: scale(-1, 1);';
this._super(res);
}
});
var ReversedField = formage.fields.StringField.extend({
init: function (options) {
options = options || {};
options.widget = ReversedWidget;
this._super(options);
},
clean_value: function (req, callback) {
this.value = this.value.split("").reverse().join("");
this._super(req, callback);
}
});
var schema = new mongoose.Schema({
reversed: { type: String, formageField: ReversedField}
});
Shout-out to my man @jrowny
If we want to have a complex underlining type we need to "lie" to mongoose
var TwoDWidget = formage.widgets.TextWidget.extend({
render: function (res) {
var value = this.value || {};
var lat = value.lat;
var lng = value.lng;
var name = this.name;
this.name = name + '_lat';
this.value = lat;
this._super(res);
this.name = name + '_lng';
this.value = lng;
this._super(res);
}
});
var TwoDField = formage.fields.StringField.extend({
init: function (options) {
options = options || {};
options.widget = TwoDWidget;
this._super(options);
},
to_schema: function () {
return {
lat: Number,
lng: Number
};
},
clean_value: function (req, callback) {
var lat = Number(req.body[this.name + '_lat']);
var lng = Number(req.body[this.name + '_lng']);
this.value = { lat: lat, lng: lng};
this._super(req, callback);
}
});
var TwoD = function TwoD(path, options) {
TwoD.super_.call(this, path, options);
};
util.inherits(TwoD, Schema.Types.Mixed);
Types.TwoD = Object;
Schema.Types.TwoD = TwoD;
var schema = new mongoose.Schema({
two_d: { type: TwoD, formageField: TwoDField}
});
MIT
FAQs
Admin GUI addon for mongoose, jugglingdb, or just as a form generator
We found that formage demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports digital attestations, enhancing security and trust by allowing package maintainers to verify the authenticity of Python packages.
Security News
GitHub removed 27 malicious pull requests attempting to inject harmful code across multiple open source repositories, in another round of low-effort attacks.
Security News
RubyGems.org has added a new "maintainer" role that allows for publishing new versions of gems. This new permission type is aimed at improving security for gem owners and the service overall.