示例#1
0
class UserData(grumble.Model):
    _flat = True
    _audit = False
    cookie = grumble.TextProperty(is_key = True)
    last_access = grumble.DateTimeProperty(auto_now = True)
    userid = grumble.TextProperty()
    access_token = grumble.TextProperty()
    valid_until = grumble.DateTimeProperty()
示例#2
0
class HttpAccess(grumble.Model):
    _flat = True
    _audit = False
    timestamp = grumble.DateTimeProperty(auto_now_add=True)
    remote_addr = grumble.TextProperty()
    user = grumble.TextProperty()
    path = grumble.TextProperty()
    method = grumble.TextProperty()
    status = grumble.TextProperty()
    elapsed = grumble.IntegerProperty()
示例#3
0
class MedicationHistory(grumble.Model):
    timestamp = grumble.DateProperty(auto_now_add=True)
    current = grumble.BooleanProperty()
    medication = grumble.ReferenceProperty(Medication)
    dose = grumble.TextProperty()
    units = grumble.TextProperty("mg", "tablets", "g", "Other")
    frequency = grumble.TextProperty(choices=[
        "Daily", "Twice a day", "Three times a day", "Four times a day",
        "Other"
    ])
    experiences = grumble.TextProperty(multiline=True)
示例#4
0
class PasswordReset(grumble.Model):
    userid = grumble.TextProperty()
    password = grumble.TextProperty()

    user_doesnt_exists = grudge.Status()
    password_generated = grudge.Status()
    mail_sent = grudge.Status()
    confirmed = grudge.Status()
    password_reset = grudge.Status()

    def generate_password(self):
        try:
            logger.debug("PasswordReset::generate_password")
            um = grit.Session.get_usermanager()
            user = um.get(self.userid)
            if user is None or not user.exists():
                logger.debug("User %s does not exist", self.userid)
                return self.user_doesnt_exist
            logger.debug("User OK")
            self.password = um.gen_password()
            self.put()
            return self.password_generated
        except gripe.auth.UserExists:
            return self.user_exists
        except gripe.Error as e:
            logger.debug("Create user Error: %s" % e)
            raise

    def prepare_message(self, msg, ctx):
        msg.set_header(
            "X-ST-URL", "%s/um/confirmreset/%s" %
            (Config.app.config.application_url, self.id()))
        return ctx

    def reset_password(self):
        um = grit.Session.get_usermanager()
        try:
            user = um.get(self.userid)
            if user is None:
                logger.debug("User %s does not exist", self.userid)
                return self.user_doesnt_exist
            user.password = self.password
            user.put()
            logger.debug("Password successfully reset")
            self.password = None
            self.put()
            return self.password_reset
        except gripe.Error as e:
            logger.debug("Password Reset Error: %s" % e)
            raise
示例#5
0
class UserCreate(grumble.Model):
    userid = grumble.TextProperty()
    display_name = grumble.TextProperty()
    password = grumble.TextProperty()
    confirm = grumble.BooleanProperty()

    user_exists = grudge.Status()
    user_created = grudge.Status()
    mail_sent = grudge.Status()
    confirmed = grudge.Status()
    user_activated = grudge.Status()

    def create_user(self):
        try:
            um = grit.Session.get_usermanager()
            if not self.password:
                self.password = gripe.auth.generate_password()
            um.add(self.userid,
                   password=self.password,
                   display_name=self.display_name)
            self.put()
            logger.debug("Create User OK")
            return self.user_created if not self.confirm else self.confirmed
        except gripe.auth.UserExists:
            return self.user_exists
        except gripe.Error as e:
            logger.debug("Create user Error: %s" % e)
            raise

    def prepare_message(self, msg, ctx):
        msg.set_header(
            "X-ST-URL", "%s/um/confirmreset/%s" %
            (Config.app.config.application_url, self.id()))
        return ctx

    def activate_user(self):
        um = grit.Session.get_usermanager()
        try:
            user = um.get(self.userid)
            if user:
                user.confirm()
                logger.debug("Activate User OK")
                return self.user_activated
            else:
                raise gripe.auth.UserDoesntExists(self.userid)
        except gripe.Error as e:
            logger.debug("Activate user Error: %s" % e)
            raise
示例#6
0
class Person(grumble.Model):
    name = grumble.TextProperty(required=True,
                                is_label=True,
                                is_key=True,
                                scoped=True)
    age = grumble.IntegerProperty(default=30, validator=check_age)
    can_drive = CanDriveProperty()
示例#7
0
    class Step2(grumble.Model):
        sendmail = grudge.Status()
        stopme = grudge.Status()
        recipients = grumble.TextProperty()

        def set_recipients(self):
            self.recipients = "*****@*****.**"
            self.put()
            return self.sendmail
