예제 #1
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def exists(email, member_id=None):
    if member_id:
        return Entity.select().where((fn.Lower(Entity.email) == email.lower()) & Entity.is_member,
                                     (Entity.id != member_id)).count() == 1
    else:
        return Entity.select().where((fn.Lower(Entity.email) == email.lower())
                                     & Entity.is_member).count() == 1
예제 #2
0
    def test_create(self):
        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   self.test_member.agreement_date)
        member = Entity.get(Entity.id == member_id)

        self.assertNotEqual(member.id, self.test_member.id)
        self.assertEqual(member.name, self.test_member.name)
        self.assertEqual(member.email, self.test_member.email)
        self.assertEqual(member.phone, self.test_member.phone)
        self.assertEqual(member.joined_date, self.test_member.joined_date)
        self.assertEqual(member.agreement_date, self.test_member.agreement_date)
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   None,
                                   self.test_member.agreement_date)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.joined_date, date.today())
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   None)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.agreement_date, date.today())
        member.delete_instance()
예제 #3
0
 def setUp(self):
     self.test_entity = Entity()
     self.test_entity.is_member = False
     self.test_entity.name = "Jane Smith"
     self.test_entity.email = "*****@*****.**"
     self.test_entity.phone = "+61 (02) 1234 5678"
     self.test_entity.is_keyholder = False
     self.test_entity.save()
예제 #4
0
 def setUp(self):
     self.test_member = Entity()
     self.test_member.is_member = True
     self.test_member.name = "Jane Smith"
     self.test_member.email = "*****@*****.**"
     self.test_member.phone = "+61 (02) 1234 5678"
     self.test_member.joined_date = date.today() - timedelta(days=1)
     self.test_member.agreement_date = date.today()
     self.test_member.is_keyholder = False
     self.test_member.save()
     self.joined_date = "2014-12-24"
     self.agreement_date = "2014-12-25"
예제 #5
0
def create(name, email, phone):
    entity = Entity()
    entity.is_member = False
    entity.name = name
    entity.email = email
    entity.phone = phone
    entity.is_keyholder = False
    entity.save()
    return entity.id
예제 #6
0
파일: routes.py 프로젝트: jamiereid/mhvdb2
def member_once_only_email():
    '''
    Finds all expired members and sends once only email asking them to renew.
    Used for first run, before we setup regular emails as people expire.
    '''
    members = Entity.select().where(Entity.is_member)
    do_not_email = app.config['DO_NOT_EMAIL']
    # flash('do_not_email= ' + ', '.join(do_not_email))
    emails_sent = 0
    for member in members:
        if member.active_member():
            None
        else:
            if member.name in do_not_email:
                flash("Not emailing: " + member.name)
            else:
                if member.reminder_date:
                    flash("Not emailing: " + member.name +
                          " reminder_date set " +
                          member.reminder_date.strftime('%m/%d/%Y'))
                else:
                    # only send this email to people who have not joined under new system (2014)
                    if member.agreement_date.year < 2014:
                        mailer.send(
                            member.email,
                            "MakeHackVoid Membership Renewal - once only reminder email",
                            render_template("emails/once_only_renewal.txt",
                                            name=member.name,
                                            email=member.email))
                        # set the reminder date in database so can test when sending another email
                        member.reminder_date = date.today()
                        member.save()
                        emails_sent += 1
    flash("Sent " + str(emails_sent) + " once only emails.")
    return redirect(url_for('.index'))
예제 #7
0
 def setUp(self):
     self.test_entity = Entity()
     self.test_entity.is_member = False
     self.test_entity.name = "Jane Smith"
     self.test_entity.email = "*****@*****.**"
     self.test_entity.phone = "+61 (02) 1234 5678"
     self.test_entity.save()
예제 #8
0
파일: routes.py 프로젝트: jamiereid/mhvdb2
def member_renewal_email():
    '''
    Finds all expired members who have been 'new style' members -
    that is they have agreement_date from 2014 onwards, and
    have not yet been sent a reminder
     - reminders_date tests will probably want to be a bit more complex
       at some stage
    Sends reminder email asking them to renew.
    '''
    members = Entity.select().where(Entity.is_member)
    do_not_email = app.config['DO_NOT_EMAIL']
    # flash('do_not_email= ' + ', '.join(do_not_email))
    emails_sent = 0
    for member in members:
        if member.active_member():
            None
        else:
            if member.name not in do_not_email:
                if member.agreement_date.year >= 2014 and not member.reminder_date:
                    mailer.send(
                        member.email,
                        "MakeHackVoid membership renewal reminder",
                        render_template("emails/renewal_reminder.txt",
                                        name=member.name,
                                        email=member.email,
                                        agreement_date=member.agreement_date))
                    # set the reminder date in database so can test when sending another email
                    member.reminder_date = date.today()
                    member.save()
                    emails_sent += 1
    flash("Sent " + str(emails_sent) + " once only emails.")
    return redirect(url_for('.index'))
