Exemple #1
0
 def test_upd_member_profile(self, keep_member=False):
     """Positive test: Update a new Member"""
     # create a member
     new_id = self.test_add_new_member(keep_member=True)
     member = Member(id=new_id)
     current_avatarUrl = member["avatar_url"]
     current_username = member["username"]
     # call update API
     url = "{}/member/openid/{}".format(self.base_url, member["openid"])
     print("Path:", url)
     patch = {
         "op": "update",
         "data": {
             "avatarUrl": "https://new/link/to_avatar.html",
             'nickName': "new_nickName",
             'tags': 5
         }
     }
     response = requests.patch(url, json=patch)
     self.assertEqual(200, response.status_code)
     result = response.json()
     self.print_JSON(result, title="test_upd_member_profile:")
     # fetch record again
     member = Member(id=new_id)
     upd_avatarUrl = member["avatar_url"]
     upd_username = member["username"]
     self.assertNotEqual(current_avatarUrl, upd_avatarUrl)
     self.assertNotEqual(current_username, upd_username)
     self.assertEqual("new_nickName", upd_username)
     if not keep_member: self.delete_member(new_id)
Exemple #2
0
 def test_add_payment(self, keep_member=False):
     """Positive test: add a payment to a new Member"""
     # create a member
     new_id = self.test_add_new_member(keep_member=True)
     member = Member(id=new_id, db_access="../../Private/db_access.data")
     # call update API
     url = "{}/member/openid/{}".format(self.base_url, member["openid"])
     print("Path:", url)
     patch = {
         "op": "add",
         "data": {
             'paidTime':
             datetime.now().strftime('%Y%m%d%H%M'),  # '201803121929',
             'payIndex': 'this_is_craaaazy_____',
             'CNYAmount': 123.45,
             'payType': 'DONATION'
         }
     }
     response = requests.patch(url, json=patch)
     self.assertEqual(200, response.status_code)
     result = response.json()
     self.print_JSON(result, title="test_add_payment:")
     # fetch record again
     member = Member(id=new_id, db_access="../../Private/db_access.data")
     print(member.transactions)
     if not keep_member: self.delete_member(new_id)
Exemple #3
0
    def test_send_back(self):
        librarian = Librarian()
        librarian.add_book("xxxx", "b")

        member1 = Member()
        member2 = Member()

        # can send back a book
        book = member1.borrow("xxxx")
        self.assertEqual(book.is_borrowed, True)
        self.assertEqual(member1.number_book_borrowed, 1)
        member1.send_back("xxxx")
        self.assertEqual(book.is_borrowed, False)
        self.assertEqual(member1.number_book_borrowed, 0)

        # can't send back a book that is not yours
        book = member1.borrow("xxxx")
        self.assertEqual(book.is_borrowed, True)
        member2.send_back("xxxx")
        self.assertEqual(book.is_borrowed, True)
        member1.send_back("xxxx")
        self.assertEqual(book.is_borrowed, False)

        # can't send back a book not borrowed
        book = member1.send_back("xxxx")
        self.assertIsNone(book)
    def test_choose_member(self):
        m1 = Member("foo")
        m2 = Member("Bar")
        m3 = Member("Baz")

        members = [m1, m2, m3]
        member = choose_member_from(members)
        assert_that([member.display_name
                     for member in members]).contains(member.display_name)
Exemple #5
0
    def login_menu(self):
        """ Display Login options for users to choose.

        :return: True
        """
        print("\n**** LOGIN MENU ****")
        print(
            "1. Login as BDO \n2. Login as GPM \n3. Login as Member\n4. Exit")
        choice = input("Choose: ")

        if choice == '1':
            BlockDevelopmentOfficer(self.conn).login_bdo()
        elif choice == '2':
            GramPanchayatMember(self.conn).login_gpm()
        elif choice == '3':
            Member(self.conn).login_member()
        elif choice == '4':
            print("\nExiting...")
            self.conn.close()
        else:
            print("\nWrong Input!  Try again.")

        if choice != '4':
            self.login_menu()

        return True
Exemple #6
0
    def handle_server_notification(self, socket):
        message = socket.recv(4096)
        if message:
            # debug message to print the message sent by tracker
            # print 'Tracker [' + str(socket.getpeername()) + '] sent notification "' + str(message) + '"'
            notification = message.split("\t")
            operation = notification[0]
            group_name = notification[1]
            group = self.group_list[group_name]
            member_info = notification[2].split(',')

            # add the new member to client's group view in order to be
            # able to send him messages
            if operation == 'add':
                new_member = Member(member_info[0], member_info[1],
                                    member_info[2], member_info[3],
                                    member_info[4])
                group.add_member(new_member)
            # remove the member from client's group view
            elif operation == 'remove':
                member_name = member_info[1]
                group.remove_member_by_name(member_name)
            else:
                print '[handle_server_notification] Operation not supported'
                sys.exit(2)
