示例#1
0
class Orders(db.Document):
    # contact info
    order_number    = db.IntField()
    name            = db.StringField(maxlength=255)
    phone_number    = db.StringField(maxlength=10)

    # cake info
    cake_info       = db.ListField()
    cake_size       = db.StringField(maxlength=255)
    price           = db.IntField()
    flavor_1        = db.StringField(maxlength=255)
    flavor_2        = db.StringField(maxlength=255)
    filling         = db.StringField(maxlength=255)
    sales_category  = db.StringField(maxlength=255, default="cake")

    # delivery info
    date_time       = db.DateTimeField(default=datetime.utcnow())

    # decoration info
    decoration      = db.StringField(maxlength=255)
    print_out       = db.BooleanField(default=False)
    celebrated_name = db.StringField(maxlength=255)
    celebrated_age  = db.IntField()
    celebrated_text = db.StringField(maxlength=255)

    def __repr__(self):
        return "<MongoEngine Document: Orders :: New Cake Order>"
示例#2
0
class Command(db.EmbeddedDocument, Executable):

    NAVIGATE = "Navigate"
    CLICK = "Click"
    SENDKEYS = "SendKeys"
    VERIFY = "Verify"

    COMMANDS = (NAVIGATE, CLICK, SENDKEYS, VERIFY)

    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    command = db.StringField(required=True, choices=COMMANDS)
    element = db.ReferenceField(ElementState, required=False)
    config_key = db.StringField(required=False)

    execution_results = []

    def get_steps(self):
        return self

    execution_results = []

    def execute(self, driver, config):
        try:
            if self.config_key == None:
                self.param = ""
            else:
                if self.config_key in config.params:
                    self.param = config.params[self.config_key]
                else:
                    raise Exception(
                        "Cannot execute command %s as there was no key named %s in the config params"
                        % (self.command, self.config_key))
            self.driver = driver
            result = Result(passed=True,
                            message="Execute %s %s" %
                            (self.__repr__(), self.param))
            logging.debug("Execute : %s %s" % (self.__repr__(), self.param))
            if self.command == self.NAVIGATE:
                self.driver.get(self.param)
            elif self.command == self.CLICK:
                WebElement(self.driver, self.element.locators).click()
            elif self.command == self.SENDKEYS:
                WebElement(self.driver,
                           self.element.locators).send_keys(self.param)
            elif self.command == self.VERIFY:
                WebElement(self.driver, self.element.locators).highlight()
            else:
                raise ValueError("Command not supported: %s" % self.command)
        except Exception as e:
            logging.debug("Exception : %s" % str(e))
            result = Result(passed=False,
                            message="Command raised an exception %s" % str(e),
                            exception=str(e))
        finally:
            self.execution_results.append(result)
            return result

    def __repr__(self):
        return "Command(%s %s %s)" % (str(self.command), str(
            self.element), self.param)
示例#3
0
class Vehicle(db.Document):
    vid = db.IntField(unique=True)
    vehicle_type = db.StringField(choices=VEHICLES)
    vehicle_number = db.StringField()
    vehicle_rc_link = db.URLField()

    def __unicode__(self):
        return str(self.vehicle_type) + ": " + str(self.vehicle_number)

    def get_dict(self):
        return {
            'vid': self.vid,
            'vehicle_type': self.vehicle_type,
            'vehicle_number': self.vehicle_number,
            'vehicle_rc_link': self.vehicle_rc_link
        }

    def __repr__(self):
        return 'vehicle_type ' + str(
            self.vehicle_type) + 'vehicle_number ' + str(self.vehicle_number)

    def save(self, *args, **kwargs):
        if self.vid == None:
            try:
                self.vid = self.__class__.objects.order_by('-vid')[0].vid + 1
            except IndexError:
                self.vid = Vehicle.objects.count() + 1
        super(Vehicle, self).save(*args, **kwargs)
示例#4
0
class Result(db.EmbeddedDocument):
    total_indents = 0

    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    passed = db.BooleanField(required=True)
    message = db.StringField(required=True)
    exception = db.StringField(max_length=255, required=False)
    step_results = db.ListField(db.EmbeddedDocumentField('self'))
    failed_state = db.ReferenceField('State', required=False)
    actual_state = db.ReferenceField('State', required=False)
    html = db.StringField(required=False)
    screenshot = db.StringField(required=False)

    def __str__(self):
        Result.total_indents += 1
        message = "Executable Passed=%s %s \r\n" % (self.passed, self.message)
        for result in self.step_results:
            for indent in range(0, Result.total_indents):
                message += " "
            message += str(result)
        Result.total_indents -= 1
        return message

    def __repr__(self):
        return "Result(%s,%s)" % (self.passed, self.message)