예제 #9
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def authenticate_token(token):
    try:
        member = Entity.get(Entity.token == token)
        if (member.token_expiry > datetime.now()):
            return member
    except Exception:
        pass
    return None  # no such token for member, or token is expired
예제 #10
0
파일: members.py 프로젝트: cmrn/mhvdb2
def authenticate_token(token):
    try:
        member = Entity.get(Entity.token == token)
        if (member.token_expiry > datetime.now()):
            return member
    except:
        pass
    return None  # no such token for member, or token is expired
예제 #11
0
파일: members.py 프로젝트: kjnsn/mhvdb2
def create(name, email, phone):
    member = Entity()
    member.is_member = True
    member.joined_date = date.today()
    member.name = name
    member.email = email
    member.phone = phone
    member.agreement_date = date.today()

    return member.save()
예제 #12
0
파일: members.py 프로젝트: kjnsn/mhvdb2
def update(name, email, phone, member=None):
    if member is None:
        member = Entity.get(Entity.email == email)
    member.name = name
    member.email = email
    member.phone = phone
    member.agreement_date = date.today()

    return member.save()
예제 #13
0
 def test_update(self):
     new_name = "Joe Flanders"
     new_email = "*****@*****.**"
     new_phone = "(04) 9876 5432"
     entities.update(self.test_entity.id, new_name, new_email, new_phone)
     entity = Entity.get(Entity.id == self.test_entity.id)
     self.assertEqual(entity.name, new_name)
     self.assertEqual(entity.email, new_email)
     self.assertEqual(entity.phone, new_phone)
예제 #14
0
파일: members.py 프로젝트: theswitch/mhvdb2
def update(member_id, name, email, phone, joined_date=None, agreement_date=None):
    member = Entity.get((Entity.id == member_id) & Entity.is_member)
    member.name = name
    member.email = email
    member.phone = phone
    member.joined_date = joined_date
    member.agreement_date = agreement_date

    return member.save()
예제 #15
0
 def setUp(self):
     self.type = 2
     self.email = "*****@*****.**"
     self.entity = Entity.get(Entity.id == entities.create("Jane Doe", self.email, ""))
     self.amount = 1234
     self.entity = self.entity
     self.method = 0
     self.is_donation = True
     self.notes = "For services rendered"
     self.reference = "yx92s3"
예제 #16
0
파일: members.py 프로젝트: theswitch/mhvdb2
def create(name, email, phone, joined_date=None, agreement_date=None):
    if joined_date is None:
        joined_date = date.today()
    if agreement_date is None:
        agreement_date = date.today()
    member = Entity()
    member.is_member = True
    member.name = name
    member.email = email
    member.phone = phone
    member.joined_date = joined_date
    member.agreement_date = agreement_date

    member.save()

    return member.id
예제 #17
0
파일: payments.py 프로젝트: kjnsn/mhvdb2
def validate(amount, email, method, type, notes, reference):
    errors = []

    if not amount or not re.match("^[0-9]*(\.[0-9]{2}|\.[0-9]|)$", amount):
        errors.append("Sorry, you need to provide a valid amount.")
    if not re.match("[^@\s]+@[^@\s]+", email):
        errors.append("Sorry, you need to provide a valid email address.")
    else:  # Valid email, so check that they're a member
        try:
            Entity.get(Entity.email == email)
        except DoesNotExist:
            errors.append("Sorry, you need to provide a valid member's email address.")
    if not type or not type.isdigit() or int(type) > 2:
        errors.append("Sorry, you need to provide a valid payment type.")
    if not method or not method.isdigit() or int(method) > 2:
        errors.append("Sorry, you need to provide a valid payment method.")
    if not reference:
        errors.append("Sorry, you need to provide a reference.")

    return errors
예제 #18
0
    def test_create(self):
        entity_id = entities.create(self.test_entity.name,
                                    self.test_entity.email,
                                    self.test_entity.phone)
        entity = Entity.get(Entity.id == entity_id)

        self.assertNotEqual(entity.id, self.test_entity.id)
        self.assertEqual(entity.name, self.test_entity.name)
        self.assertEqual(entity.email, self.test_entity.email)
        self.assertEqual(entity.phone, self.test_entity.phone)
        entity.delete_instance()