Exemple #7
0
 def test_d_has_many_activities_returns_true_with_more_than_one_activity(
         self):
     member = Member('id', 'first_name', 'last_name', 'birth_date')
     member.add_activity('activity1', 'location1', 'start_date1', 'cost1')
     member.add_activity('activity2', 'location2', 'start_date2', 'cost2')
     returned = member.has_many_activities()
     assert returned == True
Exemple #8
0
    def test_login_member_failure_sql_error(self, inputs):
        """ Test login member method."""
        inputs.side_effect = ['id', 'pswd']
        with mock.patch('member.sqlite3.connect') as mocksql:
            mocksql.execute.side_effect = sqlite3.Error

            assert Member(mocksql).login_member() == False
Exemple #9
0
    def option_four(self, coop):
        try:
            name = input("Enter name:")
        except ValueError:
            print("Error in input name")
            return 0
        try:
            contact = int(input("Enter contact:"))
        except ValueError:
            print("Error in input contact")
            return 0
        date = self.correct_date('day of birth')
        try:
            money = input("Enter monthly income to nearest whole number or <Enter> if not disclosing: ")
            if money == '':
                money = None
            else:
                money = int(money)

        except ValueError:
            print("Error in input monthly income")
            return 0
        try:

            coop.addMember(Member(name, contact, date, money))
            print(coop.membersStr())
            print("Add member operation successful")
        except UnboundLocalError:
            print("Operation is not successful")
Exemple #10
0
def get_member(id):
    """Display the form in R/O mode for a member"""
    member = Member(id)
    qr_file = "images/XCJ_{}.png".format(id)
    if member['status'] == "OK":
        try:
            last_modif_time = stat(qr_file).st_mtime
            make_qr_code = datetime.fromtimestamp(
                last_modif_time) < datetime.now().replace(
                    minute=0, hour=0, second=0, microsecond=0)
        except (FileNotFoundError, AttributeError) as err:
            make_qr_code = True
        if make_qr_code:
            qrcode_text = member.encode_qrcode()
            img = make_qrcode(qrcode_text)
            img.save(qr_file)
        member.qrcode_is_valid = True
    else:
        member.qrcode_is_valid = False
        copy2("images/emoji-not-happy.jpg",
              qr_file)  # overwrite any previous QR code .png
    return template("member",
                    member=member,
                    read_only=True,
                    session=session_manager.get_session())
Exemple #11
0
        def _collect_sys_members (self, dtype, hparam, default, has_bulkice):

                ''' collect all set members for a specific data type
                    and a specific discrete parameter

                    :param hparam  (str): name of the discrete systematics
                    :param dtype   (str): name of the given member
                    :param default (dict): keys:default values of discrete systematics
                    :param has_bulkice (bool): If True, include bulk ice off axis points

                    :return members (`Map`): dictionary with all `Members` objects
                '''
                
                set_members = Map ({})
                sets = get_sets (dtype, hparam, has_bulkice=has_bulkice)
                for s in sets:
                        setid, setvalues = self._get_setvalues (s, dtype,
                                                                hparam, default)
                        isdef = self._check_setid (setid, default)
                        ## don't waste time if it is the default set and already stored
                        if setid in set_members:
                                if not defid == setid:
                                        message = 'Library:' + fname + \
                                                  ' : WARNING : setid (' + setid + \
                                                  ') already exist in the dictionary !'
                                        print ('{0}'.format (message))
                                continue
                        set_members [setid] = Member (dtype, self.ppath,
                                                      ranges=self._ranges,
                                                      baseline=False,
                                                      isdragon=self.isdragon, 
                                                      sysvalues=setvalues)
                return set_members
Exemple #12
0
    def fillMembersArray(self):
        self.loadDataPath()
        try:
            with open(self.current_selected_path + '/members.json',
                      'r') as file:
                data = file.read()

            members_dict = json.loads(data)

        except:
            print('No path')
            members_dict = []

        for member in members_dict:
            if "shortname" in member:
                shortname = member['shortname']

            else:
                shortname = "404"

            tmp_member = Member([
                member['firstname'], member['middlename'], member['lastname'],
                shortname
            ], member['birthday'], member['statements'],
                                self.current_selected_path)

            self.members.append(tmp_member)