示例#5
0
class Coupon(db.Document):
    coupon_id = db.IntField(unique=True)
    coupon_code = db.StringField(max_length=30, unique=True)
    amount = db.StringField(max_length=100)
    is_valid = db.BooleanField()
    QR_CODE_DATA = db.StringField(max_length=200)
    created_on = db.DateTimeField()
    modified_on = db.DateTimeField()

    def __unicode__(self):
        return str(self.coupon_id)

    def get_dict(self):
        return {
            'coupon_id': self.coupon_id,
            'coupon_code': self.coupon_code,
            'amount': self.amount,
            'is_valid': self.is_valid,
            'QR_CODE_DATA': self.QR_CODE_DATA
        }

    def __repr__(self):
        return 'coupon_code ' + str(self.coupon_code)

    def save(self, *args, **kwargs):
        if self.coupon_id == None:
            try:
                self.coupon_id = self.__class__.objects.order_by(
                    '-coupon_id')[0].coupon_id + 1
            except IndexError:
                self.coupon_id = Coupon.objects.count() + 1
        if not self.created_on:
            self.created_on = datetime.now()
        self.modified_on = datetime.now()
        super(Coupon, self).save(*args, **kwargs)
示例#6
0
class Role(db.Document, RoleMixin):
    name = db.StringField(max_length=80, unique=True)
    description = db.StringField(max_length=255)

    def __unicode__(self):
        return self.name

    def __repr__(self):
        return self.name
示例#7
0
class TTY(db.Document):
    template = db.StringField(required=True)
    username = db.StringField(required=True)
    uri = db.DictField(required=True)
    readme = db.StringField(required=True)
    created = db.DateTimeField(default=datetime.now)
    destroyed = db.DateTimeField()
    ttl = db.IntField(default=604800)  #7 days
    active = db.BooleanField(default=True)
    dry_run = db.BooleanField(default=False)
示例#8
0
class Ingredient(db.Document):
    ingredient = db.StringField(maxlength=225)
    recipe_quantity = db.StringField(maxlength=225)
    apc_unit = db.DecimalField(precision=2)
    yield_ratio = db.DecimalField(precision=2)
    epc_unit = db.DecimalField(precision=2)
    total_cost = db.DecimalField(precision=2)

    def __repr__(self):
        return "<MongoEngine Document: Ingredient>"
示例#9
0
class Post(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    title = db.StringField(max_length=255, required=True)
    body = db.StringField(required=True)
    comments = db.ListField(db.EmbeddedDocumentField('Comment'))

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at'],
        'ordering': ['-created_at']
    }
示例#10
0
class User(db.Document, UserMixin):
    email = db.StringField(max_length=255)
    password = db.StringField(max_length=500)
    active = db.BooleanField(default=True)
    confirmed_at = db.DateTimeField()
    roles = db.ListField(db.ReferenceField(Role), default=[])

    def save(self, *args, **kwargs):
        self.password = encrypt_password(self.password)
        self.confirmed_at = datetime.now()

        super(User, self).save(*args, **kwargs)
示例#11
0
class ParkingLot(db.Document):
    pid = db.IntField(unique=True)
    parking_lot_name = db.StringField(max_length=100)
    cost = db.ReferenceField(Cost, dbref=False)
    two_wheeler_capacity = db.IntField()
    four_wheeler_capacity = db.IntField()
    heavy_vehicle_capacity = db.IntField()
    current_two_wheeler = db.IntField(default=0)
    current_four_wheeler = db.IntField(default=0)
    current_heavy_vehicle = db.IntField(default=0)
    transactions = db.ListField(
        db.ReferenceField(Transaction,
                          dbref=False,
                          reverse_delete_rule=NULLIFY))

    def __str__(self):
        return "Parking: {} two_wheeler :{}, four_wheeler: {}, heavy_vehicle: {}".format(
            self.parking_lot_name, self.cost.two_wheeler,
            self.cost.four_wheeler, self.cost.heavy_vehicle)

    def get_dict(self):
        return {
            'pid': self.pid,
            'parking_lot_name': self.parking_lot_name,
            'transactions': self.transactions
        }

    def save(self, *args, **kwargs):
        if self.pid == None:
            try:
                self.pid = self.__class__.objects.order_by('-pid')[0].pid + 1
            except IndexError:
                self.pid = ParkingLot.objects.count() + 1
        super(ParkingLot, self).save(*args, **kwargs)
