Example #1
0
class Reservation(Document):
    client = ReferenceField(Client, required=True)
    book = ReferenceField(Book, required=True)
    date_reserved = DateField(required=True)
    date_returned = DateField()
    total_price = FloatField()

    def update_price(self):
        self.total_price = round(self.get_total_price(), 2)
        self.save()

    def get_total_price(self):
        additional_price = self.get_additional_price()
        return self.book.price + additional_price

    def get_additional_price(self):
        max_date = self.date_reserved + timedelta(days=3)
        today = datetime.now().date()
        fine = 0
        interest_rate = 0
        original_price = self.book.price
        if today <= max_date:
            return fine
        days = abs((today - max_date).days)
        if days < 3:
            fine = 0.03
            interest_rate = 0.002
        elif days >= 3 and days <= 4:
            fine = 0.05
            interest_rate = 0.004
        else:
            fine = 0.07
            interest_rate = 0.006
        return original_price * fine + interest_rate * days * original_price
Example #2
0
class PlanSettings(Document):
    timeframe = StringField()
    yearbegin = DateField(unique=True)
    summerbegin = DateField(unique=True)
    seasonwinterbegin = DateField(unique=True)
    seasonspringbegin = DateField(unique=True)
    semestertwobegin = DateField(unique=True)
Example #3
0
class ToDoList(Document):
    """
    TodoList model  abstraction
    """

    name = StringField(max_length=30)
    description = StringField(max_length=255)
    owner = StringField()
    todos = DictField()
    access = DictField()
    created_at = DateField()
    last_update = DictField()
    deadline = DateField()
    notification = DateField()
    status = StringField()

    def serialize(self) -> dict:
        return {
            "id": str(self.pk),
            "name": self.name,
            "description": self.description,
            "owner": self.owner,
            "todos": self.todos,
            "access": self.access,
            "created_at": str(self.created_at),
            "lastupdate": {
                "user": self.last_update["user"],
                "date": str(self.last_update["date"]),
                "todo": self.last_update["todo"],
            },
            "deadline": str(self.deadline),
            "notification": str(self.notification),
            "status": self.status,
        }
Example #4
0
class ToDo(Document):
    """
    Todo model abstraction
    """

    name = StringField(max_length=30)
    description = StringField()
    owner = StringField()
    todolist = StringField()
    assignment = StringField()
    created_at = DateField()
    last_update = DictField()
    deadline = DateField()
    notification = DateField()
    status = StringField()
    attachments = DictField()

    def serialize(self) -> dict:
        return {
            "id": str(self.pk),
            "name": self.name,
            "description": self.description,
            "owner": self.owner,
            "todolist": self.todolist,
            "assignment": self.assignment,
            "created_at": str(self.created_at),
            "lastupdate": {
                "user": self.last_update["user"],
                "date": str(self.last_update["date"]),
            },
            "deadline": str(self.deadline),
            "notification": str(self.notification),
            "status": self.status,
            "attachments": self.attachments,
        }
Example #5
0
class Register(Document):
    name = StringField(required=True)
    email = StringField(required=True)
    mobile = StringField(required=True, max_length=12)
    created_at = DateField(
        default=datetime.strftime(datetime.today(), "%a %d-%m-%Y %H:%M:%S"))
    updated_at = DateField(required=False)
Example #6
0
class WorkOrder(BaseRecord):
    # constructor:
    workOrderName = StringField(max_length=15, required=True, unique=True)
    dateReceived = DateField(required=True, default=dt.datetime.now())
    detail = StringField(defualt='')  # multiline
    requestingContact = StringField(required=True)
    priority = StringField(required=True)
    statusCode = StringField(
        max_length=30,
        required=True)  # choices: Pending Materials, Ready Now, Other
    requestCode = StringField(max_length=30,
                              required=True)  # choices: P-4, P-48, Other

    dateCompleted = DateField(required=True)
    inspectForStoreFile = FileField()
    detailedReceiptFile = FileField()
    signageMapFile = FileField()
    partsArrivalDate = DateField()

    targetStartDate = DateField(required=True)
    fkWorkOrderStatus = ReferenceField('WorkOrderStatus',
                                       required=True,
                                       dbref=False)
    fkStoreNumber = ReferenceField('Store', required=True, dbref=False)
    meta = {'collection': 'WorkOrder'}

    def to_file(self):
        return GridFSProxy(self)

    def __str__(self):
        return f'{self.workOrderName} - {self.fkWorkOrderStatus.status}'