예제 #19
0
    def test_create(self):
        entity_id = entities.create(self.test_entity.name,
                                    self.test_entity.email,
                                    self.test_entity.phone)
        entity = Entity.get(Entity.id == entity_id)

        self.assertNotEqual(entity.id, self.test_entity.id)
        self.assertEqual(entity.name, self.test_entity.name)
        self.assertEqual(entity.email, self.test_entity.email)
        self.assertEqual(entity.phone, self.test_entity.phone)
        entity.delete_instance()
예제 #20
0
 def setUp(self):
     self.test_member = Entity()
     self.test_member.is_member = True
     self.test_member.name = "Jane Smith"
     self.test_member.email = "*****@*****.**"
     self.test_member.phone = "+61 (02) 1234 5678"
     self.test_member.joined_date = date.today()-timedelta(days=1)
     self.test_member.agreement_date = date.today()
     self.test_member.save()
     self.joined_date = "2014-12-24"
     self.agreement_date = "2014-12-25"
예제 #21
0
 def test_update(self):
     new_name = "Joe Flanders"
     new_email = "*****@*****.**"
     new_phone = "(04) 9876 5432"
     entities.update(self.test_entity.id,
                     new_name,
                     new_email,
                     new_phone)
     entity = Entity.get(Entity.id == self.test_entity.id)
     self.assertEqual(entity.name, new_name)
     self.assertEqual(entity.email, new_email)
     self.assertEqual(entity.phone, new_phone)
예제 #22
0
    def test_active_member(self):

        self.assertTrue(self.test_member.active_member(),
                        'member agreement is current')
        new_agreement_date = date.today() - timedelta(days=500)
        members.update(self.test_member.id, self.test_member.name,
                       self.test_member.email, self.test_member.phone,
                       self.test_member.joined_date, new_agreement_date,
                       self.test_member.is_keyholder)
        member = Entity.get(Entity.id == self.test_member.id)
        self.assertFalse(member.active_member(),
                         'member agreement not current')
예제 #23
0
파일: payments.py 프로젝트: kjnsn/mhvdb2
def create(amount, email, method, type, notes, reference):

    # Create payment
    payment = Payment()
    payment.time = datetime.now()
    payment.entity = Entity.get(Entity.email == email)
    payment.amount = amount
    payment.source = method
    payment.is_donation = type != 0
    payment.notes = notes
    if method == 0:  # Bank transfer
        payment.bank_reference = reference
    payment.pending = True
    payment.save()
예제 #24
0
    def test_active_member(self):

        self.assertTrue(self.test_member.active_member(),
                        'member agreement is current')
        new_agreement_date = date.today()-timedelta(days=500)
        members.update(self.test_member.id,
                       self.test_member.name,
                       self.test_member.email,
                       self.test_member.phone,
                       self.test_member.joined_date,
                       new_agreement_date,
                       self.test_member.is_keyholder)
        member = Entity.get(Entity.id == self.test_member.id)
        self.assertFalse(member.active_member(), 'member agreement not current')
예제 #25
0
    def test_create(self):
        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   self.test_member.agreement_date,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)

        self.assertNotEqual(member.id, self.test_member.id)
        self.assertEqual(member.name, self.test_member.name)
        self.assertEqual(member.email, self.test_member.email)
        self.assertEqual(member.phone, self.test_member.phone)
        self.assertEqual(member.joined_date, self.test_member.joined_date)
        self.assertEqual(member.agreement_date,
                         self.test_member.agreement_date)
        self.assertEqual(member.is_keyholder, self.test_member.is_keyholder)
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone, None,
                                   self.test_member.agreement_date,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.joined_date, date.today())
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date, None,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.agreement_date, date.today())
        member.delete_instance()
예제 #26
0
파일: members.py 프로젝트: cmrn/mhvdb2
def update(member_id, name, email, phone, joined_date=None, agreement_date=None,
           is_keyholder=False):
    member = Entity.get((Entity.id == member_id) & Entity.is_member)
    member.name = name
    member.email = email
    member.phone = phone
    if joined_date is not None:
        member.joined_date = joined_date
    if agreement_date is not None:
        member.agreement_date = agreement_date
    if is_keyholder is None:
        member.is_keyholder = False
    else:
        member.is_keyholder = is_keyholder

    return member.save()
예제 #27
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def update(member_id, name, email, phone, joined_date=None, agreement_date=None,
           is_keyholder=False):
    member = Entity.get((Entity.id == member_id) & Entity.is_member)
    member.name = name
    member.email = email.lower()
    member.phone = phone
    if joined_date is not None:
        member.joined_date = joined_date
    if agreement_date is not None:
        member.agreement_date = agreement_date
    if is_keyholder is None:
        member.is_keyholder = False
    else:
        member.is_keyholder = is_keyholder

    return member.save()
