예제 #1
0
    def see_window_right(window, user, number):
        row = 0
        column = 5
        Widget.line(window, user, '', row, column)
        column += 1

        break_line = '------------------------------------------------------------------------------------------------------'

        line1 = 'Code: ' + user.property_list[number].code
        Widget.title(window, user, line1, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1

        line2 = 'Address: ' + user.property_list[number].address
        Widget.title(window, user, line2, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1

        number, list = user.property_list[number].landlord_list(user)
        header = str(number) + ' Landlords: '
        if number == 0: header = 'No Landlord'
        if number == 1: header = 'Landlord: '
        line3 = header + list
        Widget.line(window, user, line3, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1
예제 #2
0
def show_window(user, class_type, code=False): # code for where actions for just one property are requested, otherwise False
    # Set up window
    text = 'Show ' + class_type.title() + 's'
    if class_type == 'property': text = 'Show Properties'
    window = Widget.window(user.root, user, text, 'medium')

    # Set up frames
    top_frame = Widget.side_frame(window, user, 'top')
    scroll_frame = Widget.scroll_frame(window, user)
    bottom_frame = Widget.side_frame(window, user, 'bottom')

    # Top Frame
    text = class_type.title() + 's for ' + user.name + ':'
    if class_type == 'property': text = 'Properties for ' + user.name + ':'
    Widget.title(top_frame, user, text)

    # Scroll Frame
    Widget.scroll_button_list(window, scroll_frame, user, class_type, code)

    # Bottom Frame
    Widget.add_window_button(bottom_frame, user, class_type)
    Widget.close_button(window, 'show', bottom_frame, user, class_type)

    # Add window and scroll frame to user so can be refreshed from outside of method
    show_windows = getattr(user, class_type + '_show_windows')
    show_windows.insert(0, [window, scroll_frame, code])
    # Close window sent through method so can be removed from user
    window.protocol("WM_DELETE_WINDOW", lambda: Widget.close_window(window, 'show', user, class_type))
예제 #3
0
    def see_window_right(window, user, number):
        row = 0
        column = 5
        Widget.line(window, user, '', row, column)
        column += 1

        break_line = ''
        for i in range(102): break_line += '-'

        text = '[' + user.task_list[number].staff + ']'
        text += ' (Startdate: ' + user.task_list[number].date + ')'
        text += ' Deadline: ' + user.task_list[number].deadline
        Widget.line(window, user, text, row, column)
        row += 1

        line = Property.address_from_code(user, user.task_list[number].property)
        Widget.title(window, user, line, row, column)
        row += 1

        text = 'Description: ' + user.task_list[number].message
        Widget.content(window, user, text, row, column)
        row += 1

        Widget.line(window, user, break_line, row, column)
        row += 1

        till_deadline = ''
        alert = False
        if user.task_list[number].deadline != '':
            till_deadline = Task.date_length(str(date.today()), user.task_list[number].deadline)
            if till_deadline < 1: alert = True
        line = 'Days till deadline: ' + str(till_deadline)
        Widget.line(window, user, line, row, column, alert)
        row += 1

        till_due = Task.date_length(str(date.today()), user.task_list[number].due)
        alert = False
        if till_due < 1: alert = True
        line = 'Days till due: ' + str(till_due)
        Widget.title(window, user, line, row, column, alert)
        row += 1

        text = 'Next Action: ' + user.task_list[number].next
        Widget.content(window, user, text, row, column)
        row += 1
예제 #4
0
def add_window(user, class_type, number=''):
    # Set up window
    text = 'Add ' + class_type.title()
    window = Widget.window(user.root, user, text, 'small')
    row = 0

    # Intro
    text = 'Add ' + class_type + ' as ' + user.name
    Widget.title(window, user, text)
    row += 1
    entries = {'number': number}

    # Drop downs
    if class_type == 'action' or class_type == 'task':
        options = []
        for property in user.property_list:
            text = property.code + ' - ' + property.address
            options.append(text)
        entry_property = Widget.drop_down(window, user, 'Property:', options, row)
        entries.update({'property': entry_property})
        row += 1

    if class_type == 'contact':
        entry_type = Widget.drop_down(window, user, 'Type:', ['Address', 'Phone Number', 'Email'], row)
        entries.update({'type': entry_type})
        row += 1

    # Non drop downs
    data_types = ['message'] # Action & Task
    if class_type == 'property': data_types = ['code', 'address']
    if class_type == 'landlord': data_types = ['title', 'first_names', 'surname', 'note']
    if class_type == 'contact': data_types = ['enter', 'note']

    for data_type in data_types:
        text = data_type.title() + ':'
        if data_type == 'first_names': text = 'First name(s):'
        if data_type == 'note': text = 'Note (optional):'
        entry = Widget.entry(window, user, text, row)
        entries.update({data_type: entry})
        row += 1

    # Submit
    text = 'SUBMIT (as ' + user.name + ')'
    Widget.confirm_window_button(window, user, class_type, text, entries, row)
    Widget.close_button(window, False, window, user, False, row, 2)
예제 #5
0
    def see_window_right(window, user, number):
        row = 0
        column = 5
        Widget.line(window, user, '', row, column)
        column += 1

        break_line = '------------------------------------------------------------------------------------------------------'

        text = 'Address: '
        if user.contact_list[number].type == 'Email': text = 'Email: '
        if user.contact_list[number].type == 'Phone Number': text = 'Number: '
        line1 = text + user.contact_list[number].address
        Widget.title(window, user, line1, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1

        text = user.contact_list[number].note
        Widget.content(window, user, text, row, column)
예제 #6
0
    def see_window_right(window, user, number):
        row = 0
        column = 5
        Widget.line(window, user, '', row, column)
        column += 1

        break_line = '------------------------------------------------------------------------------------------------------'

        line1 = 'Date: ' + user.action_list[number].date + '                         ¦     Code: ' + user.action_list[number].property
        Widget.title(window, user, line1, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1

        line2 = Property.address_from_code(user, user.action_list[number].property)
        Widget.title(window, user, line2, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1

        text = user.action_list[number].message
        Widget.content(window, user, text, row, column)
예제 #7
0
    def see_window_right(window, user, number):
        row = 0
        column = 5
        Widget.line(window, user, '', row, column)
        column += 1

        break_line = '------------------------------------------------------------------------------------------------------'

        line = 'Landlord code: ' + user.landlord_list[number].code
        Widget.line(window, user, line, row, column)
        row += 1
        Widget.line(window, user, break_line, row, column)
        row += 1

        line = 'Name: ' + user.landlord_list[number].title + ' ' + user.landlord_list[number].first_names + ' ' + user.landlord_list[number].surname
        Widget.title(window, user, line, row, column)
        row += 1

        line = 'Properties: '
        Widget.line(window, user, line, row, column)
        row += 1
        counter = 0
        for property in user.property_list:
            for code in property.landlords:
                if code == user.landlord_list[number].code:
                    text =  property.address
                    pp_number = 0
                    for pp in user.property_list:
                        if property == pp: break
                        pp_number += 1
                    button = Button(window, relief='flat', bg="gray99",
                                    font=user.standard_font, text=text, anchor='w',
                                    command=lambda pp_number=pp_number: win.property.PropertyWin.see_window(user, pp_number))
                    button.grid(row=row, column=column,  columnspan=2, sticky='nsew', padx=user.padx, pady=user.pady)
                    row += 1
                counter += 1

        line = 'Notes: '
        Widget.line(window, user, line, row, column)
        row += 1
        text = user.landlord_list[number].note
        Widget.content(window, user, text, row, column)
        row += 1

        line = 'Contact details: '
        Widget.line(window, user, line, row, column)
        row += 1
        for code in user.landlord_list[number].contacts:
            counter = 0
            for contact in user.contact_list:
                if code == contact.code:
                    note = ' (' + contact.note + ')'
                    if len(contact.note) > 38:
                        note = ' (' + contact.note[0:35] + '...)'
                    text =  contact.type + ' - ' + contact.address + note
                    button = Button(window, relief='flat', bg="gray99",
                                    font=user.standard_font, text=text, anchor='w',
                                    command=lambda number=counter: win.contact.ContactWin.see_window(user, number))
                    button.grid(row=row, column=column,  columnspan=2, sticky='nsew', padx=user.padx, pady=user.pady)
                    row += 1
                counter += 1

        # Buttons
        Widget.add_window_button(window, user, 'contact', number, row, column)
        column += 1
        Widget.close_button(window, 'see', window, user, 'property', row, column)
예제 #8
0
def confirm_window(add_window, user, class_type, entries):
    # Set up window
    alert = False
    if class_type == 'property': alert = True
    text = 'Confirm ' + class_type.title()
    window =  Widget.window(add_window, user, text, 'small', alert)
    row = 0
    column = 0

    # Get data from entries dictionary
    data = {}
    number = entries.get('number', '')
    data.update({'number': number})

    data_types = ['message', 'code', 'address', 'title', 'first_names', 'surname', 'note', 'type', 'enter']
    for data_type in data_types:
        data_item = entries.get(data_type, Widget.blank_entry()).get()
        data.update({data_type: data_item})

    if class_type == 'action' or class_type == 'task':
        # Retrieve address from dropdown list
        property_code_address = entries.get('property', Widget.blank_entry()).get()
        property_code = property_code_address[0:6]
        data.update({'property_code': property_code})
        address = Property.address_from_code(user, property_code)
        data.update({'address': address})

    # Intro line
    text = 'Check and confirm ' + class_type + ':'
    if class_type == 'property': text = 'ARE YOU SURE YOU WANT TO ADD PROPERTY?'
    Widget.line(window, user, text, row, column, alert)
    row += 1

    # Main data display: property (code)
    if data['code'] != '':
        text = 'Code: ' + data['code']
        Widget.title(window, user, text, row, column, alert)
        row += 1
    elif class_type == 'property':
        text = 'NO PROPERTY CODE ADDED'
        Widget.title(window, user, text, row, column, alert)
        row += 1

    # Main data display: property, action & task (address)
    if data['address'] != '':
        text = 'Property: '
        if class_type == 'property': text = 'Address: '
        text += data['address']
        Widget.title(window, user, text, row, column, alert)
        row += 1
    elif class_type == 'property':
        text = 'NO ADDRESS ADDED'
        Widget.title(window, user, text, row, column, alert)
        row += 1

    # Main data: action & task (message) - if exists displayed below in sub-data
    if data['message'] == '':
        if class_type == 'action' or class_type == 'task':
            text = 'NO MESSAGE ADDED'
            Widget.title(window, user, text, row, column, alert)
            row += 1

    # Main data display: landlord (full name)
    if data['surname'] != '':
        text = data['title'] + ' ' + data['first_names'] + ' ' + data['surname']
        Widget.title(window, user, text, row, column, alert)
        row += 1
    elif class_type == 'landlord':
        text = 'NO SURNAME ADDED'
        Widget.title(window, user, text, row, column, alert)
        row += 1

    # Main data display: contact (email/phone/address)
    if data['type'] != '':
        text = data['type'] + ': ' + data['enter']
        Widget.title(window, user, text, row, column, alert)
        row += 1
    elif class_type == 'contact':
        text = 'NO TYPE SELECTED'
        Widget.title(window, user, text, row, column, alert)
        row += 1

    # Sub-data display
    data_types = ['message', 'note'] # Action & Task
    for data_type in data_types:
        if data[data_type] != '':
            text = data[data_type]
            Widget.content(window, user, text, row, column, alert)
            row += 1

    # Open the new objects's see window after adding
    open = False
    if class_type == 'property': open = True

    # Submit
    text = 'CONFIRM (as ' + user.name + ')'
    Widget.add_button(add_window, window, user, class_type, text, data, row, open)
    text = "Cancel (don't confirm)"
    Widget.close_button(window, False, window, user, False, row, 1, text)