Example #7
0
class Admin(Document):
    name = StringField(required=True)
    email = StringField(required=True)
    mobile = StringField(required=True, max_length=12)
    type = StringField(choices=["SUPER", "NORMAL"])
    created_at = DateField(
        default=datetime.strftime(datetime.today(), "%a %d-%m-%Y %H:%M:%S"))
    updated_at = DateField(required=False)
Example #8
0
class Portfolio(Document):
    business_id = ReferenceField("Business", required=True)
    name = StringField(required=True)
    about = StringField(required=True, max_length=125)
    images = ListField(required=False)
    created_at = DateField(
        default=datetime.strftime(datetime.today(), "%a %d-%m-%Y %H:%M:%S"))
    updated_at = DateField(required=False)
Example #9
0
class Login(Document):
    email = StringField(unique=True, required=True)
    password = StringField(required=True)
    type = StringField(choices=["ADMIN", "BUSINESS", "CLIENT"])
    active = StringField(required=True)
    created_at = DateField(
        default=datetime.strftime(datetime.today(), "%a %d-%m-%Y %H:%M:%S"))
    updated_at = DateField(required=False)
Example #10
0
class PEAC(Request):

    full_name = 'Permiso Académico'

    reason_permision = StringField(required=True,
                                   default='Con el objetivo de ...',
                                   display='Razón del permiso académico')
    from_date = DateField(required=True,
                          display='Fecha de inicio del permiso',
                          default=datetime.date.today)
    to_date = DateField(required=True,
                        display='Fecha de fin del permiso',
                        default=datetime.date.today)

    str_cm = [
        'otorgar permiso académico. Desde la fecha {}, a la fecha {}.',
    ]

    regulation_list = ['070|2012|CSU']  # List of regulations

    def cm(self, docx):
        paragraph = docx.add_paragraph()
        paragraph.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
        paragraph.paragraph_format.space_after = Pt(0)
        self.cm_answer(paragraph)
        paragraph.add_run(' ({}). '.format(
            self.regulations[self.regulation_list[0]][0]))

    def cm_answer(self, paragraph):
        paragraph.add_run(self.str_council_header + ' ')
        paragraph.add_run(
            # pylint: disable=no-member
            self.get_approval_status_display().upper() + ' ').font.bold = True
        paragraph.add_run(self.str_cm[0].format(self.from_date, self.to_date) +
                          ' ')
        paragraph.add_run(self.reason_permision + ' ')

    def pcm(self, docx):
        self.pcm_analysis(docx)
        paragraph = docx.add_paragraph()
        paragraph.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
        paragraph.paragraph_format.space_after = Pt(0)
        paragraph.add_run(self.str_answer + ': ').bold = True
        self.pcm_answer(paragraph)

    def pcm_analysis(self, docx):
        analysis_list = []
        analysis_list += self.extra_analysis
        add_analysis_paragraph(docx, analysis_list)

    def pcm_answer(self, paragraph):
        paragraph.add_run(self.str_comittee_header + ' ')
        paragraph.add_run(
            # pylint: disable=no-member
            self.get_advisor_response_display().upper() + ' ').font.bold = True
        paragraph.add_run(self.str_cm[0].format(self.from_date, self.to_date) +
                          ' ')
        paragraph.add_run(self.reason_permision + ' ')