예제 #28
0
 def test_update(self):
     new_name = "Joe Flanders"
     new_email = "*****@*****.**"
     new_phone = "(04) 9876 5432"
     new_joined_date = date.today() - timedelta(days=7)
     new_agreement_date = date.today() - timedelta(days=6)
     new_is_keyholder = True
     members.update(self.test_member.id, new_name, new_email, new_phone,
                    new_joined_date, new_agreement_date, new_is_keyholder)
     member = Entity.get(Entity.id == self.test_member.id)
     self.assertEqual(member.name, new_name)
     self.assertEqual(member.email, new_email)
     self.assertEqual(member.phone, new_phone)
     self.assertEqual(member.joined_date, new_joined_date)
     self.assertEqual(member.agreement_date, new_agreement_date)
     self.assertEqual(member.is_keyholder, new_is_keyholder)
예제 #29
0
 def test_update(self):
     new_name = "Joe Flanders"
     new_email = "*****@*****.**"
     new_phone = "(04) 9876 5432"
     new_joined_date = date.today()-timedelta(days=7)
     new_agreement_date = date.today()-timedelta(days=6)
     members.update(self.test_member.id,
                    new_name,
                    new_email,
                    new_phone,
                    new_joined_date,
                    new_agreement_date)
     member = Entity.get(Entity.id == self.test_member.id)
     self.assertEqual(member.name, new_name)
     self.assertEqual(member.email, new_email)
     self.assertEqual(member.phone, new_phone)
     self.assertEqual(member.joined_date, new_joined_date)
     self.assertEqual(member.agreement_date, new_agreement_date)
예제 #30
0
파일: members.py 프로젝트: cmrn/mhvdb2
def create_token(email):
    member = Entity.get((Entity.email == email) & Entity.is_member)
    member.token = __generate_token()
    member.token_expiry = datetime.now() + timedelta(hours=24)
    member.save()
    return member.token
예제 #31
0
파일: members.py 프로젝트: cmrn/mhvdb2
def get(member_id):
    try:
        return Entity.get((Entity.id == member_id) & Entity.is_member)
    except DoesNotExist:
        return None
예제 #32
0
파일: members.py 프로젝트: cmrn/mhvdb2
def exists(email, member_id=None):
    if member_id:
        return Entity.select().where((Entity.email == email) & Entity.is_member,
                                     (Entity.id != member_id)).count() == 1
    else:
        return Entity.select().where((Entity.email == email) & Entity.is_member).count() == 1
예제 #33
0
def get(entity_id):
    try:
        return Entity.get(Entity.id == entity_id)
    except DoesNotExist:
        return None
예제 #34
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def create_token(email):
    member = Entity.get((fn.Lower(Entity.email) == email.lower()) & Entity.is_member)
    member.token = __generate_token()
    member.token_expiry = datetime.now() + timedelta(hours=24)
    member.save()
    return member.token
예제 #35
0
class MembersTestCases(unittest.TestCase):
    def setUp(self):
        self.test_member = Entity()
        self.test_member.is_member = True
        self.test_member.name = "Jane Smith"
        self.test_member.email = "*****@*****.**"
        self.test_member.phone = "+61 (02) 1234 5678"
        self.test_member.joined_date = date.today()-timedelta(days=1)
        self.test_member.agreement_date = date.today()
        self.test_member.save()
        self.joined_date = "2014-12-24"
        self.agreement_date = "2014-12-25"

    def tearDown(self):
        self.test_member.delete_instance()

    def test_get(self):
        member = members.get(self.test_member.id)
        self.assertEqual(member, self.test_member)

    def test_get_bad_id(self):
        member = members.get(12345)
        self.assertIsNone(member)

    def test_validate(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date)
        self.assertEqual(len(errors), 0)

    def test_validate_name(self):
        errors = members.validate("",
                                  self.test_member.email,
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date)
        self.assertEqual(len(errors), 1)

    def test_validate_email(self):
        errors = members.validate(self.test_member.name,
                                  "",
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date)
        self.assertEqual(len(errors), 1)

        errors = members.validate(self.test_member.name,
                                  "not-an-email.com",
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date)
        self.assertEqual(len(errors), 1)

        errors = members.validate(self.test_member.name,
                                  "not-an-email@",
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date)
        self.assertEqual(len(errors), 1)

    def test_validate_phone(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  "",
                                  self.joined_date,
                                  self.agreement_date)
        self.assertEqual(len(errors), 0)

    def test_validate_joined_date(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "2014-12-25",
                                  self.agreement_date)
        print(errors)
        self.assertEqual(len(errors), 0)

        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "The 25th of December, Stardate 21020",
                                  self.agreement_date)
        self.assertEqual(len(errors), 1)

    def test_validate_agreement_date(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  self.joined_date,
                                  "2014-12-25")
        self.assertEqual(len(errors), 0)

        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "The 25th of December, Stardate 21020",
                                  self.agreement_date)
        self.assertEqual(len(errors), 1)

    def test_create(self):
        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   self.test_member.agreement_date)
        member = Entity.get(Entity.id == member_id)

        self.assertNotEqual(member.id, self.test_member.id)
        self.assertEqual(member.name, self.test_member.name)
        self.assertEqual(member.email, self.test_member.email)
        self.assertEqual(member.phone, self.test_member.phone)
        self.assertEqual(member.joined_date, self.test_member.joined_date)
        self.assertEqual(member.agreement_date, self.test_member.agreement_date)
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   None,
                                   self.test_member.agreement_date)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.joined_date, date.today())
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   None)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.agreement_date, date.today())
        member.delete_instance()

    def test_update(self):
        new_name = "Joe Flanders"
        new_email = "*****@*****.**"
        new_phone = "(04) 9876 5432"
        new_joined_date = date.today()-timedelta(days=7)
        new_agreement_date = date.today()-timedelta(days=6)
        members.update(self.test_member.id,
                       new_name,
                       new_email,
                       new_phone,
                       new_joined_date,
                       new_agreement_date)
        member = Entity.get(Entity.id == self.test_member.id)
        self.assertEqual(member.name, new_name)
        self.assertEqual(member.email, new_email)
        self.assertEqual(member.phone, new_phone)
        self.assertEqual(member.joined_date, new_joined_date)
        self.assertEqual(member.agreement_date, new_agreement_date)
