class Project(db.Document): _id = db.ObjectIdField() project_name = db.StringField( max_length=100 ) description = db.StringField( max_length=255 ) user_id = db.ObjectIdField() meta = {'db_alias': 'default'}
class DeletedCalc(db.Document): _id = db.ObjectIdField() calc_name = db.StringField( max_length=100 ) description = db.StringField( max_length=250 ) calc_type_id = db.ObjectIdField() project_id = db.ObjectIdField( ) calc_input_dict = db.DictField() meta = {'db_alias': 'default'}
class CalcInput(db.Document): _id = db.ObjectIdField() calc_name = db.StringField( max_length=100 ) description = db.StringField( max_length=250 ) calc_type_id = db.ObjectIdField() project_id = db.ObjectIdField( ) calc_input_dict = db.DictField() left_header = db.StringField( max_length=250 ) center_header = db.StringField( max_length=250 ) right_header = db.StringField( max_length=250 ) meta = {'db_alias': 'default'}
class AISCSections2L(db.Document): _id = db.ObjectIdField() Type = db.StringField() EDI_Std_Nomenclature = db.StringField() AISC_name = db.StringField() T_F = db.StringField() W = db.FloatField( ) A = db.FloatField( ) d = db.FloatField( ) b = db.FloatField( ) t = db.FloatField( ) y = db.FloatField( ) yp = db.FloatField( ) Ix = db.FloatField( ) Zx = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Zy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) ro = db.FloatField( ) H = db.FloatField( ) blt = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'aisc_sections_2L'}
class AlumShapesWF(db.Document): _id = db.ObjectIdField() Size = db.StringField() Type = db.StringField() d = db.FloatField( ) bf = db.FloatField( ) tf = db.FloatField( ) tw = db.FloatField( ) R1 = db.FloatField( ) R2 = db.FloatField( ) d1 = db.FloatField( ) A = db.FloatField( ) W = db.FloatField( ) Ix = db.FloatField( ) Sx = db.FloatField( ) Zx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Sy = db.FloatField( ) Zy = db.FloatField( ) ry = db.FloatField( ) Cw = db.FloatField( ) J = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'alum_shapes_wf'}
class Message(db.Document): from_user = db.ReferenceField(User, db_field="fu", reverse_delete_rule=CASCADE) to_user = db.ReferenceField(User, db_field="tu", default=None, reverse_delete_rule=CASCADE) text = db.StringField(db_field="t", max_length=1024) live = db.BooleanField(db_field="l", default=True) create_date = db.LongField(db_field="c", default=now()) parent = db.ObjectIdField(db_field="p", default=None) images = db.ListField(db_field="ii") message_type = db.IntField(db_field="mt", default=POST, choices=MESSAGE_TYPE) @property def text_linkified(self): return linkify(self.text) @property def human_timestamp(self): return ms_stamp_humanize(self.create_date) @property def comments(self): return Message.objects.filter(parent=self.id, message_type=COMMENT).order_by('create_date') @property def likes(self): return Message.objects.filter(parent=self.id, message_type=LIKE).order_by('-create_date') def post_imgsrc(self, image_ts, size): if AWS_BUCKET: return os.path.join(AWS_CONTENT_URL, AWS_BUCKET, 'posts', '%s.%s.%s.png' % (self.id, image_ts, size)) else: return url_for('static', filename=os.path.join(STATIC_IMAGE_URL, 'posts', '%s.%s.%s.png' % (self.id, image_ts, size))) meta = { 'indexes': [('from_user', 'to_user', '-create_date', 'message_type', 'live')] }
class Course(db.Document): _id = db.ObjectIdField() courseID = db.StringField(max_length=10, unique=True) title = db.StringField(max_length=10) description = db.StringField(max_length=255) credits = db.IntField() term = db.StringField(max_length=30)
class CalcType(db.Document): _id = db.ObjectIdField() type_name = db.StringField( max_length=100, unique=True) description = db.StringField( max_length=255 ) file_name = db.StringField() meta = {'db_alias': 'default'}
class AISCSectionsRectangular(db.Document): _id = db.ObjectIdField() Type = db.StringField() EDI_Std_Nomenclature = db.StringField() AISC_name = db.StringField() T_F = db.StringField() W = db.FloatField( ) A = db.FloatField( ) Ht = db.FloatField( ) h = db.FloatField( ) B = db.FloatField( ) b = db.FloatField( ) tnom = db.FloatField( ) tdes = db.FloatField( ) Ix = db.FloatField( ) Zx = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Zy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) J = db.FloatField( ) C = db.FloatField( ) bltdes = db.FloatField( ) hltdes = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'aisc_sections_rectangular'}
class Feed(db.Document): user = db.ReferenceField(User, db_field="u", reverse_delete_rule=CASCADE) message = db.ReferenceField(Message, db_field="m", reverse_delete_rule=CASCADE) parent = db.ObjectIdField(db_field="p", default=None) create_date = db.IntField(db_field="cd", default=now()) meta = { 'indexes': [('user', 'parent', '-create_date')] }
class FaASCE710(db.Document): _id = db.ObjectIdField() SiteClass = db.StringField( max_length=10 ) ss25 = db.FloatField( ) ss50 = db.FloatField( ) ss75 = db.FloatField( ) ss100 = db.FloatField( ) ss125 = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'FaASCE710'}
class FvASCE716(db.Document): _id = db.ObjectIdField() SiteClass = db.StringField( max_length=10 ) s11 = db.FloatField( ) s12 = db.FloatField( ) s13 = db.FloatField( ) s14 = db.FloatField( ) s15 = db.FloatField( ) s16 = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'FvASCE716'}
class Event(db.Document): name = db.StringField(required=True) place = db.StringField(required=True) location = db.PointField(required=True) start_datetime = db.DateTimeField(required=True) end_datetime = db.DateTimeField(required=True) event_photo = db.StringField() description = db.StringField(min_length=50, required=True) host = db.ObjectIdField(required=True) cancel = db.BooleanField(default=False) attendees = db.ListField(db.ReferenceField(User))
class AISCSectionsL(db.Document): _id = db.ObjectIdField() Type = db.StringField() EDI_Std_Nomenclature = db.StringField() AISC_name = db.StringField() T_F = db.StringField() W = db.FloatField( ) A = db.FloatField( ) d = db.FloatField( ) b = db.FloatField( ) t = db.FloatField( ) kdes = db.FloatField( ) kdet = db.FloatField( ) x = db.FloatField( ) y = db.FloatField( ) xp = db.FloatField( ) yp = db.FloatField( ) Ix = db.FloatField( ) Zx = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Zy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) Iz = db.FloatField( ) rz = db.FloatField( ) Sz = db.FloatField( ) J = db.FloatField( ) Cw = db.FloatField( ) ro = db.FloatField( ) H = db.FloatField( ) Iw = db.FloatField( ) zA = db.FloatField( ) zB = db.FloatField( ) zC = db.FloatField( ) wA = db.FloatField( ) wB = db.FloatField( ) wC = db.FloatField( ) SwA = db.FloatField( ) SwB = db.FloatField( ) SwC = db.FloatField( ) SzA = db.FloatField( ) SzB = db.FloatField( ) SzC = db.FloatField( ) PA = db.FloatField( ) PA2 = db.FloatField( ) PB = db.FloatField( ) blt = db.FloatField( ) tana = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'aisc_sections_L'}
class AISCSectionsChannel(db.Document): _id = db.ObjectIdField() Type = db.StringField() EDI_Std_Nomenclature = db.StringField() AISC_name = db.StringField() T_F = db.StringField() W = db.FloatField( ) A = db.FloatField( ) d = db.FloatField( ) ddet = db.FloatField( ) bf = db.FloatField( ) bfdet = db.FloatField( ) tw = db.FloatField( ) twdet = db.FloatField( ) tf = db.FloatField( ) tfdet = db.FloatField( ) kdes = db.FloatField( ) kdet = db.FloatField( ) x = db.FloatField( ) eo = db.FloatField( ) xp = db.FloatField( ) Ix = db.FloatField( ) Zx = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Zy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) J = db.FloatField( ) Cw = db.FloatField( ) Wno = db.FloatField( ) Sw1 = db.FloatField( ) Sw2 = db.FloatField( ) Sw3 = db.FloatField( ) Qf = db.FloatField( ) Qw = db.FloatField( ) ro = db.FloatField( ) H = db.FloatField( ) rts = db.FloatField( ) ho = db.FloatField( ) PA = db.FloatField( ) PB = db.FloatField( ) PC = db.FloatField( ) PD = db.FloatField( ) T = db.FloatField( ) WGi = db.FloatField( ) blt = db.FloatField( ) hltw = db.FloatField( ) twdetl2 = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'aisc_sections_channel'}
class User(db.Document): _id = db.ObjectIdField() id = db.IntField(unique=True) first_name = db.StringField(max_length=50) last_name = db.StringField(max_length=50) email = db.StringField(max_length=30, unique=True) password = db.StringField() def set_password(self, password): self.password = generate_password_hash(password) def get_password(self, password): return check_password_hash(self.password, password)
class Message(db.Document): from_user = db.ReferenceField(User, db_field="fu", reverse_delete_rule=CASCADE) #optional, if not set, from_user is broadcasting. If set message sent to specific person to_user = db.ReferenceField(User, db_field="tu", default=None, reverse_delete_rule=CASCADE) text = db.StringField(db_field="t", max_length=300) live = db.BooleanField(db_field="l", default=None) create_date = db.IntField(db_field="cd", default=now()) parent = db.ObjectIdField(db_field="p", default=None) image = db.StringField(db_field="i", default=None) meta = { 'indexes': [('from_user', 'to_user', '-create_date', 'parent', 'live')] }
class Notification(db.Document): name = db.StringField(db_field="n") user_id = db.ObjectIdField(db_field='uid') payload_json = db.StringField(db_field="pj") def get_message(self): return json.loads(str(self.payload_json)) def save_tail(self): pre = Tail(pre=self.get_message()) pre.save() return pre.pre meta = {'indexes': ['user_id']}
class File_Record(db.Document): #store email from_user = db.ReferenceField(User, db_field="rfu") #store storecodes to_store = db.ReferenceField(Store, db_field="rt") date_time = db.StringField(db_field="dt") int_time = db.LongField(db_field="it") prize = db.StringField() size = db.StringField() descp = db.StringField() paid = db.BooleanField() type = db.StringField() parent = db.ObjectIdField(db_field="p") meta = {'indexes': ['type', 'to_store', 'from_user', 'int_time']}
class AlumShapesCircular(db.Document): _id = db.ObjectIdField() Size = db.StringField() OD = db.FloatField( ) ID = db.FloatField( ) t = db.FloatField( ) A = db.FloatField( ) W = db.FloatField( ) I = db.FloatField( ) S = db.FloatField( ) Z = db.FloatField( ) r = db.FloatField( ) J = db.FloatField( ) Rblt = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'alum_shapes_circular'}
class AISCSectionsT(db.Document): _id = db.ObjectIdField() Type = db.StringField() EDI_Std_Nomenclature = db.StringField() AISC_name = db.StringField() T_F = db.StringField() W = db.FloatField( ) A = db.FloatField( ) d = db.FloatField( ) ddet = db.FloatField( ) bf = db.FloatField( ) bfdet = db.FloatField( ) tw = db.FloatField( ) twdet = db.FloatField( ) tf = db.FloatField( ) tfdet = db.FloatField( ) kdes = db.FloatField( ) kdet = db.FloatField( ) y = db.FloatField( ) yp = db.FloatField( ) Ix = db.FloatField( ) Zx = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Zy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) J = db.FloatField( ) Cw = db.FloatField( ) ro = db.FloatField( ) H = db.FloatField( ) PA = db.FloatField( ) PB = db.FloatField( ) PC = db.FloatField( ) PD = db.FloatField( ) WGi = db.FloatField( ) Dlt = db.FloatField( ) bfl2tf = db.FloatField( ) twdetl2 = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'aisc_sections_T'}
class AlumShapesRectangular(db.Document): _id = db.ObjectIdField() Name = db.StringField() Type = db.StringField() d = db.FloatField( ) b = db.FloatField( ) t = db.FloatField( ) W = db.FloatField( ) A = db.FloatField( ) Ix = db.FloatField( ) Sx = db.FloatField( ) Zx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Sy = db.FloatField( ) Zy = db.FloatField( ) ry = db.FloatField( ) J = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'alum_shapes_rectangular'}
class AlumShapesChannel(db.Document): _id = db.ObjectIdField() Size = db.StringField() Type = db.StringField() d = db.FloatField( ) b = db.FloatField( ) tftip = db.FloatField( ) tf = db.FloatField( ) tw = db.FloatField( ) R1 = db.FloatField( ) R2 = db.FloatField( ) d1 = db.FloatField( ) A = db.FloatField( ) W = db.FloatField( ) Ix = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) Iy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) x = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'alum_shapes_channel'}
class AlumShapesL(db.Document): _id = db.ObjectIdField() Size = db.StringField() Type = db.StringField() d = db.FloatField( ) b = db.FloatField( ) t = db.FloatField( ) R1 = db.FloatField( ) R2 = db.FloatField( ) W = db.FloatField( ) A = db.FloatField( ) Ix = db.FloatField( ) Sx = db.FloatField( ) rx = db.FloatField( ) y = db.FloatField( ) Iy = db.FloatField( ) Sy = db.FloatField( ) ry = db.FloatField( ) x = db.FloatField( ) Iz = db.FloatField( ) rz = db.FloatField( ) a = db.FloatField( ) meta = {'db_alias': 'calc_db', 'collection': 'alum_shapes_L'}
class Tail(db.Document): pre = db.StringField(db_field="pre") noti = db.ObjectIdField() user = db.ObjectIdField()
class SendNumber(db.Document): UNPAID = 0 PAID = 1 PAID = ((UNPAID, 'UP'), (PAID, 'PD')) name = db.StringField(db_field="name") number_time = db.IntField(db_field="nt") for_who = db.ObjectIdField(db_field="fw") date_time = db.IntField(db_field="dt") readable_date = db.StringField(db_field="rdt") paid = db.IntField(db_field="p", choice=PAID, default=UNPAID) sale = db.StringField(db_field="s") #add 1 each time it was called def add_time(self): self.number_time = self.number_time + 1 self.save() # add up record by one @staticmethod def set_record(name, object_id): rec = SendNumber.objects.filter(name=name, for_who=object_id).first() if rec: rec.add_time() return rec else: rec = SendNumber(name=name, for_who=object_id, number_time=1).save() return rec def get_rec(self): return self.number_time #create a total new record #of course this will have the same name only different would be date @staticmethod def attime_record(name, object_id, total, sale): rec = SendNumber(name=name, for_who=object_id, number_time=total, date_time=now(), readable_date=f'{human_date(now())}', sale=sale) rec.save() return rec #create a total record which add up with a record that has the same name #or create one if it doesn't exists @staticmethod def sum_record(name, object_id, total): rec = SendNumber.objects.filter(name=name, for_who=object_id).first() if rec: rec.number_time = rec.number_time + total rec.save() else: rec = SendNumber( name=name, for_who=object_id, number_time=total, ).save() meta = {'indexes': ['name', '-readable_date']}