Example #11
0
class Store(BaseRecord):
    OPTIONS = (
        ('SUN', 'Sunday'),
        ('MON', 'Monday'),
        ('TUES', 'Tuesday'),
        ('WED', 'Wednesday'),
        ('THURS', 'Thursday'),
        ('FRI', 'Friday'),
        ('SAT', 'Saturday')
    )

    # constructor:
    storeNumber = StringField(max_length=50, required=True)
    fkCustomer = ReferenceField('Customer', required=True, dbref=False)
    address = EmbeddedDocumentField(Address, required=True)
    phoneNumber = StringField(max_length=20, required=True)
    region = StringField(max_length=50, required=True)

    division = StringField(max_length=50, required=True)
    awardedVendor = StringField(max_length=50, required=True, default='PR Skate')

    overnightCrew = StringField(max_length=25)  # choices: Full Time or Part Time

    overnightAccess = ListField(StringField(max_length=5), choices=(
        ('SUN', 'Sunday'),
        ('MON', 'Monday'),
        ('TUES', 'Tuesday'),
        ('WED', 'Wednesday'),
        ('THURS', 'Thursday'),
        ('FRI', 'Friday'),
        ('SAT', 'Saturday')
    ))
    noiseOrdinance = BooleanField(default=False)
    timeCutOff = StringField()

    fkRegionCode = ReferenceField('RegionCode', dbref=False)
    fkMicroRegionCode = ReferenceField('MicroRegionCode', dbref=False)
    coordinates = EmbeddedDocumentField(Coordinates)
    active = BooleanField(default=False)
    installationDueDates = ListField(DateField())  # Uploaded able
    inspectionDueDates = ListField(DateField())  # Uploaded able MAYBE NEW TABLES
    fiscalWeek = IntField(min_value=1, max_value=53)

    storeManagerName = EmbeddedDocumentField(Name)
    storeManagerEmail = EmailField()

    opsManagerName = EmbeddedDocumentField(Name)
    opsManagerEmail = EmailField()
    managerName = EmbeddedDocumentField(Name)
    managerEmail = EmailField()
    overnightManagerName = EmbeddedDocumentField(Name)
    overnightManagerEmail = EmailField()

    meta = {'collection': 'Store'}

    def __str__(self):
        return f'{self.storeNumber} - {self.address.city} - {self.address.state}'
Example #12
0
class SalesContactBoardservice(Document):
    __tablename__ = 'sales_contact_boardservice'
    contact = ReferenceField(SalesContact)
    entity = StringField()
    start = DateField()
    end = DateField()

    def __str__(self):
        return """{}-{} from {} to {}""".format(self.contact.name, self.entity,
                                                self.start, self.end)
Example #13
0
class Base(gj.Document):
    meta = {'abstract': True}
    creation_date = DateField()
    modified_date = DateField(default=pst_now)

    def save(self, *args, **kwargs):
        if not self.creation_date:
            self.creation_date = pst_now
        self.modified_date = pst_now
        return super(Base, self).save(*args, **kwargs)
Example #14
0
class Event(Document):
    client_id = StringField(required=True)
    type = StringField(required=True)
    coordinate = StringField(
        required=True)  # only show to the accepted business
    about = StringField(required=True)
    payment = StringField(required=True)
    start_date = DateField(required=True)
    end_date = DateField(required=True)
    created_at = DateField(
        default=datetime.strftime(datetime.today(), "%a %d-%m-%Y %H:%M:%S"))
    updated_at = DateField(required=False)
Example #15
0
class Business(Document):
    name = StringField(required=True)
    email = StringField(required=True)
    mobile = StringField(required=True, max_length=12)
    business_type = StringField(required=True)
    about = StringField(required=True, max_length=125)
    portfolio_website = StringField(required=False)
    fb_fan_page = StringField(required=False)
    ig_fan_page = StringField(required=False)
    created_at = DateField(
        default=datetime.strftime(datetime.today(), "%a %d-%m-%Y %H:%M:%S"))
    updated_at = DateField(required=False)
    approved = BooleanField(required=True, default=False)