예제 #36
0
class MembersTestCases(unittest.TestCase):
    def setUp(self):
        self.test_member = Entity()
        self.test_member.is_member = True
        self.test_member.name = "Jane Smith"
        self.test_member.email = "*****@*****.**"
        self.test_member.phone = "+61 (02) 1234 5678"
        self.test_member.joined_date = date.today() - timedelta(days=1)
        self.test_member.agreement_date = date.today()
        self.test_member.is_keyholder = False
        self.test_member.save()
        self.joined_date = "2014-12-24"
        self.agreement_date = "2014-12-25"

    def tearDown(self):
        self.test_member.delete_instance()

    def test_get(self):
        member = members.get(self.test_member.id)
        self.assertEqual(member, self.test_member)

    def test_get_bad_id(self):
        member = members.get(12345)
        self.assertIsNone(member)

    def test_validate(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone, self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

    def test_validate_name(self):
        errors = members.validate("", self.test_member.email,
                                  self.test_member.phone, self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_validate_email(self):
        errors = members.validate(self.test_member.name, "",
                                  self.test_member.phone, self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

        errors = members.validate(self.test_member.name, "not-an-email.com",
                                  self.test_member.phone, self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

        errors = members.validate(self.test_member.name, "not-an-email@",
                                  self.test_member.phone, self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_validate_phone(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email, "", self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

    def test_validate_joined_date(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone, "2014-12-25",
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "The 25th of December, Stardate 21020",
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_validate_agreement_date(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone, self.joined_date,
                                  "2014-12-25", self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "The 25th of December, Stardate 21020",
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_active_member(self):

        self.assertTrue(self.test_member.active_member(),
                        'member agreement is current')
        new_agreement_date = date.today() - timedelta(days=500)
        members.update(self.test_member.id, self.test_member.name,
                       self.test_member.email, self.test_member.phone,
                       self.test_member.joined_date, new_agreement_date,
                       self.test_member.is_keyholder)
        member = Entity.get(Entity.id == self.test_member.id)
        self.assertFalse(member.active_member(),
                         'member agreement not current')

    def test_create(self):
        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   self.test_member.agreement_date,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)

        self.assertNotEqual(member.id, self.test_member.id)
        self.assertEqual(member.name, self.test_member.name)
        self.assertEqual(member.email, self.test_member.email)
        self.assertEqual(member.phone, self.test_member.phone)
        self.assertEqual(member.joined_date, self.test_member.joined_date)
        self.assertEqual(member.agreement_date,
                         self.test_member.agreement_date)
        self.assertEqual(member.is_keyholder, self.test_member.is_keyholder)
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone, None,
                                   self.test_member.agreement_date,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.joined_date, date.today())
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date, None,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.agreement_date, date.today())
        member.delete_instance()

    def test_update(self):
        new_name = "Joe Flanders"
        new_email = "*****@*****.**"
        new_phone = "(04) 9876 5432"
        new_joined_date = date.today() - timedelta(days=7)
        new_agreement_date = date.today() - timedelta(days=6)
        new_is_keyholder = True
        members.update(self.test_member.id, new_name, new_email, new_phone,
                       new_joined_date, new_agreement_date, new_is_keyholder)
        member = Entity.get(Entity.id == self.test_member.id)
        self.assertEqual(member.name, new_name)
        self.assertEqual(member.email, new_email)
        self.assertEqual(member.phone, new_phone)
        self.assertEqual(member.joined_date, new_joined_date)
        self.assertEqual(member.agreement_date, new_agreement_date)
        self.assertEqual(member.is_keyholder, new_is_keyholder)

    def test_create_token(self):
        token = members.create_token(self.test_member.email)
        member = members.get(self.test_member.id)
        self.assertEqual(token, member.token)

    def test_authenticate_token(self):
        token = members.create_token(self.test_member.email)
        valid = members.authenticate_token(token)
        self.assertTrue(valid)

    def test_authenticate_token_expiry(self):
        with freeze_time("2012-01-14 10:00:00"):
            token = members.create_token(self.test_member.email)

        with freeze_time("2012-01-15 09:59:59"):
            member = members.authenticate_token(token)
            self.assertEqual(member, self.test_member)

        with freeze_time("2012-01-15 10:00:01"):
            member = members.authenticate_token(token)
            self.assertEqual(member, None)

    def test_invalidate_token(self):
        members.create_token(self.test_member.email)
        members.invalidate_token(self.test_member.id)
        member = members.get(self.test_member.id)
        self.assertEqual(member.token, None)
        self.assertEqual(member.token_expiry, None)
예제 #37
0
class EntitiesTestCases(unittest.TestCase):
    def setUp(self):
        self.test_entity = Entity()
        self.test_entity.is_member = False
        self.test_entity.name = "Jane Smith"
        self.test_entity.email = "*****@*****.**"
        self.test_entity.phone = "+61 (02) 1234 5678"
        self.test_entity.is_keyholder = False
        self.test_entity.save()

    def tearDown(self):
        self.test_entity.delete_instance()

    def test_get(self):
        entity = entities.get(self.test_entity.id)
        self.assertEqual(entity, self.test_entity)

    def test_get_bad_id(self):
        entity = entities.get(12345)
        self.assertIsNone(entity)

    def test_validate(self):
        errors = entities.validate(self.test_entity.name,
                                   self.test_entity.email,
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 0)

    def test_validate_name(self):
        errors = entities.validate("", self.test_entity.email,
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 1)

    def test_validate_email(self):
        errors = entities.validate(self.test_entity.name, "",
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 0)

        errors = entities.validate(self.test_entity.name, "not-an-email.com",
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 1)

        errors = entities.validate(self.test_entity.name, "not-an-email@",
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 1)

    def test_validate_phone(self):
        errors = entities.validate(self.test_entity.name,
                                   self.test_entity.email, "")
        self.assertEqual(len(errors), 0)

    def test_create(self):
        entity_id = entities.create(self.test_entity.name,
                                    self.test_entity.email,
                                    self.test_entity.phone)
        entity = Entity.get(Entity.id == entity_id)

        self.assertNotEqual(entity.id, self.test_entity.id)
        self.assertEqual(entity.name, self.test_entity.name)
        self.assertEqual(entity.email, self.test_entity.email)
        self.assertEqual(entity.phone, self.test_entity.phone)
        entity.delete_instance()

    def test_update(self):
        new_name = "Joe Flanders"
        new_email = "*****@*****.**"
        new_phone = "(04) 9876 5432"
        entities.update(self.test_entity.id, new_name, new_email, new_phone)
        entity = Entity.get(Entity.id == self.test_entity.id)
        self.assertEqual(entity.name, new_name)
        self.assertEqual(entity.email, new_email)
        self.assertEqual(entity.phone, new_phone)
예제 #38
0
database = SqliteDatabase(app.config['DATABASE'], threadlocals=True)

from mhvdb2.admin import admin  # noqa

app.register_blueprint(admin, url_prefix='/admin')


@app.before_request
def before_request():
    g.db = database
    g.db.connect()


@app.after_request
def after_request(response):
    g.db.close()
    return response


import mhvdb2.routes  # noqa

from mhvdb2.models import Entity, User  # noqa

database.connect()
if not Entity.table_exists():
    Entity.create_table()
if not User.table_exists():
    User.create_table()
database.close()
예제 #39
0
파일: routes.py 프로젝트: jamiereid/mhvdb2
def members():
    members = Entity.select().where(Entity.is_member)
    return render_template('admin/members.html', members=members)
예제 #40
0
def update(entity_id, name, email, phone):
    entity = Entity.get(Entity.id == entity_id)
    entity.name = name
    entity.email = email
    entity.phone = phone
    entity.save()
예제 #41
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def invalidate_token(id):
    member = Entity.get(Entity.id == id)
    member.token = None
    member.token_expiry = None
    member.save()
예제 #42
0
파일: test_members.py 프로젝트: cmrn/mhvdb2
class MembersTestCases(unittest.TestCase):
    def setUp(self):
        self.test_member = Entity()
        self.test_member.is_member = True
        self.test_member.name = "Jane Smith"
        self.test_member.email = "*****@*****.**"
        self.test_member.phone = "+61 (02) 1234 5678"
        self.test_member.joined_date = date.today()-timedelta(days=1)
        self.test_member.agreement_date = date.today()
        self.test_member.is_keyholder = False
        self.test_member.save()
        self.joined_date = "2014-12-24"
        self.agreement_date = "2014-12-25"

    def tearDown(self):
        self.test_member.delete_instance()

    def test_get(self):
        member = members.get(self.test_member.id)
        self.assertEqual(member, self.test_member)

    def test_get_bad_id(self):
        member = members.get(12345)
        self.assertIsNone(member)

    def test_validate(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

    def test_validate_name(self):
        errors = members.validate("",
                                  self.test_member.email,
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_validate_email(self):
        errors = members.validate(self.test_member.name,
                                  "",
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

        errors = members.validate(self.test_member.name,
                                  "not-an-email.com",
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

        errors = members.validate(self.test_member.name,
                                  "not-an-email@",
                                  self.test_member.phone,
                                  self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_validate_phone(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  "",
                                  self.joined_date,
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

    def test_validate_joined_date(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "2014-12-25",
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "The 25th of December, Stardate 21020",
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_validate_agreement_date(self):
        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  self.joined_date,
                                  "2014-12-25",
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 0)

        errors = members.validate(self.test_member.name,
                                  self.test_member.email,
                                  self.test_member.phone,
                                  "The 25th of December, Stardate 21020",
                                  self.agreement_date,
                                  self.test_member.is_keyholder)
        self.assertEqual(len(errors), 1)

    def test_create(self):
        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   self.test_member.agreement_date,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)

        self.assertNotEqual(member.id, self.test_member.id)
        self.assertEqual(member.name, self.test_member.name)
        self.assertEqual(member.email, self.test_member.email)
        self.assertEqual(member.phone, self.test_member.phone)
        self.assertEqual(member.joined_date, self.test_member.joined_date)
        self.assertEqual(member.agreement_date, self.test_member.agreement_date)
        self.assertEqual(member.is_keyholder, self.test_member.is_keyholder)
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   None,
                                   self.test_member.agreement_date,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.joined_date, date.today())
        member.delete_instance()

        member_id = members.create(self.test_member.name,
                                   self.test_member.email,
                                   self.test_member.phone,
                                   self.test_member.joined_date,
                                   None,
                                   self.test_member.is_keyholder)
        member = Entity.get(Entity.id == member_id)
        self.assertEqual(member.agreement_date, date.today())
        member.delete_instance()

    def test_update(self):
        new_name = "Joe Flanders"
        new_email = "*****@*****.**"
        new_phone = "(04) 9876 5432"
        new_joined_date = date.today()-timedelta(days=7)
        new_agreement_date = date.today()-timedelta(days=6)
        new_is_keyholder = True
        members.update(self.test_member.id,
                       new_name,
                       new_email,
                       new_phone,
                       new_joined_date,
                       new_agreement_date,
                       new_is_keyholder)
        member = Entity.get(Entity.id == self.test_member.id)
        self.assertEqual(member.name, new_name)
        self.assertEqual(member.email, new_email)
        self.assertEqual(member.phone, new_phone)
        self.assertEqual(member.joined_date, new_joined_date)
        self.assertEqual(member.agreement_date, new_agreement_date)
        self.assertEqual(member.is_keyholder, new_is_keyholder)

    def test_create_token(self):
        token = members.create_token(self.test_member.email)
        member = members.get(self.test_member.id)
        self.assertEqual(token, member.token)

    def test_authenticate_token(self):
        token = members.create_token(self.test_member.email)
        valid = members.authenticate_token(token)
        self.assertTrue(valid)

    def test_authenticate_token_expiry(self):
        with freeze_time("2012-01-14 10:00:00"):
            token = members.create_token(self.test_member.email)

        with freeze_time("2012-01-15 09:59:59"):
            member = members.authenticate_token(token)
            self.assertEqual(member, self.test_member)

        with freeze_time("2012-01-15 10:00:01"):
            member = members.authenticate_token(token)
            self.assertEqual(member, None)

    def test_invalidate_token(self):
        members.create_token(self.test_member.email)
        members.invalidate_token(self.test_member.id)
        member = members.get(self.test_member.id)
        self.assertEqual(member.token, None)
        self.assertEqual(member.token_expiry, None)
예제 #43
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def create(name, email, phone, joined_date=None, agreement_date=None, is_keyholder=None):
    if joined_date is None:
        joined_date = date.today()
    if agreement_date is None:
        agreement_date = date.today()
    member = Entity()
    member.is_member = True
    member.name = name
    member.email = email.lower()
    member.phone = phone
    member.joined_date = joined_date
    member.agreement_date = agreement_date
    if is_keyholder is None:
        member.is_keyholder = False
    else:
        member.is_keyholder = is_keyholder

    member.save()

    return member.id
예제 #44
0
파일: members.py 프로젝트: cmrn/mhvdb2
def invalidate_token(id):
    member = Entity.get(Entity.id == id)
    member.token = None
    member.token_expiry = None
    member.save()
예제 #45
0
파일: members.py 프로젝트: jamiereid/mhvdb2
def get(member_id):
    try:
        return Entity.get((Entity.id == member_id) & Entity.is_member)
    except DoesNotExist:
        return None
예제 #46
0
파일: routes.py 프로젝트: theswitch/mhvdb2
def entities():
    entities = Entity.select().where(Entity.is_member == False)          # noqa
    return render_template('admin/entities.html', entities=entities)
예제 #47
0
class EntitiesTestCases(unittest.TestCase):
    def setUp(self):
        self.test_entity = Entity()
        self.test_entity.is_member = False
        self.test_entity.name = "Jane Smith"
        self.test_entity.email = "*****@*****.**"
        self.test_entity.phone = "+61 (02) 1234 5678"
        self.test_entity.save()

    def tearDown(self):
        self.test_entity.delete_instance()

    def test_get(self):
        entity = entities.get(self.test_entity.id)
        self.assertEqual(entity, self.test_entity)

    def test_get_bad_id(self):
        entity = entities.get(12345)
        self.assertIsNone(entity)

    def test_validate(self):
        errors = entities.validate(self.test_entity.name,
                                   self.test_entity.email,
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 0)

    def test_validate_name(self):
        errors = entities.validate("",
                                   self.test_entity.email,
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 1)

    def test_validate_email(self):
        errors = entities.validate(self.test_entity.name,
                                   "",
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 0)

        errors = entities.validate(self.test_entity.name,
                                   "not-an-email.com",
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 1)

        errors = entities.validate(self.test_entity.name,
                                   "not-an-email@",
                                   self.test_entity.phone)
        self.assertEqual(len(errors), 1)

    def test_validate_phone(self):
        errors = entities.validate(self.test_entity.name,
                                   self.test_entity.email,
                                   "")
        self.assertEqual(len(errors), 0)

    def test_create(self):
        entity_id = entities.create(self.test_entity.name,
                                    self.test_entity.email,
                                    self.test_entity.phone)
        entity = Entity.get(Entity.id == entity_id)

        self.assertNotEqual(entity.id, self.test_entity.id)
        self.assertEqual(entity.name, self.test_entity.name)
        self.assertEqual(entity.email, self.test_entity.email)
        self.assertEqual(entity.phone, self.test_entity.phone)
        entity.delete_instance()

    def test_update(self):
        new_name = "Joe Flanders"
        new_email = "*****@*****.**"
        new_phone = "(04) 9876 5432"
        entities.update(self.test_entity.id,
                        new_name,
                        new_email,
                        new_phone)
        entity = Entity.get(Entity.id == self.test_entity.id)
        self.assertEqual(entity.name, new_name)
        self.assertEqual(entity.email, new_email)
        self.assertEqual(entity.phone, new_phone)
예제 #48
0
파일: __init__.py 프로젝트: mbainrot/mhvdb2
app.config.from_object('settings')

database = SqliteDatabase(app.config['DATABASE'], threadlocals=True)

from mhvdb2.admin import admin  # noqa
app.register_blueprint(admin, url_prefix='/admin')


@app.before_request
def before_request():
    g.db = database
    g.db.connect()


@app.after_request
def after_request(response):
    g.db.close()
    return response

import mhvdb2.routes   # noqa

from mhvdb2.models import Entity, User  # noqa

database.connect()
if not Entity.table_exists():
    Entity.create_table()
if not User.table_exists():
    User.create_table()
database.close()
예제 #49
0
파일: routes.py 프로젝트: theswitch/mhvdb2
def members():
    members = Entity.select().where(Entity.is_member)
    return render_template('admin/members.html', members=members)
예제 #50
0
파일: routes.py 프로젝트: jamiereid/mhvdb2
def entities():
    entities = Entity.select().where(Entity.is_member == False)  # noqa
    return render_template('admin/entities.html', entities=entities)