Exemple #13
0
 def test_add_new_member(self, keep_member=False):
     """POST new member profile"""
     url = "{}/member/new".format(self.base_url)
     print("Path:", url)
     openid = datetime.now().strftime('%Y%m%d%H%M%S.%f')
     minimum_data = {
         "openid": openid,
         "avatarUrl":
         "https://wx.qlogo.cn/mmopen/vi_32/GPm0HkJtcIsWkZmVNaxJP19ibl1g2YJTEibglP0UibOZstaRN1lbuMavu1a1Y795p6J1vHz0bM27icibCiat9ERricyng/0",
         'basicInfo': {
             'nickName': "test_" + openid,
             'country': "China",
             'gender': 1,
             'language': "zh_CN",
         },
         'memberInfo': {
             'tags': 'Master'
         }
     }
     response = requests.post(url, json=minimum_data)
     self.assertEqual(200, response.status_code)
     result = response.json()
     self.print_JSON(result, title="test_add_new_member:")
     self.assertEqual('1000', result['errno'])
     new_id = result['data']['new_id']
     member = Member(new_id, db_access="../../Private/db_access.data")
     print("Created as [role:", member['role'], "] with status:",
           member["status"])
     self.assertEqual('NOT_OK', member["status"])
     if not keep_member: self.delete_member(new_id)
     return new_id
Exemple #14
0
 def delete_member(self, id):
     m = Member(id)
     for t in m.transactions:
         trec = Transaction(t['id'])
         trec.delete()
     m.delete()
     print("deleted row", id)
Exemple #15
0
 def test_upd_unknown_field_member(self, keep_member=False):
     """
     Positive Test: try to update an unknown field for a given Member
     The fields not declared in Member_Api.API_MAPPING_TO_DB are ignored
     """
     # create a member
     new_id = self.test_add_new_member(keep_member=True)
     member = Member(id=new_id)
     # call update API
     url = "{}/member/openid/{}".format(self.base_url, member["openid"])
     print("Path:", url)
     patch = {
         "op": "update",
         "data": {
             "avatarUrl": "https://new/link/to_avatar.html",
             'nickName': "new_nickName",
             "unknow_field___": "incorrect field"
         }
     }
     response = requests.patch(url, json=patch)
     self.assertEqual(200, response.status_code)
     result = response.json()
     self.print_JSON(result, title="test_upd_unknown_field_member:")
     self.assertEqual(1000, int(result['errno']))
     # self.assertEqual(new_id, result['data']['id'])
     if not keep_member: self.delete_member(new_id)
Exemple #16
0
 def Start(self):
     while True:
         try:
             self.pods = self.kube.GetPods()
             exists = self.CheckForPrimaryMongo()
             if exists == True:
                 print(
                     'Watcher.CheckForPrimaryMongo: PRIMARY ALREADY IN REPLICASET'
                 )
                 self.primary = False
             elif exists == False:
                 member = Member(_id=None, IP='127.0.0.1', priority=None)
                 alive = member.CheckIfAlive()
                 if alive == True:
                     primary = member.CheckIfPodIsPrimary()
                     if primary == True:
                         self.primary = True
                         print(
                             'Watcher.CheckForPrimaryMongo: POD IS PRIMARY')
                     elif primary == False:
                         print(
                             'Watcher.CheckForPrimaryMongo: NO PRIMARY IN REPLICASET'
                         )
                         self.mongo.HoldElection(self)
             if self.primary == True:
                 self.CheckCurrentMongoPods()
             time.sleep(5)
         except Exception as error:
             print('Watcher.Start: ERROR - {}'.format(error))
             time.sleep(5)
Exemple #17
0
 def load_members(names):
     """
     Load the game owners as members in database.
     :param names: the list of the game owner names
     :return:
     """
     for name in names:
         # Ignore empty names
         if not name.strip():
             continue
         member = MemberRepo.get_member_by_name(name)
         if member is None:
             # Get the number of the last registered member
             last_num = 0
             last_member = MemberRepo.get_last_member()
             if last_member is not None:
                 last_num = last_member.number
             num = str(int(last_num) + 1)
             now = datetime.datetime.today().strftime('%Y-%m-%d')
             member = Member(num, name, now)
             # Insert new member
             logging.debug('Insert member ' + member.to_string())
             MemberRepo.insert_member(member)
         else:
             logging.debug('Update member ' + member.to_string())
             MemberRepo.update_member(member)
