def test_new_member (self): # @todo use apps.support.add_new_member filename = rootdir ('db', 'newmembers') open (filename, 'w').close() # clear file born = datetime.date (1977, 01, 20) data = { u'choice': u'1', u'name': u'Arne And', #u'born': u'1977-01-20', #u'born': u'20/01/77', # @todo test all date formats? u'born': unicode (born.strftime('%d/%m/%y')), u'address1': u'Portveien 2', u'address2': u'', u'city': u'Oslo', u'zipcode': u'1234', u'email': u'*****@*****.**', u'phone': u'', u'enrolled': unicode (datetime.date.today().strftime('%Y-%m-%d')), u'comment': u'line one\nline two\nthe end', u'extra': [u'1', u'3', u'5'], } res = self.client.post (reverse('enroll'), data) self.assertEqual (res.status_code, 200) # @note will get 200 even if form not valid. must check for validation error message obj = json.load (open(filename)) data.update (born = unicode (born.strftime('%Y-%m-%d'))) # date is read back in iso format self.assertEqual (data, obj)
import json from website.settings import rootdir # File object to write new members to. Use add_new_member() instead # of directly writing to this file. try: _new_member_fp = open (rootdir ('db', 'newmembers'), 'a') except IOError, ex: import logging logging.critical ('Can not open newmembers file: ' + ex.strerror) #logging.critical ('Can not open newmembers file: ' + str(ex)) # @todo pass exception # @todo move to core.members? # @todo filter/remove empty elements? def add_new_member (data): '''Add a new member. Data is a dict''' data['born'] = data['born'].strftime ('%F') # json don't handle datetime objects, so convert to string #data['born'] = str (data['born']) # does the same as above (i think) fp = _new_member_fp json.dump (data, fp) fp.write ('\n') fp.flush()