示例#12
0
class Action(db.Document, Executable):

    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    name = db.StringField(required=True)
    start_state = db.ReferenceField("State", required=True)
    end_state = db.ReferenceField("State", required=True)
    steps = db.ListField(db.EmbeddedDocumentField(Command), required=False)
    execution_results = []

    def execute(self, driver, config):
        logging.debug("Executing Action %s" % self.name)
        # if not self.start_state.is_state_present(driver):
        #     result =Result(step_results=self.execution_results,passed=False,message="State %s not present" % self.start_state)
        #     result.failed_state = self.start_state
        #     result.actual_state = self.start_state.get_current_state(driver)
        #     result.actual_state.save()
        #     result.html = driver.html
        #     result.screenshot = driver.get_screenshot_as_base64()
        #     return result
        result = Executable.execute(self, driver, config)
        if not result.passed:
            result.failed_state = self.start_state
            result.actual_state = self.start_state.get_current_state(driver)
            result.actual_state.save()
            result.html = driver.html
            result.screenshot = driver.get_screenshot_as_base64()
        return result
示例#13
0
class Visibility(db.Document):
    query_class = VisibilityQuery
    name = db.StringField()

    def isPublic(self):
        return self.name == 'Public'

    def __repr__(self):
        return self.name
示例#14
0
class Locator(db.EmbeddedDocument):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    by = db.StringField(required=True)
    value = db.StringField(required=True)

    def __repr__(self):
        return self.__str__()

    def __str__(self):
        return "(%s, %s)" % (self.by, self.value)

    def __eq__(self, other):
        if other is None:
            return False
        if self.by == other.by and self.value == other.value:
            return True
        else:
            return False
示例#15
0
class Page(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    url = db.StringField(max_length=255, required=False)
    default_state = db.ReferenceField(State, required=True)
    states = db.ListField(db.ReferenceField(State))

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at'],
        'ordering': ['-created_at']
    }
示例#16
0
class SuiteRun(db.Document, Executable):

    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    name = db.StringField(max_length=255, required=False)
    suite = db.ReferenceField(Suite, required=True)
    config = db.ReferenceField(SuiteConfig, required=True)
    start_after = db.DateTimeField(default=datetime.datetime.now, required=True)
    started_time = db.DateTimeField(default=datetime.datetime.now, required=True)
    ended_time = db.DateTimeField(default=datetime.datetime.now, required=True)
    status = db.StringField(max_length=25,required=True, choices=Status.ALL_STATUS)
    message = db.StringField(max_length=255,required=True)
    user = db.StringField(max_length=255, required=True)
    suite_results = db.ListField(db.EmbeddedDocumentField(Result), required=False)

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at'],
        'ordering': ['-created_at']
    }

    def execute(self, driver):
        logging.debug("Executing Suite %s" % self.name)
        self.driver = driver
        suite_result = Result(passed=True,message="Passed",exception="Passed")

        for test in self.tests:
            test_result = test.execute(driver)
            suite_result.step_results.append(test_result)
            if not test_result.passed:
                suite_result.passed = False
                suite_result.message = str(self.__class__)
                suite_result.exception = test_result.exception
                suite_result.failed_state = test_result.failed_state
                suite_result.actual_state = test_result.actual_state
                suite_result.html = self.driver.page_source
                suite_result.screenshot = self.driver.get_screenshot_as_base64()

        self.suite_results.append(suite_result)
        self.cascade_save()
        return suite_result
示例#17
0
class AssistanceEvent(db.Document):
    tag = db.StringField()
    name = db.StringField()
    venue = db.StringField()
    time = db.StringField()
    date = db.StringField()
    image = db.StringField()
示例#18
0
class ElementState(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    html = db.StringField(required=False)
    locators = db.ListField(db.EmbeddedDocumentField(Locator))
    screenshot = db.StringField(required=False)
    location = db.EmbeddedDocumentField(Location, required=False)
    type = db.StringField(required=False)

    def __unicode__(self):
        return self.locators

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at'],
        'ordering': ['-created_at']
    }

    def __str__(self):
        repr = "ElementState: "
        for locator in self.locators:
            repr += "{}, ".format(str(locator))
        return repr

    def __eq__(self, other):
        if other is None:
            return False
        for locator in self.locators:
            if locator in other.locators:
                return True
        return False

    def __ne__(self, other):
        return not self.__eq__(other)

    def set_location(self, element):
        self.location = Location(x=element.location['x'],
                                 y=element.location['y'],
                                 width=element.size['width'],
                                 height=element.size['height'])
