Hello Massimo!

I send you the complete traceback (see the attach file).

Thanks a lot for web2py and your kindness for taking the time to look at 
that strange problem!

-- 



web2py™ administrative interface

    Site
    Edit
    About
    Errors
    Versioning
    Logout
    Debug
    Help

Error ticket for "mm"
Ticket ID

127.0.0.1.2012-11-14.19-52-34.bbc92967-4c0f-4038-8129-5e4e912b404f
<type 'exceptions.TypeError'> format requires a mapping
Version
web2py™         (2, 2, 1, datetime.datetime(2012, 10, 21, 16, 57, 4), 'stable')
Python  Python 2.7.3: /usr/bin/python
Traceback

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.

        

Traceback (most recent call last):
  File "/home/julien/web2py/gluon/restricted.py", line 212, in restricted
    exec ccode in environment
  File "/home/julien/web2py/applications/mm/controllers/default.py", line 291, 
in <module>
  File "/home/julien/web2py/gluon/globals.py", line 188, in <lambda>
    self._caller = lambda f: f()
  File "/home/julien/web2py/applications/mm/controllers/default.py", line 210, 
in user
    return dict(form=auth())
  File "/home/julien/web2py/gluon/tools.py", line 1235, in __call__
    return getattr(self, args[0])()
  File "/home/julien/web2py/gluon/tools.py", line 2095, in login
    self.log_event(log, user)
  File "/home/julien/web2py/gluon/tools.py", line 1692, in log_event
    origin=origin, user_id=user_id)
  File "/home/julien/web2py/gluon/dal.py", line 7806, in insert
    ret =  self._db._adapter.insert(self,self._listify(fields))
  File "/home/julien/web2py/gluon/dal.py", line 1155, in insert
    query = self._insert(table,fields)
  File "/home/julien/web2py/gluon/dal.py", line 1151, in _insert
    values = ','.join(self.expand(v,f.type) for f,v in fields)
  File "/home/julien/web2py/gluon/dal.py", line 1151, in <genexpr>
    values = ','.join(self.expand(v,f.type) for f,v in fields)
  File "/home/julien/web2py/gluon/dal.py", line 1306, in expand
    return str(self.represent(expression,field_type))
  File "/home/julien/web2py/gluon/dal.py", line 1720, in represent
    if obj == '' and not fieldtype[:2] in ['st', 'te', 'pa', 'up']:
  File "/home/julien/web2py/gluon/languages.py", line 363, in __eq__
    return str(self) == str(other)
  File "/home/julien/web2py/gluon/languages.py", line 360, in __str__
    self.T.translate(self.m, self.s))
  File "/home/julien/web2py/gluon/languages.py", line 878, in translate
    message = self.params_substitution(message, symbols)
  File "/home/julien/web2py/gluon/languages.py", line 855, in 
params_substitution
    message = message % symbols
TypeError: format requires a mapping

Error snapshot help

<type 'exceptions.TypeError'>(format requires a mapping)

inspect attributes
Frames

    File /home/julien/web2py/gluon/restricted.py in restricted at line 212 code 
arguments variables

    File /home/julien/web2py/applications/mm/controllers/default.py in <module> 
at line 291 code arguments variables

    File /home/julien/web2py/gluon/globals.py in <lambda> at line 188 code 
arguments variables

    File /home/julien/web2py/applications/mm/controllers/default.py in user at 
line 210 code arguments variables

    File /home/julien/web2py/gluon/tools.py in __call__ at line 1235 code 
arguments variables

    File /home/julien/web2py/gluon/tools.py in login at line 2095 code 
arguments variables

    File /home/julien/web2py/gluon/tools.py in log_event at line 1692 code 
arguments variables

    File /home/julien/web2py/gluon/dal.py in insert at line 7806 code arguments 
variables

    File /home/julien/web2py/gluon/dal.py in insert at line 1155 code arguments 
variables

    File /home/julien/web2py/gluon/dal.py in _insert at line 1151 code 
arguments variables

    File /home/julien/web2py/gluon/dal.py in <genexpr> at line 1151 code 