Example #16
0
class User(Document):
    username = StringField(max_length=50, required=True, unique=True)
    email = EmailField(required=True, unique=True)
    birth_date = DateField(max_length=50, default="1970-1-1")
    password = StringField(max_length=50, required=True)

    last_record_time = DateField(max_length=50)

    @staticmethod
    def insert_user(email, username, birth_date, password):
        u = User(email=email,
                 username=username,
                 birth_date=birth_date,
                 password=password).save()
        return u

    @staticmethod
    def delete_user(username):
        users = User.objects(username=username)
        for user in users:
            user.delete()

    @staticmethod
    def update_user(username, kwargs: Dict):
        """update user with specifying username"""
        users = User.objects(username=username)
        for user in users:
            for k in kwargs:
                if k in user:
                    print(f"updating fields: {k}")
                    user[k] = kwargs[k]
            user.save()

    @staticmethod
    def query_user_by_name(username):
        user = User.objects(username=username).first()
        return user

    @staticmethod
    def query_users_by_id(user_id):
        user = User.objects(id=user_id).first()
        return user

    @property
    def user_id(self):
        return str(self.id)

    def __str__(self):
        return f"<{self.__class__.__name__}, id:{self.user_id} email: {self.email}, username: {self.username}, birth_date: {self.birth_date}, password: {self.password}>"
Example #17
0
class ProjectDeliveryRating(Document):
    __tablename__ = 'project_rating'
    delivery = ReferenceField(ProjectDelivery, required=True)
    timestamp = DateField()
    rating = FloatField(min_value=0, max_value=100)
    analyst = ReferenceField(Employee, required=True)
    note = StringField(max_length=500)
Example #18
0
class SalesContact(Document):
    __tablename__ = 'sales_contact'
    name = StringField()
    dob = DateField()
    gender = StringField()
    educational_level = StringField()
    phone_office = StringField()
    phone_mobile = StringField()
    email = StringField()
    facebook = StringField()
    linkedin = StringField()
    company = ReferenceField(SalesTargetCompany)
    title = StringField()
    address = StringField()
    city = StringField()
    state = StringField()
    country = StringField()
    zip_code = StringField()

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return self.name

    def __str__(self):
        return self.name
Example #19
0
class AppointmentClient(Document):
    __tablename__ = 'appointment_client'
    name = StringField(required=True)
    dob = DateField()
    gender = ReferenceField(Gender)
    address1 = StringField()
    address2 = StringField()
    city = StringField()
    state = StringField()
    country = StringField()
    phone_number_mobile = StringField()
    phone_number_office = StringField()
    phone_number_home = StringField()
    twitter = StringField()
    facebook = StringField()
    instagram = StringField()
    email = StringField(required=True)

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return self.name

    def __str__(self):
        return self.name
Example #20
0
class ElectionEventAttendees(Document):
    __tablename__ = 'election_event_attendees'
    event = StringField()
    name = StringField(required=True)
    gender = StringField()
    dob = DateField()

    city_of_residence = StringField()
    role = StringField()

    job = StringField()
    twitter = StringField()
    instagram = StringField()
    facebook = StringField()
    email = StringField()
    phone_number = StringField()
    interests = StringField(max_length=400)
    concerns = StringField(max_length=400)
    most_interesting_topics_today = StringField(max_length=200)
    voting_for = StringField()

    want_to_volunteer = StringField()
    event_discovery = StringField()
    rate_event = StringField()

    #events_attended = IntField()

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return self.name

    def __str__(self):
        return """{} attended {}""".format(self.name, self.event)
Example #21
0
class User(Document):
    DELIVERY_TYPE = "DELIVERY"
    CUSTOMER_TYPE = "CUSTOMER"
    BACK_OFFICE_TYPE = "BACK_OFFICE"

    FLAT_SUBSCRIPTION = "FLAT"
    PREMIUM_SUBSCRIPTION = "PREMIUM"

    name = StringField(required=False)
    last_name = StringField(required=False)
    google_id = StringField(required=False)
    password = StringField(required=False)
    email = EmailField(required=True, unique=True)
    profile_image = StringField(required=False)
    phone = StringField(required=False)
    type = StringField(required=False, regex="CUSTOMER|DELIVERY|BACK_OFFICE")
    subscription = StringField(required=False,
                               regex="FLAT|PREMIUM",
                               default="FLAT")
    recovery_token = StringField(required=False)
    recovery_token_date = DateTimeField(required=False)
    reputation = FloatField(default=1)
    fcmToken = StringField(required=False)
    messages_sent = IntField(default=0)
    created = DateField(default=datetime.now().date())
    balance = FloatField(default=0)
    location = EmbeddedDocumentField(Coordinates)
    available = BooleanField(default=True)
    deliveries_completed = IntField(default=0)
    gratitude_points = IntField(default=0)