示例#19
0
class User(db.Document):
    username = db.StringField(maxlength=255, required=True)
    password_hash = db.StringField(maxlength=255, required=True)

    def __init__(self, password=None, **data):
        if password is not None:
            data["password_hash"] = generate_password_hash(password)
        super(User, self).__init__(**data)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return str(self.id)
示例#20
0
class Cost(db.Document):
    # pid = db.ReferenceField(, dbref=False)
    parking_lot_name = db.StringField()
    two_wheeler = db.IntField()
    four_wheeler = db.IntField()
    heavy_vehicle = db.IntField()

    def __str__(self):
        return "COST FOR two_wheeler :{}, four_wheeler: {}, heavy_vehicle: {}".format(
            self.two_wheeler, self.four_wheeler, self.heavy_vehicle)

    def get_dict(self):
        return {
            'parking_lot_name': self.parking_lot_name,
            'two_wheeler': self.two_wheeler,
            'four_wheeler': self.four_wheeler,
            'heavy_vehicle': self.heavy_vehicle
        }
示例#21
0
class FoodCost(db.Document):
    category = db.StringField(maxlength=255)
    menu_item = db.StringField(maxlength=255)
    url = db.StringField(maxlength=255)
    created_on_date = db.StringField(maxlength=255)
    last_updated_on = db.StringField(maxlength=255)
    portions_size = db.StringField(maxlength=255)
    cost_per_portion = db.DecimalField(precision=2)
    sales_price = db.DecimalField(precision=2)
    food_cost_percent = db.StringField()
    recipe_quantity = db.IntField()
    total_recipe_cost = db.DecimalField(precision=2)
    total_gross_sales = db.DecimalField(precision=2)
    ingredients = db.ListField(db.DictField(db.ReferenceField(Ingredient)))

    def __repr__(self):
        return "<MongoEngine Document: FoodCost>"
示例#22
0
class Customer(db.Document):
    cid = db.IntField(unique=True)
    email = db.StringField(max_length=255, unique=True)
    password = db.StringField(max_length=500)
    first_name = db.StringField(max_length=100)
    last_name = db.StringField(max_length=100)
    contact_no = db.IntField(min_value=1000000000, max_value=9999999999)
    address = db.StringField(max_length=500)
    created_on = db.DateTimeField()
    modified_on = db.DateTimeField()
    latest_transaction_cost = db.IntField()
    driving_licence_link = db.URLField()
    QR_CODE_DATA = db.StringField(max_length=200)
    vehicles = db.ListField(
        db.ReferenceField(Vehicle, dbref=False, reverse_delete_rule=NULLIFY))
    transactions = db.ListField(
        db.ReferenceField(Transaction,
                          dbref=False,
                          reverse_delete_rule=NULLIFY))

    def __unicode__(self):
        return str(self.cid)

    def get_dict(self):
        return {
            'cid': self.cid,
            'first_name': self.first_name,
            'last_name': self.last_name,
            'contact_no': self.contact_no,
            'address': self.address,
            'latest_transaction_cost': latest_transaction_cost,
            'driving_licence_link': self.driving_licence_link
        }

    def __repr__(self):
        return 'cid ' + str(self.cid)

    def save(self, *args, **kwargs):
        if self.cid == None:
            try:
                self.cid = self.__class__.objects.order_by('-cid')[0].cid + 1
            except IndexError:
                self.cid = Customer.objects.count() + 1
        if not self.created_on:
            self.created_on = datetime.now()
        self.modified_on = datetime.now()
        self.password = hashlib.sha1(self.password).hexdigest()
        if not self.QR_CODE_DATA:
            self.QR_CODE_DATA = hashlib.sha1(
                str(self.cid) + str(self.created_on)).hexdigest()
        super(Customer, self).save(*args, **kwargs)
示例#23
0
class Test(db.Document, Executable):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    name = db.StringField(max_length=255, required=False)
    actions = db.ListField(db.ReferenceField(Action))

    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at'],
        'ordering': ['-created_at']
    }

    def execute(self, driver, config):
        logging.debug("Executing Test %s" % self.name)
        self.steps = self.actions
        suite_results = Executable.execute(self, driver, config)
        return suite_results

    def get_steps(self):
        return self.actions