arguments variables

    File /home/julien/web2py/gluon/dal.py in expand at line 1306 code arguments 
variables

    File /home/julien/web2py/gluon/dal.py in represent at line 1720 code 
arguments variables

    File /home/julien/web2py/gluon/languages.py in __eq__ at line 363 code 
arguments variables

    File /home/julien/web2py/gluon/languages.py in __str__ at line 360 code 
arguments variables

    File /home/julien/web2py/gluon/languages.py in translate at line 878 code 
arguments variables

    File /home/julien/web2py/gluon/languages.py in params_substitution at line 
855 code arguments variables
    Function argument list

    (self=<gluon.languages.translator object>, message='User %(id)s Logged-in', 
symbols=("<Row \x1e'username': 'julien', 'first_name': 'Julie...f9da1adefd98', 
'registration_key': '', 'id': 12\x1f>",))
    Code listing

    850.
    851.
    852.
    853.
    854.
    855.

    856.
    857.
    858.
    859.

        

                if part == s:
                    part = regex_plural_dict.sub(sub_dict, s)
                    if part == s:
                        return m.group(0)
                return part
    message = message % symbols

            message = regex_plural.sub(sub_plural, message)
            return message

        def translate(self, message, symbols):

    Variables
    symbols     ("<Row \x1e'username': 'julien', 'first_name': 
'Julie...f9da1adefd98', 'registration_key': '', 'id': 12\x1f>",)
    message     'User %(id)s Logged-in'

Context

locals request session response
In file: /home/julien/web2py/applications/mm/controllers/default.py

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.

        

# -*- coding: utf-8 -*-


def _set_lang():
    #lang = request.vars._lang or session._lang or 'en'
    T.current_languages = ['en', 'en-en', 'en-us']
    
    if request.vars._lang:
        session._lang = request.vars._lang
    if session._lang:
        lang = session._lang
    elif T.accepted_language is not None:
        lang = T.accepted_language[:2]
    else:
        lang = 'en'
    T.force(lang)
    
    return lang

        
def __flatpage():
    lang = _set_lang()
    title = subtitle = body = ''
    flatpage_id = None
    form = ''
    view = DEFAULT_FLATPAGE_VIEW

    """
    if request.vars and auth.user and auth.user.email == FLATPAGES_ADMIN:
        record = db.flatpage(request.get_vars.id)
        form = SQLFORM(db.flatpage, record)
        if form.accepts(request, session):
            response.flash = T('Page saved')
        elif form.errors:
            response.flash = T('Errors!')
        else:
            response.flash = T('Edit Page')
    """
    
    if not form:
        # search flatpage according to the current request
        query = db.flatpage.c==request.controller
        query &= db.flatpage.f==request.function
        if request.args:
            query &= db.flatpage.args==request.args(0)
        else:
            query &= (db.flatpage.args==None)|(db.flatpage.args=='')
        query &= db.flatpage.lang==lang
        # execute the query, fetch one record (if any)
        flatpage = db(query).select(orderby=~db.flatpage.created_on, 
        limitby=(0, 1)).first()        
        if flatpage:
            flatpage_id = flatpage.id
            title = flatpage.title
            subtitle = flatpage.subtitle
            body = flatpage.body
            view = flatpage.view
        else:
            response.flash = T('Page Not Found!')
        """    
        if auth.user and auth.user.email == FLATPAGES_ADMIN:
            # if user is authenticated, show edit button:
            form = A(T('edit'), _href=URL(vars=dict(id=flatpage_id)))
        """
                                                    
    response.title = title
    response.subtitle = subtitle
    response.view = view
    body = XML(body)
    return dict(text_footer=TEXT_FOOTER, body=body, form=form)


def _add_visit():
    try:
        db(db.visitors.year == CURRENT_YEAR).update(visits = db.visitors.visits 
+ 1)
    except:
        db.visitors.insert(year = CURRENT_YEAR, visits = 1)

                
def index():
    lang = _set_lang()
    news = db(db.news.is_active == True).select(db.news.ALL, 
orderby=~db.news.id)
    nws = []
    
    for nw in news:
        if lang == 'en':
            nws.append((nw.title_en, nw.content_en))
        else:
            nws.append((nw.title_fr, nw.content_fr))
    
    response.view = 'index.html'            
    return dict(news=nws, lang=lang)

    
def contact_us():
    _set_lang()
    def queue_mail(form):
        db_email.queue.insert(email=EMAIL_SMM, 
                              replyto=form.vars.email,
                              subject=form.vars.subject, 
                              message=form.vars.message)
    
    crud.messages.submit_button = T('Send')
    form = crud.create(table=db_email.user_message, 
                       next=URL(),
                       onaccept=queue_mail,
                       message=T('Your message have been send'))
                      
    response.view = 'contact_us.html'
    return dict(form=form)


def other_websites():
    _set_lang()
    sites = db().select(db.website.ALL, orderby=db.website.description)
    response.view = 'other_websites.html'
    return dict(sites=sites)

    
def photos():
    lang = _set_lang()
    response.view = 'photos.html'
    return dict(lang=lang)


def mailing_list():
    response.view = 'mailing_list.html'
    return dict()


@auth.requires_membership('admin')
def sysadmin():
    response.view = 'sysadmin2.html'
    return dict()
    
       
def mother_meera():
    return __flatpage()

    
def darshan():
    return __flatpage()

    
def mm_society():
    return __flatpage()

    
def books():
    return __flatpage()

    
def quebec():
    return __flatpage()

    
def ontario():
    return __flatpage()

    
def alberta():    
    return __flatpage()

    
def bc():
    return __flatpage()

       
def donate():
    return __flatpage()


def donate_with_paypal():
    return dict()


def contact():
    return __flatpage()

    
def visit_mother():
    return __flatpage()

    
def organizing_darshan():
    return __flatpage()

    
def school_in_india():
    return __flatpage()

        
def meditation_group():            
    return __flatpage()

    
def children_weekend():
    return __flatpage()


def about():
    return __flatpage()

    
def error():
    return dict()


def user(): 
    return dict(form=auth())

    
def download(): 
    return response.download(request,db)

    
def call(): 
    return service()


#####################################################################################
def mail_subscribe():
    """
    username = request.post_vars.username
    email = request.post_vars.email
    
    # si email pas déjà dans la bd alors ajouter dans la bd
     
    """
    crud.messages.submit_button = T('Subscribe')

    form = crud.create( db.mail_list, 
                        next=URL('index'), 
                        message=T('You have been registered')
                      )

    """
    username = request.post_vars.username
    email = request.post_vars.email
    row = db(db.mail_list==email).select().first()
    if row == None:
        db.mail_list.insert(username=username, email=email)
        msg = T('email added')
    else:
        msg = T('email already there')
        
    """
        
    return dict(form=form)

def mail_unsubscribe():
    """
    _id = request.get_vars.id
    username = request.get_vars.username
    email = request.get_vars.email
    
    #décoder les attributs et modifier le champ is_active (=False)
    _id = request.get_vars.id
    db(db.mail_list.id==_id).update(is_active=False)
    
    #retourne un message d'info
    """ 
    
    return dict(username=username, email=email) 

@auth.requires_membership('admin')    
def send_mail():
    # encoder(id, username, email)
    # ajouter le lien suivant à la fin du message html:
    #   'a href="---/default/mail_unsubscribe/id=id&username=username&email">to 
unsubscribe</a>
    
    mails = db().select(db.mail_list.ALL)
    msg = db(db.message.mailed==False).select().first()
    for m in mails:
        mail.send(  to=[m.email], 
                    cc='j_court...@hotmail.com',
                    subject=msg.subject, 
                    message=[msg.body_text, XML(msg.body_html)]
                 )
    db(db.message.id==msg.id).update(mailed=True)     
    return dict(message=msg, mails=mails)    
    
@auth.requires_membership('admin')
def test_mail():
    mail.send(  to=['j_court...@hotmail.com'],
                subject='test',
                message=['test', '<html> test </html>']
             )
    return dict()

response._vars=response._caller(user)

Powered by web2py™ created by Massimo Di Pierro ©2007-2012 - Admin language

Reply via email to