Example #22
0
class ConfigRecord(Document):
    date = DateField(default=datetime.now())
    data = StringField()
    dev_name = StringField()
    node_eve_id = StringField()
    node_type = StringField()
    lab_name = StringField()
Example #23
0
class Patients(Document):
    meta = {"collection": "pacientes"}

    folio = IntField(primary_key=True, db_field="folio")
    name = StringField(required=True, db_field="nombre")
    age = IntField(required=True, db_field="edad")
    birth_date = DateField(required=True, db_field="fecha_nacimiento")
    sex = StringField(required=True, db_field="sexo")
    blood_type = StringField(required=True, db_field="tipo_sangre")
    emergency_contact_name = StringField(required=True,
                                         db_field="nombre_contacto_emergencia")
    emergency_contact_num = StringField(required=True,
                                        db_field="tel_contacto_emergencia")
    medical_dx = StringField(required=True, db_field="dx_medico")
    companion = BooleanField(required=True, db_field="acompañante")
    shelter = BooleanField(required=True, db_field="shelter")
    quimio = BooleanField(required=True, db_field="quimio")
    form_history = EmbeddedDocumentListField(FormHistory,
                                             required=False,
                                             db_field="versiones_formulario")

    def __str__(self):
        return f"Patient({self.name + ' ' + self.paternal_last_name})"

    def __repr__(self):
        return self.__str__()
Example #24
0
class User(Document):
    gfname = StringField()
    glname = StringField()
    email = EmailField()
    aeriesid = IntField()
    gid = StringField(unique=True)
    # App Admin, Student
    role = StringField()
    issenior = BooleanField(default=False)
    admin = BooleanField(default=False)
    pronouns = StringField()
    fname = StringField()
    lname = StringField()
    image = FileField()
    birthdate = DateField()
    personalemail = EmailField()
    mobile = StringField()
    address = StringField()
    city = StringField()
    state = StringField()
    zipcode = IntField()
    socmedia = StringField()
    nextyr = StringField()
    invitelist = ListField()
    meta = {'ordering': ['+glname', '+gfname']}
Example #25
0
class User(EmbeddedDocument):
    name = StringField(max_length=40,min_length=5)
    email = EmailField()
    createdAt = DateField()
    token = DictField()
    password = StringField(max_length=64)
    meta = {'collection': 'users'}
Example #26
0
class BusinessPatron(Document):
    __tablename__ = 'business_patron'
    name = StringField()
    dob = DateField()
    gender = ReferenceField(Gender)
    address1 = StringField()
    address2 = StringField()
    city = StringField()
    state = StringField()
    country = StringField()
    phone_number_mobile = StringField()
    phone_number_office = StringField()
    phone_number_home = StringField()
    twitter = StringField()
    facebook = StringField()
    instagram = StringField()
    email = StringField()

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return self.name

    def __str__(self):
        return self.name
Example #27
0
class BCCPerson(Document):
    __tablename__ = 'bcc_person'
    name = StringField(required=True)
    member_number = StringField(required=True, unique=True)
    gender = ReferenceField(Gender)
    dob = DateField()
    highest_ed = ReferenceField(EducationLevel)
    job_title = StringField()
    place_of_employment = StringField()
    referrer = StringField()
    phone_no = StringField(max_length=10)
    email = StringField(max_length=30)
    address_1 = StringField(required=True)
    address_2 = StringField()
    city = StringField(required=True)
    state = StringField()
    parish = StringField()
    country = StringField(required=True, default='Barbados')
    postal_code = StringField()

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return self.name

    def __str__(self):
        return """{}-{} """.format(self.name, self.member_number)