示例#24
0
class CrawlerTask(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    start_after = db.DateTimeField(default=datetime.datetime.now,
                                   required=True)
    started_time = db.DateTimeField(default=datetime.datetime.now,
                                    required=True)
    ended_time = db.DateTimeField(default=datetime.datetime.now, required=True)
    status = db.StringField(max_length=25,
                            required=True,
                            choices=Status.ALL_STATUS)
    message = db.StringField(max_length=255, required=True)
    user = db.StringField(max_length=255, required=True)
    url = db.StringField(max_length=255, required=True)
    default_username = db.StringField(max_length=255, required=False)
    default_password = db.StringField(max_length=255, required=False)
示例#25
0
class Transaction(db.Document):
    cost = db.ReferenceField(Cost, dbref=False)
    pid = db.IntField()
    QR_CODE_DATA = db.StringField()
    total_cost = db.IntField()
    entry_time_stamp = db.DateTimeField()
    exit_time_stamp = db.DateTimeField()
    active = db.BooleanField(default=False)

    def __str__(self):
        return "total_cost: {}, cost: {}, entry: {}, exit: {}".format(
            self.total_cost, self.cost, self.entry_time_stamp,
            self.exit_time_stamp)

    def get_dict(self):
        return {
            'total_cost': self.total_cost,
            'entry_time_stamp': self.entry_time_stamp,
            'exit_time_stamp': self.exit_time_stamp,
            'pid': self.pid
        }
示例#26
0
class User(db.Document):
    query_class = UserQuery
    username = db.StringField()
    password = db.StringField()
    email = db.StringField()
    phone = db.StringField()
    firstName = db.StringField()
    lastName = db.StringField()

    def generate_hashed_password(self):
        self.password = generate_password_hash(self.password)

    def check_password(self, password):
        return check_password_hash(self.password, password)

    def __repr__(self):
        return self.username
示例#27
0
class Event(db.Document):
    query_class = EventQuery
    tag = db.StringField()
    name = db.StringField()
    description = db.StringField()
    venue = db.DocumentField(Venue)
    time = db.StringField()
    date = db.StringField()
    image = db.StringField()
    owner = db.DocumentField(User)
    visibility = db.DocumentField(Visibility)
    gests = db.ListField(db.StringField())
    requirement = db.ListField(db.DocumentField(Requirement))
    capacity = db.IntField()

    def hasAccess(self, user):
        log.info(
            "Verificar acceso del Usuario: {'%s'} al Evento con: {'tag':'%s'}"
            % (user, self.tag))
        return self.visibility.isPublic() or (
            user is not None
            and self.owner == user) or user.username in self.gests

    def hasAvailability(self):
        return self.availability() > 0

    def availability(self):
        log.info("Calcular la disponibilidad del Evento con: {'tag':'%s'}" %
                 self.tag)
        return self.capacity - Assistance.query.get_amount_by_event(self.tag)

    def lackRequirements(self):
        log.info(
            "Suma todos los requisitos que los usuarios se comprometieron a llevar al evento."
        )
        lack = []
        requirements = Assistance.query.get_requirements_by_event_tag(self.tag)
        keyfunc = lambda r: r.name

        for req in requirements:
            req.quantity = -req.quantity
        requirements += self.requirement
        requirements.sort(key=keyfunc)

        for name, reqs in groupby(requirements, key=keyfunc):
            lack.append(
                Requirement(name=name,
                            quantity=sum(req.quantity for req in reqs)))
        return lack

    def addGest(self, user):
        self.gests.append(user.username)

    def addGests(self, users):
        self.gests.extend(map(lambda user: user.username))

    def getAppearanceAssistance(self):
        appearance = AssistanceEvent(tag=self.tag,
                                     name=self.name,
                                     venue=self.venue.name,
                                     time=self.time,
                                     date=self.date,
                                     image=self.image)
        return appearance
示例#28
0
class Assistance(db.Document):
    query_class = AssistanceQuery
    eventTag = db.StringField()
    event = db.DocumentField(AssistanceEvent)
    user = db.StringField()
    requirements = db.ListField(db.DocumentField(Requirement))
示例#29
0
class Requirement(db.Document):
    name = db.StringField()
    quantity = db.IntField()

    def __repr__(self):
        return "{0}:{1}".format(self.name, self.quantity)
示例#30
0
class Global(db.Document):
    count           = db.IntField()
    message         = db.StringField()

    def __repr__(self):
        return "<MongoEngine Document: Global :: Order Number Counter>"