View difference between Paste ID: KdxgHgeL and vV28TEGT
SHOW: | | - or go back to the newest paste.
1
# -*- coding: utf-8 -*-
2
import logging
3
from trytond.model import ModelView, ModelSQL, fields
4
class Aikidoka(ModelSQL, ModelView):
5
    'Aikidoka'
6
    _name = 'party.party'
7
    _description = __doc__
8
9
    xphone = fields.Char('Phone')
10
    xemail = fields.Char('Email')
11
    dateofbirth = fields.Date('Date of Birth')
12
    female = fields.Boolean('Female')
13
    nationality = fields.Many2One('country.country', 'Nationality')
14
    dateofstart = fields.Date('Date of Start')
15
    dateof10kyu = fields.Date('Date of 10th Kyu')
16
    dateof09kyu = fields.Date('Date of 9th Kyu')
17
    dateof08kyu = fields.Date('Date of 8th Kyu')
18
    dateof07kyu = fields.Date('Date of 7th Kyu')
19
    dateof06kyu = fields.Date('Date of 6th Kyu')
20
    dateof05kyu = fields.Date('Date of 5th Kyu')
21
    dateof04kyu = fields.Date('Date of 4th Kyu')
22
    dateof03kyu = fields.Date('Date of 3rd Kyu')
23
    dateof02kyu = fields.Date('Date of 2nd Kyu')
24
    dateof01kyu = fields.Date('Date of 1st Kyu')
25
    dateof01dan = fields.Date('Date of 1st Dan')
26
    dateof02dan = fields.Date('Date of 2nd Dan')
27
    dateof03dan = fields.Date('Date of 3rd Dan')
28
    dateof04dan = fields.Date('Date of 4th Dan')
29
    dateof05dan = fields.Date('Date of 5th Dan')
30
    dateof06dan = fields.Date('Date of 6th Dan')
31
    dateof07dan = fields.Date('Date of 7th Dan')
32
    dateof08dan = fields.Date('Date of 8th Dan')
33
34
    xcategories = fields.Function(fields.Char('XCategories'#, order_field='aikidokas.get_xcategories_string %(order)s, aikidokas.name %(order)s'
35
), 'get_xcategories_string', searcher='search_xcategories_string')
36
37
    def get_xcategories_string(self, ids, name):
38
        if not ids:
39
            return []
40
        res = {}
41
        for party in self.browse(ids):
42
            res[party.id] = ', '.join(sorted(cat.rec_name for cat in party.categories))
43
            if 'Fukushidoin, ' in res[party.id]:
44
                res[party.id] = res[party.id].replace('Fukushidoin, ', '') + ', Fukushidoin'
45
            if 'Shidoin, ' in res[party.id]:
46
                res[party.id] = res[party.id].replace('Shidoin, ', '') + ', Shidoin'
47
            if 'Dojocho, ' in res[party.id]:
48
                res[party.id] = res[party.id].replace('Dojocho, ', '') + ', Dojocho'
49
            if ', Dojo' == res[party.id][-6:]:
50
                res[party.id] = 'Dojo, ' + res[party.id][:len(res[party.id])-6]
51
        return res
52
53
    def search_xcategories_string(self, name, clause):
54
        ids = self.search([('name', '!=', '')], order=[])
55
        res = []
56
        value = clause[2]
57
        cats = self.get_xcategories_string(ids, name)
58
        logging.getLogger('party').error('asdf')
59
        for cat in cats.keys():
60
            if value.lower() in cats[cat].lower():
61-
                res.append('xcategories', '=', cats[cat])
61+
                res.append('categories', '=', cats[cat])
62-
        res.append(('xcategories', clause[1], value))
62+
        res.append(('categories', clause[1], value))
63
        return res
64
65
Aikidoka()