source: WAeUP_SRP/base/skins/waeup_upload/uploads_index.py @ 3293

Last change on this file since 3293 was 3293, checked in by Henrik Bettermann, 17 years ago

improve logging

render form in create mode

  • Property svn:keywords set to Id
File size: 4.6 KB
Line 
1## Script (Python) "uploads_index"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=
8##title=
9##
10# $Id:uploads_index.py 486 2006-09-06 10:09:39Z joachim $
11"""
12return Info about the Uploads
13"""
14import DateTime
15import logging
16logger = logging.getLogger('Skins.upload_index')
17
18
19try:
20    from Products.zdb import set_trace
21except:
22    def set_trace():
23        pass
24request = context.REQUEST
25
26wf = context.portal_workflow
27mtool = context.portal_membership
28member = mtool.getAuthenticatedMember()
29
30path_info = request.get('PATH_INFO').split('/')
31NO_KEY = '----'
32info = {}
33info['action'] = "%s" % context.absolute_url()
34info['choosen_ids'] = request.get('ids',[])
35info['doc'] = context.getContent()
36
37edit = request.form.has_key('edit')
38ids = request.get('ids',[])
39#set_trace()
40if edit and ids:
41    for long_id in ids:
42        short_id = long_id.replace('.csv','')
43        doc = getattr(context, long_id).getContent()
44        import_layout =  request.form.get(short_id)['import_layout']
45        logger.info('%s set import layout of object %s to %s' % (member,long_id,import_layout))
46        doc.edit(mapping = request.form[short_id])
47        msg, invalid_keys = doc['checkKeys']()
48        new_keys = []
49        for key in invalid_keys:
50            id_key = "%s|%s" % (short_id,key)
51            if request.form.has_key(id_key):
52                new_key = request.form.get(id_key)['valid_key']
53                if new_key != NO_KEY:
54                    new_keys += (key,new_key),
55        if new_keys:
56            doc.editHeadline(new_keys)
57            for key in new_keys:
58                logger.info('%s changed column heading in file %s from %s to %s' % (member,long_id,key[0],key[1]))
59        request.RESPONSE.redirect(context.absolute_url())
60
61wrong = []
62imported = []
63importable = []
64for id,upload in context.objectItems():
65    add_to = wrong
66    row = {}
67    doc = upload.getContent()
68    row['valid_keys'] = doc['getKeys']()
69    row['valid_keys'][0] = NO_KEY
70    row['id'] = id.replace('.csv','')
71    row['title'] = doc.filename
72    row['url'] = upload.absolute_url()
73    row['imported'] = False
74    row['invalid_keys'] = []
75    import_message = getattr(doc,'import_message','')
76    if import_message:
77        row['imported'] = True
78        row['msg'] = import_message
79        row['imported_at'] = doc.imported_at.strftime("%d/%m/%y %H:%M:%S")
80        add_to = imported
81    else:
82        row['msg'],row['invalid_keys'] = doc['checkKeys']()
83        if not row['msg'] and not row['invalid_keys']:
84            add_to = importable
85    row['filename'] = doc.filename
86    row['import_layout'] = doc.import_layout
87    row['upload_date'] =  doc.upload_date.strftime("%d/%m/%y %H:%M:%S")
88    row['uploaded_by'] = doc.uploaded_by
89    add_to.append(row)
90wrong.sort()
91imported.sort()
92importable.sort()
93info['wrong'] = wrong
94info['imported'] = imported
95info['importable'] = importable
96
97validate = "upload" in request.keys()
98mode = "create"
99res,psm,ds = context.portal_layouts.renderLayout(layout_id = 'upload',
100                             schema_id = 'upload',
101                             layout_mode = mode,
102                             context=context,
103                             mapping=validate and request,
104                             ob= {},
105                             commit = True,
106                            )
107while True:
108    if psm == 'invalid':
109        psm = "Please correct your input!"
110    # return context.uploads_form(rendered = res,
111    #                              psm = "Please correct your input!",
112    #                              mode = mode,
113    #                              ds = ds,
114    #                              info = info,
115    #                             )
116    elif psm == 'valid':
117        filename = ds['upload_file'].filename
118        if filename not in context.objectIds():
119            break
120        psm = "Upload object exists!"
121    return context.uploads_form(rendered = res,
122                                        psm = psm,
123                                        ds = ds,
124                                        mode = mode,
125                                        info = info,
126                                       )
127
128context.invokeFactory('Upload',filename)
129upload = getattr(context,filename)
130d = {}
131d['filename'] = d['id'] = filename
132d['upload_date'] =  DateTime.DateTime()
133d['import_layout'] = ds.get('import_layout','')
134d['uploaded_by'] = str(member)
135d['url'] = upload.absolute_url()
136upload.getContent().edit(mapping=d)
137logger.info('%s uploaded file %s in layout mode %s' % (member,filename,d['import_layout']))
138
139request.RESPONSE.redirect(context.absolute_url())
140
Note: See TracBrowser for help on using the repository browser.