Exemple #18
0
def upd_form_member(id):
    """update a member database record - Display current data for input modification"""
    member = Member(id)
    return template("member",
                    member=member,
                    read_only=False,
                    session=session_manager.get_session())
Exemple #19
0
    def test_show_member_complaints_without_data(self, mocksql):
        """ Test show member complaints method."""
        sqlite_execute_mock = mock.Mock()
        mocksql.execute.return_value = sqlite_execute_mock
        sqlite_execute_mock.fetchall.return_value = {}

        assert Member(mocksql).show_member_complaints() == True
Exemple #20
0
def get_daypass():
    """Present a calendar to choose the daypass pariod (from/to) - default is today"""
    session = session_manager.get_session()
    if request.method == "POST":
        from_date = request.forms['from_date']
        until_date = request.forms.get(
            'until_date', from_date)  # one day pass only --> no until_date
        _from_date = datetime.strptime(from_date, "%Y-%m-%d")
        _until_date = datetime.strptime(until_date, "%Y-%m-%d")
        if (_until_date - _from_date).days <= 7:
            admin = Member(id=1)
            qr_code = admin.encode_qrcode(version=3,
                                          from_date=_from_date,
                                          until_date=_until_date)
            img_qrcode = make_qrcode(qr_code)
            qr_code_file = "images/XCJ_{}.png".format(from_date)
            img_qrcode.save(qr_code_file)
            # print("QR code:", qr_code_file)
            if request.forms.get('email'):
                admin.email_qrcode(
                    qr_code_file,
                    "from {} until {}".format(from_date, until_date),
                    request.forms['email'])
        else:
            qr_code_file = "images/emoji-not-happy.jpg"
    else:  # GET
        qr_code_file = None
        from_date, until_date = date.today(), date.today()
    # only admin can set 'until date'
    period = (from_date, until_date if session['user'].is_admin else "")
    return template("daypass",
                    qr_code=qr_code_file,
                    period=period,
                    session=session)
Exemple #21
0
    def test_member_details_true_without_data(self, mocksql):
        """ Test member details method."""
        sqlite_execute_mock = mock.Mock()
        mocksql.execute.return_value = sqlite_execute_mock
        sqlite_execute_mock.fetchone.return_value = []

        assert Member(mocksql).member_details() == True
Exemple #22
0
def do_login():
    """
    Fetch the login/password from the form and check this couple against the tb_user table
    """
    username = request.forms.get('username').lower()
    password = request.forms.get('password')

    if not username or not password:
        return template('login.tpl',
                        error='Please specify username and password',
                        session=session_manager.get_session())

    session = session_manager.get_session()
    new_user = Member()
    new_user_id = new_user.select('users',
                                  columns='id',
                                  username=username,
                                  passwd=password)
    if new_user_id:
        new_user.get_from_db(id=new_user_id['id'])
        session['valid'] = True
        session['user'] = new_user
        session_manager.save(session)
    else:
        session['valid'] = False
        session['user'] = {}
        session_manager.save(session)
        return template('login.tpl',
                        error='Username or password is invalid',
                        session=session_manager.get_session())
    # redirect(request.get_cookie('validuserloginredirect', '/member/{}'.format(new_user['id'])))
    redirect('/member/{}'.format(new_user['id']))
Exemple #23
0
 def __init__(self, ip, udp_port, mode='FIFO'):
     self.member = Member(None, None, ip, udp_port,
                          self.generate_random_port())
     self.udp_socket = None
     self.tcp_socket = None
     self.tracker_ip = None
     self.tracker_port = None
     self.input_fd = None
     if (mode != 'FIFO') and (mode != 'TOTAL_ORDER'):
         print 'Unsupported message ordering mode'
         sys.exit(3)
     else:
         self.mode = mode
     # dictionary of all groups this client belongs to
     self.group_list = {}
     # the group client has selected to send messages
     self.current_group = None
     # serial number of message sent by client
     self.message_num = 0
     # lamport vector implementation for FIFO ordering implemented as a dictionary
     # with key = <(username, group_name)> and value = <message-serial-no>
     self.lamport_dict = {}
     # buffer storing messages waiting to be delivered
     self.messages_buffer = []
     # lamport timestamp to support total ordering operation mode
     self.lamport_timestamp = 0
     # performance metrics
     self.metrics = Metrics()
Exemple #24
0
def profile_email_toggle(event):
    m = Member(session['username'])
    if m.get_email_prefs()[event]:
        m.set_email_pref(event, 0)
    else:
        m.set_email_pref(event, 1)
    return redirect('/hub/profile/emails')