Example #28
0
class ScopeOfWork(BaseRecord):
    GB_Counter = IntField(default=0, min_value=0)
    GB_CounterBillable = IntField(default=0, min_value=0)
    SOWPicturePath = ImageField(required=True)
    wrongLocation = BooleanField(default=False)
    ConcretePatchNeeded = BooleanField(default=False)
    fkRightSOWID = ReferenceField('self', default=None,
                                  dbref=False)  # pop-up to fill out blank form
    fkStatusID = ReferenceField(ScopeOfWorkStatus, required=True, dbref=False)
    materialsOrderByInspector = StringField()  # multiline
    completedPicturePath = ImageField(default=None)
    dateFieldEditedStatus = DateField(default=None)
    timeFieldEditedStatus = DateTimeField(default=None)
    approvedBilling = BooleanField(default=False)
    fkInstallerID = ReferenceField(Employee, default=None, dbref=False)
    fkRequireMaterials = ReferenceField(
        OrderMaterial, default=None,
        dbref=False)  # should also update the material list in store location
    fkLocationInStoreID = ReferenceField(LocationInStore,
                                         default=None,
                                         dbref=False)
    fkLocationInStoreChangedID = ReferenceField(LocationInStore,
                                                default=None,
                                                dbref=False)
    fkWorkOrderID = ReferenceField(WorkOrder, required=True, dbref=False)
    fkInitialLaborID = ReferenceField(LaborItem, required=True, dbref=False)
    fkExtraLaborID = ReferenceField(LaborItem, default=None, dbref=False)
    fkCorrectLaborID = ReferenceField(LaborItem, default=None, dbref=False)
    meta = {'collection': 'ScopeOfWork'}

    def __str__(self):
        return f'{self.fkInitialLaborID.description} x {self.fkInitialLaborID.quantity} {self.fkStatusID}'
Example #29
0
class User(Document):
    # Values copied from the Google Account or input by code. I recommend NOT editing the values in these fields
    # because you can't edit them in their origins. Instead, I created copies of the fields that I want to give
    # the user the ability to edit.
    # First four fields are the user's first name, last name, email and Google ID # that are copied from Google in the User.py routes file.
    gfname = StringField()
    glname = StringField()
    # Mongoengine has several field types like email field that enable you to varify that what the user put in is actually
    # that type of data like EmailField() below.
    email = EmailField()
    # unique is a parameter that is possible on all fields. it is false by default. If you want to make sure that each
    # vlaue in a field is unique that you need to set this to True. In this case gid is the users googleID and no two
    # users can have the same gid.
    gid = StringField(unique=True)
    # The role value is enterred by the code in the user.py routes based on if the user's email as an 's_' at the beginning.
    # The roles are "teacher" or "Student"
    role = StringField()
    # In the users.py file there is a python list of email addresses of people designated to be "admins" of this app.
    # so that user has some special privleges.
    admin = BooleanField()
    # The following values are all set in the users.py file.  these fields can all be edited by the user in the edit profile function.
    pronouns = StringField()
    fname = StringField()
    lname = StringField()
    # URLField() holds a URL or a link to a webpage
    image = URLField()
    # DateField() holds just a date.  There is also a DateTimeField()
    birthdate = DateField()
    # This is how you set the default sorting.  You can also sort records after you retreive them in the route.
    meta = {'ordering': ['+lname', '+fname']}
Example #30
0
class Transaction(DocumentValidation):
    coin_token = StringField(required=True,
                             choices=get_coin_tokens(s.SYMBOLS_PER_EXCHANGE))
    units = DecimalField(required=True,
                         min_value=0,
                         precision=s.SYMBOL_FLOAT_PRECISION)
    amount = DecimalField(required=True,
                          min_value=0,
                          precision=s.SYMBOL_FLOAT_PRECISION)
    unit_price = DecimalField(required=True,
                              min_value=0,
                              precision=s.SYMBOL_FLOAT_PRECISION)
    user = ReferenceField(User, required=True)
    added_on = DateField(required=True)
    in_or_out = StringField(required=True, choices=(
        "in",
        "out",
    ))

    meta = {
        "collection": "transaction",
        "ordering": ["-added_on"],
    }

    _pre_save_hooks = (_calculate_unit_price, )