class InvoicingSettings(EmbeddedDocument): """A wrapper to Invoicing's module settings.""" TAXES_APPLICATION = TAXES_APPLICATION PAYMENT_TYPES = PAYMENT_TYPES PAYMENT_CONDITIONS = PAYMENT_CONDITIONS supported_currencies = fields.ListField(fields.ReferenceField("Currency")) default_currency = fields.ReferenceField("Currency", required=True) fy_start_month = fields.IntField(required=True, default=0, min_value=0, max_value=11) inv_taxes_application = fields.StringField(required=True, choices=TAXES_APPLICATION, default="EXCLUSIVE") quotation_validity = fields.IntField(required=True, default=30) payment_conditions = fields.StringField(required=True, choices=PAYMENT_CONDITIONS, default="CASH") custom_payment_conditions = fields.StringField() accepted_payment_types = fields.ListField( fields.StringField(choices=PAYMENT_TYPES), required=True, default=lambda: ["CHECK", "CASH", "CREDIT_CARD", "TRANSFER"]) late_fee_rate = fields.DecimalField() down_payment_percent = fields.DecimalField(required=True, default=lambda: Decimal("0")) automatic_reminders = fields.BooleanField(required=True, default=False) automatic_reminders_text = fields.StringField(max_length=1024) automatic_reminders_send_copy = fields.BooleanField(required=True, default=True) numbering = fields.EmbeddedDocumentField( "InvoicingNumberingSettings", required=True, default=lambda: InvoicingNumberingSettings())
class InvoiceItem(EmbeddedDocument): """ An :class:`~invoicing.models.InvoiceItem` is an :class:`~invoicing.models.Item` embedded in the :class:`~invoicing.models.InvoiceRevision` items list. It corresponds to the line of an invoice. """ reference = fields.StringField(required=True, max_length=32) description = fields.StringField(required=True, max_length=512) quantity = fields.DecimalField(required=True, default=lambda: Decimal("1")) unit_price = fields.DecimalField(required=True) tax = fields.ReferenceField("Tax", required=True) item_id = fields.ObjectIdField() #footnote = fields.StringField(max_length=512) def __unicode__(self): if isinstance(self.reference, basestring): return self.reference return unicode(self.reference) @property def total_price(self): """Return the total price for this item, considering the quantity.""" return self.quantity * self.unit_price
class Item(mongoengine.Document): meta = {'collection': 'mop_items', 'allow_inheritance': True} name = fields.StringField(required=True) description = fields.StringField(required=True) price = fields.DecimalField(required=True, min_value=0, precision=2) weight = fields.DecimalField(required=True, min_value=0, precision=2)
class Historico(Document): stock = fields.StringField() open = fields.DecimalField() high = fields.DecimalField() low = fields.DecimalField() close = fields.DecimalField() volume = fields.DecimalField() date = fields.StringField()
class GeneralReview(gj.Document): rating = fields.DecimalField(min_value=0, max_value=5, precision=1) rounded_rating = fields.IntField(min_value=0, max_value=5) food = fields.DecimalField(min_value=0, max_value=5, precision=1) service = fields.DecimalField(min_value=0, max_value=5, precision=1) ambience = fields.DecimalField(min_value=0, max_value=5, precision=1) noise = fields.StringField(max_length=10, choices=noise) amount = fields.IntField(min_value=0, default=0) distribution = fields.ListField(field=fields.IntField(min_value=0), max_length=5, default=[0]*5)
class CommonItem(BaseDocument): def __str__(self): return 'CommonItem' meta = {'collection': 'mop_items', 'allow_inheritance': True} name = fields.StringField(required=True) description = fields.StringField(required=True) price = fields.DecimalField(required=True, min_value=0, precision=2) weight = fields.DecimalField(required=True, min_value=0, precision=2)
class Recipes(Document): title = fields.StringField(required=True, default="") calories = fields.DecimalField(required=True, default=0.0) protein = fields.DecimalField(required=True, default=0.0) sodium = fields.DecimalField(required=True, default=0.0) rating = fields.DecimalField(required=True, default=0.0) ingredients = fields.DynamicField(required=True) directions = fields.DynamicField(required=True) categories = fields.DynamicField(required=True) description = fields.StringField(required=True, default="")
class ProfilingRequest(Document, FlaskAdminURLMixin, GetAttributeMixin): method = fields.StringField() path = fields.StringField() referrer = fields.StringField() environ = fields.DictField() status = fields.DictField() pyprofile = fields.StringField() query_count = fields.IntField() duration = fields.DecimalField() query_duration = fields.DecimalField() time = fields.DateTimeField() def __unicode__(self): return '%s %s' % (self.get('method'), self.get('path'))
class TagPopularity(Document): tag = fields.StringField(required=True) n_posts = fields.DecimalField(precision=15) def __str__(self): # return '('+self.tag+','+str(float(self.n_posts),'utf-8')+')' return '( %s, %f)' % (self.tag, float(self.n_posts))
class WeTrackPost(EmbeddedDocument): postcode = fields.StringField(max_length=50) postscore = fields.DecimalField(min_value=0, precision=10) timestamp = fields.DateTimeField() nr_likes = fields.FloatField(min_value=0, precision=10) nr_comments = fields.FloatField(min_value=0, precision=10) tags = fields.ListField(fields.StringField(max_length=100))
class PatrimonyDocument(documents.BaseEmbeddedDocument): """ Document that represent the customer's patrimonies registered in app """ value = fields.DecimalField(required=True) description = fields.StringField(max_length=1000, required=True)
class SourceIncomeDocument(documents.BaseEmbeddedDocument): """ Document that represent the customer's source of income registered in app """ value = fields.DecimalField(required=True) description = fields.StringField(max_length=1000, required=True)
class grades(Document): student_id = fields.IntField() type = fields.StringField() score = fields.DecimalField() def __repr__(self): return 'Studen id: ' + str(self.student_id)
class Feed(Document): sender = fields.StringField(default="", required=True) datetime = fields.DateTimeField(default=datetime.datetime.now(), required=True) priority = fields.DecimalField(default=0, required=True) description = fields.StringField(default="", required=True) others = fields.ListField(fields.EmbeddedDocumentField(OtherInput))
class FieldOptionsModel(Document): required_field = fields.IntField(required=True) null_field = fields.IntField(null=True) choices_field = fields.StringField(choices=COLOR_CHOICES) length_limit_field = fields.StringField(min_length=3, max_length=12) value_limit_field = fields.IntField(min_value=3, max_value=12) decimal_field = fields.DecimalField(precision=4, max_value=9999)
class RegularModel(Document): """ A model class for testing regular flat fields. """ str_field = fields.StringField() str_regex_field = fields.StringField(regex="^valid_regex") url_field = fields.URLField() email_field = fields.EmailField() int_field = fields.IntField() long_field = fields.LongField() float_field = fields.FloatField() boolean_field = fields.BooleanField() nullboolean_field = fields.BooleanField(null=True) date_field = fields.DateTimeField() complexdate_field = fields.ComplexDateTimeField() uuid_field = fields.UUIDField() id_field = fields.ObjectIdField() decimal_field = fields.DecimalField() custom_field = CustomField() # TODO # dynamic_field = fields.DynamicField() # bin_field = fields.BinaryField() # file_field = fields.FileField() # image_field = fields.ImageField() def method(self): return 'method'
class Tax(ZombieMixin, Document): """A tax is associated to :class:`~invoicing.models.Item`\ s and :class:`~invoicing.models.InvoiceItem`\ s.""" tenant = fields.ReferenceField("Tenant", required=True) name = fields.StringField(required=True, max_length=64) rate = fields.DecimalField(required=True, precision=4) meta = { "indexes": ["tenant", "name"], # Vosae specific "vosae_permissions": ("change_invoicingsettings",), "vosae_mandatory_permissions": ("invoicing_access",), } def __unicode__(self): return u'%s (%s%%)' % (self.name, self.rate * 100) def save(self, *args, **kwargs): """ The :class:`~invoicing.models.Tax` rate should not be updated. If needed, the tax must be removed and then re-added with the updated rate value. """ if hasattr(self, '_changed_fields') and 'rate' in self._changed_fields: raise InvalidTaxRate("Tax rate is not modifiable.") super(Tax, self).save(*args, **kwargs)
class Patrimony(EmbeddedDocument): """ This models contains the patrimony data. """ patrimony_type = fields.StringField(required=True, max_length=100) amount = fields.DecimalField(required=True) def __str__(self): return "{} - R$ {}".format(self.patrimony_type, self.amount)
class Income(EmbeddedDocument): """ This models contains the source Income data. """ income_type = fields.StringField(required=True, max_length=100) amount = fields.DecimalField(required=True) def __str__(self): return "{} - R$ {}".format(self.income_type, self.amount)
class Transaction(EmbeddedDocument): """ This model contains the transaction data """ amount = fields.DecimalField(max_digits=10, decimal_places=2) date_debt = fields.DateTimeField() payment_type = fields.StringField(max_length=100) def __str__(self): return "R$ {} ({})".format(self.amount, self.payment_type)
class FieldOptionsModel(Document): required_field = fields.IntField(required=True) int_null_field = fields.IntField(null=True) string_null_field = fields.StringField(null=True) required_list_field = fields.ListField(fields.IntField(), required=True) non_required_list_field = fields.ListField(fields.IntField(), required=False) required_dict_field = fields.DictField(required=True) choices_field = fields.StringField(choices=COLOR_CHOICES) length_limit_field = fields.StringField(min_length=3, max_length=12) value_limit_field = fields.IntField(min_value=3, max_value=12) decimal_field = fields.DecimalField(precision=4, max_value=9999)
class SimpleDoc(Document): f_str = fields.StringField() f_url = fields.URLField() f_eml = fields.EmailField() f_int = fields.IntField() f_lng = fields.LongField() f_flt = fields.FloatField() f_dec = fields.DecimalField() f_bool = fields.BooleanField() f_dt = fields.DateTimeField() f_oid = fields.ObjectIdField() f_uuid = fields.UUIDField()
class TestDocument(Document): string_field = fields.StringField( verbose_name='A string', regex=r'[\w]+', max_length=100, min_length=10, help_text='Fill in a string', ) url_field = fields.URLField( verbose_name='An URL', help_text='Fill in an URL', ) email_field = fields.EmailField( verbose_name='An e-mail address', regex=r'.*', max_length=101, min_length=11, help_text='Fill in an e-mail address', ) int_field = fields.IntField( verbose_name='An int', min_value=1, max_value=102, help_text='Fill in an int', ) float_field = fields.FloatField( verbose_name='A float', min_value=2, max_value=103, help_text='Fill in a float', ) decimal_field = fields.DecimalField( verbose_name='A decimal', min_value=3, max_value=104, help_text='Fill in a decimal', ) datetime_field = fields.DateTimeField( verbose_name='A datetime', help_text='Fill in a datetime', ) boolean_field = fields.BooleanField( verbose_name='A bool', help_text='Yes or no?', )
class ExchangeRate(EmbeddedDocument): """ Exchange rates are included in every :class:`~invoicing.models.Currency` objects. They represent the rate between two currencies at a specific time. """ currency_to = fields.StringField( required=True, choices=settings.VOSAE_SUPPORTED_CURRENCIES) datetime = fields.DateTimeField(required=True) rate = fields.DecimalField(required=True) def __unicode__(self): return self.currency_to
class Metadata(EmbeddedDocument): calculated = fields.BooleanField(default=False) eff_vs_layer_thickness = fields.EmbeddedDocumentField(Plot) eff_vs_bslayer_thickness = fields.EmbeddedDocumentField(Plot) eff_vs_tslayer_thickness = fields.EmbeddedDocumentField(Plot) eff_vs_wavelength = fields.EmbeddedDocumentField(Plot) eff_vs_wavelength_bs = fields.EmbeddedDocumentField(Plot) eff_vs_wavelength_ts = fields.EmbeddedDocumentField(Plot) total_efficiency = fields.DecimalField(null=True, default=0) phs_alpha_06 = fields.EmbeddedDocumentField(Plot) phs_alpha_94 = fields.EmbeddedDocumentField(Plot) phs_li_06 = fields.EmbeddedDocumentField(Plot) phs_li_94 = fields.EmbeddedDocumentField(Plot)
class Advert(Category): parent = fields.ReferenceField('Category', reverse_delete_rule=CASCADE) title = fields.StringField(required=True, max_length=300) loc = fields.PointField(required=True, default=[0.0, 0.0]) country = fields.StringField(max_length=30) region = fields.StringField(max_length=30) city = fields.StringField(max_length=30) street = fields.StringField(max_length=100) rooms = fields.IntField(required=True, default=0) square_gen = fields.IntField(required=True, default=0) square_live = fields.IntField(required=True, default=0) room_height = fields.IntField(required=True, default=0) floors = fields.IntField(required=True, default=0) floor = fields.IntField(required=True, default=0) wall_type = fields.IntField(choices=WALL_TYPES, required=True, default=WALL_TYPES[0][0]) build_type = fields.IntField(choices=BUILD_TYPES, required=True, default=BUILD_TYPES[0][0]) price = fields.DecimalField() finished = fields.DateTimeField() #language field is needed for full text search. language = fields.StringField(default='english') text = fields.StringField(max_length=5000) meta = { 'indexes': [('kind', 'path', 'loc', 'parent'), ('kind', 'path', 'loc', 'parent', 'finished')] } @queryset_manager def nodes(cls, queryset, uid, gids): return search_nodes(queryset, cls.get_kind(), uid, gids).filter( Q(finished__exists=False) | Q(finished__gt=datetime.datetime.now())) @queryset_manager def nearest(cls, queryset, uid, gids, lat, lon, parent=None): try: lon, lat = float(lon), float(lat) except (TypeError, ValueError): lon, lat = 0.0, 0.0 return search_children( queryset, cls.get_kind(), uid, gids, pid=parent, direct=False).filter(loc__near=[lon, lat]).filter( Q(finished__exists=False) | Q(finished__gt=datetime.datetime.now()))
class BillModel(Document): source = fields.StringField(name="账单来源") # 微信导入/支付宝导入/信息收录 title = fields.StringField(name="描述") fee = fields.DecimalField(name="金额(元)") remark = fields.StringField(name="备注") create_time = fields.DateTimeField("创建时间") is_delete = fields.BooleanField("删除") update_time = fields.DateTimeField("更新时间") meta = { "indexes": ["desc_type", "title"], "index_background": True, "collection": "file_info", }
class ProfilingQuery(Document, FlaskAdminURLMixin, GetAttributeMixin): request = fields.ReferenceField(ProfilingRequest) command_name = fields.StringField() database_name = fields.StringField() operation_id = fields.IntField() connection = fields.EmbeddedDocumentField( ProfilingQueryConnection) # connection_id request_id = fields.StringField() failure = fields.DictField() duration = fields.DecimalField() command = fields.DictField() def __unicode__(self): return '%s' % self.get('command_name', 'Command')
class Schema1EmbDoc2(EmbeddedDocument): embdoc2_int = fields.IntField() embdoc2_str = fields.StringField() embdoc2_str_empty = fields.StringField() embdoc2_str_ten = fields.StringField(choices=[str(x) for x in range(11)]) embdoc2_float = fields.FloatField() embdoc2_int_empty = fields.IntField() embdoc2_long = fields.LongField() embdoc2_decimal = fields.DecimalField() embdoc2_complex_datetime = fields.ComplexDateTimeField() embdoc2_list = fields.ListField() embdoc2_ref_doc1 = fields.ReferenceField('Schema1Doc1') embdoc2_emb_embdoc2 = fields.EmbeddedDocumentField('self') embdoc2_emblist_embdoc2 = fields.EmbeddedDocumentListField('self')
class Media(Document): type = fields.StringField() file_id = fields.StringField(primary_key=True) artist = fields.StringField() title = fields.StringField() filename = fields.StringField() path = fields.StringField() album = fields.StringField() description = fields.StringField() genre = fields.StringField() bpm = fields.DecimalField() tags = fields.DictField() image = fields.StringField() def get_collection(self): return self._get_collection()