Exemple #25
0
def ticket():
    # Validate inputs
    required = ['first-name', 'sure-name', 'email', 'promise']

    if not request.form:
        return redirect("http://*****:*****@]+@[^@]+\.[^@]+", request.form['email']):
        return redirect("http://localhost:1313/podlesi-fest/#tickets&err",
                        code=302)

    #Insert data and send message
    member = Member(request.form['first-name'], request.form['sure-name'],
                    request.form['email'], request.form['promise'],
                    request.form['tel'])

    if member.sendMail()[0]:
        return redirect("http://localhost:1313/podlesi-fest/#tickets&ok",
                        code=302)
    else:
        return redirect("http://localhost:1313/podlesi-fest/#tickets&err",
                        code=302)
Exemple #26
0
 def createMember(self, member_json):
     """
     Create a Member object from JSON object
     """
     return Member(trello_client=self,
                   member_id=member_json['id'].encode('utf-8'),
                   name=member_json['fullName'].encode('utf-8'))
Exemple #27
0
 def createMember(self):
     name = input("\nIngrese Nombre: ")
     surname = input("Ingrese Apellido: ")
     age = int(input("Ingrese Edad: "))
     celular = int(input("Ingrese Celular: "))
     member = Member(name, surname, age, celular)
     return member
Exemple #28
0
def admin_payment():
    member = Member(request.form['username'])
    if 'month' in request.form.keys():
        try:
            month = int(request.form['month'])
            if not (1 <= month <= 12):
                return render_template('message.html',
                                       title='Fail',
                                       message='That is an unacceptable month')
            year = int(request.form['year'])
            delta_yr = datetime.date.today().year - year
            if not (-1 <= delta_yr <= 1):
                return render_template('message.html',
                                       title='Fail',
                                       message='That is an unacceptable year')
            member.add_payment(month, year, session['username'])
            return redirect('/hub/admin')
        except Exception as e:
            return render_template('message.html',
                                   title='Fail',
                                   message=str(e))
    else:
        now = datetime.datetime.now()
        member.add_payment(now.month, now.year, session['username'])
        return redirect('/hub/admin')
Exemple #29
0
async def handleRoomCreation(ws, initObj, setRoom):
    if "name" in initObj and initObj["name"].strip() != "":
        gm = GameManager(initObj["packs"], initObj["questions"],
                         initObj["answers"])

        while gm.joinCode in games:
            gm.regenJoinCode()

        m = Member(ws, initObj["name"])
        gm.addMember(m)
        games[gm.joinCode] = gm
        setRoom(gm.joinCode)
        await send_object(
            ws, {
                "action": "roomMade",
                "joinCode": gm.joinCode,
                "setName": initObj["name"]
            })
        nextObj = await recv_object(ws)

        if "action" in nextObj:
            if nextObj["action"] == "startGame":
                await asyncio.wait(
                    [games[gm.joinCode].startGame(),
                     m.runGameLoop()],
                    return_when=asyncio.FIRST_COMPLETED)
    else:
        await send_object(ws, {
            "action": "error",
            "content": "Please make sure to set a name."
        })
Exemple #30
0
 def test_add_new_member_with_payment(self, keep_member=False):
     """POST new member profile with a new payment record"""
     url = "{}/member/new".format(self.base_url)
     print("Path:", url)
     openid = datetime.now().strftime('%Y%m%d%H%M%S.%f')
     minimum_data = {
         "openid": openid,
         "avatarUrl":
         "https://wx.qlogo.cn/mmopen/vi_32/GPm0HkJtcIsWkZmVNaxJP19ibl1g2YJTEibglP0UibOZstaRN1lbuMavu1a1Y795p6J1vHz0bM27icibCiat9ERricyng/0",
         'basicInfo': {
             'nickName': "test_" + openid,
         },
         'paymentInfo': {
             'paidTime': '{0:%Y%m%d%H%M}'.format(datetime.today()),
             'payIndex': 'membership 1 month',
             'CNYAmount': 3200.00,
         }
     }
     response = requests.post(url, json=minimum_data)
     self.assertEqual(200, response.status_code)
     result = response.json()
     self.print_JSON(result, title="test_add_new_member_with_payment:")
     self.assertEqual('1000', result['errno'])
     new_id = result['data']['new_id']
     member = Member(new_id, db_access="../../Private/db_access.data")
     print("Created as [role:", member['role'], "] with status:",
           member["status"])
     self.assertEqual('OK', member["status"])
     print("Transaction:", member.transactions)
     if not keep_member: self.delete_member(new_id)
     return new_id