示例#8
0
class UserSignup(grumble.Model):
    userid = grumble.TextProperty()
    password = grumble.PasswordProperty()
    display_name = grumble.TextProperty()

    user_exists = grudge.Status()
    user_created = grudge.Status()
    mail_sent = grudge.Status()
    confirmed = grudge.Status()
    user_activated = grudge.Status()

    def create_user(self):
        try:
            um = grit.Session.get_usermanager()
            um.add(self.userid, **{
                "password": self.password,
                "label": self.display_name
            })
            logger.debug("Create User OK")
            return self.user_created
        except gripe.auth.UserExists:
            return self.user_exists
        except gripe.Error as e:
            logger.debug("Create user Error: %s" % e)
            raise

    def prepare_message(self, msg, ctx):
        msg.set_header("X-ST-URL",
                       "http://localhost/um/confirm/%s" % self.id())
        return ctx

    def activate_user(self):
        um = grit.Session.get_usermanager()
        try:
            user = um.get(self.userid)
            if user:
                user.confirm()
                logger.debug("Activate User OK")
                return self.user_activated
            else:
                raise gripe.auth.UserDoesntExists(self.userid)
        except gripe.Error as e:
            logger.debug("Activate user Error: %s" % e)
            raise
示例#9
0
class MedicationRequest(grumble.Model):
    medication = grumble.TextProperty(is_label=True)
    manufacturer = grumble.TextProperty()
    remarks = grumble.TextProperty()

    medication_exists = grudge.Status()
    medication_created = grudge.Status()
    confirmed = grudge.Status()
    user_activated = grudge.Status()

    def create_user(self):
        try:
            um = grit.Session.get_usermanager()
            um.add(self.userid, self.password, self.display_name)
            logger.debug("Create User OK")
            return self.user_created
        except gripe.auth.UserExists as e:
            return self.user_exists
        except gripe.Error as e:
            logger.debug("Create user Error: %s" % e)
            raise

    def prepare_message(self, msg, ctx):
        msg.set_header("X-ST-URL",
                       "http://localhost/um/confirm/%s" % self.id())
        return ctx

    def activate_user(self):
        um = grit.Session.get_usermanager()
        try:
            um.confirm(self.userid)
            logger.debug("Activate User OK")
            return self.user_activated
        except gripe.Error as e:
            logger.debug("Activate user Error: %s" % e)
            raise
示例#10
0
class UploadActivity(grumble.Model):
    uploadedFile = grumble.ReferenceProperty(grit.upload.UploadedFile)
    athlete = grumble.ReferenceProperty(grizzle.User)
    filename = grumble.property.StringProperty()
    converted = grumble.BooleanProperty(default=False)
    error = grumble.TextProperty()

    done = grudge.Status()

    def check(self):
        logger.debug("UploadActivity(%s).check", self.filename)
        uploaded = self.uploadedFile
        user = uploaded.get_user()
        if not user.has_role("athlete"):
            logger.debug(
                "UploadActivity(%s).check: User %s cannot upload activities because they don't have the 'athlete' role",
                self.filename, user.uid())
            self.error = "User %s cannot upload activities because they don't not have the 'athlete' role" % user.uid(
            )
            self.put()
            return False
        q = UploadActivity.query('"filename" =', uploaded.filename,
                                 '"athlete" =', user, '"converted" = ', True)
        already_uploaded = q.get()
        if already_uploaded:
            logger.debug(
                "UploadActivity(%s).check: User '%s' already uploaded file",
                self.filename, user.uid())
            self.error = "User '%s' already uploaded file '%s'" % (
                user.uid(), uploaded.filename)
            self.put()
            return False
        self.filename = uploaded.filename
        self.athlete = user
        self.put()
        logger.debug("UploadActivity(%s).check OK", self.filename)
        return True

    def import_file(self):
        logger.debug("UploadActivity(%s).import_file", self.filename)
        uploaded = self.uploadedFile
        try:
            parser = sweattrails.device.get_parser(uploaded.filename)
            parser.set_athlete(self.athlete)
            parser.parse(uploaded.content.adapted)
            logger.debug("UploadActivity(%s).import_file: file parsed",
                         self.filename)
            self.converted = True
        except exceptions.Exception as e:
            logger.exception("Exception parsing file %s", self.filename)
            self.error = traceback.format_exc()
        self.put()

    def cleanup(self):
        logger.debug("UploadActivity(%s).cleanup", self.filename)
        grumble.model.delete(self.uploadedFile)
        self.uploadedFile = None
        self.put()

    def invoke(self):
        logger.debug("UploadActivity(%s).invoke", self.filename)
        if self.check():
            self.import_file()
        self.cleanup()
示例#11
0
class Medication(grumble.Model):
    medication = grumble.TextProperty(is_key=True, is_label=True)
    manufacturer = grumble.ReferenceProperty(Manufacturer)
    description = grumble.TextProperty()
    adverse_effects = grumble.TextProperty()
示例#12
0
class Manufacturer(grumble.Model):
    name = grumble.TextProperty(is_key=True, is_label=True)
    country = grumble.ReferenceProperty(sweattrails.config.Country)
    notes = grumble.TextProperty(multiline=True)
示例#13
0
class AddedStatus(grumble.Model):
    status = grumble.TextProperty()
示例#14
0
 class SelfRefTest(grumble.Model):
     self_ref_name = grumble.TextProperty(key=True, required=True)
     ref = grumble.SelfReferenceProperty(collection_name="loves")
示例#15
0
 class Pet(grumble.Model):
     name = grumble.TextProperty(required=True, is_key=True)
     owner = grumble.ReferenceProperty(Person)
示例#16
0
 class Test3(grumble.Model):
     name = grumble.TextProperty(required=True, is_label=True)
     value = grumble.IntegerProperty(default=12)