def postprocess_ac_record(self): context = aq_inner(self.context) report = self.report() ac_data = getattr(context, 'report_ac') ac_report = json.loads(ac_data) metric = report[1] table = metric['dataTable'] rows = table['rows'] for entry in ac_report[:50]: time_rec = entry['record_date']['mysql'] time_comps = time_rec.split('-') entry_date = '{0}.{1}.{2}'.format(time_comps[2], time_comps[1], time_comps[0]) new_row = { 'xd:trackingDate': entry_date, 'xd:trackingUserId': entry['user']['display_name'], 'xd:trackingSummary': entry['summary'], 'xd:trackingValue': entry['value'] } rows.append(new_row) table['rows'] = rows metric['dataTable'] = table stored = getattr(context, 'report') data = json.loads(stored) items = data['items'] items[1] = metric setattr(context, 'report', json.dumps(data)) modified(context) context.reindexObject(idxs='modified') msg = _(u"Built links data table was successfully updated") api.portal.show_message(msg, self.request) return msg
def update(self): context = aq_inner(self.context) self.errors = {} unwanted = ('_authenticator', 'form.button.Submit') required = ('title') if 'form.button.Submit' in self.request: authenticator = getMultiAdapter((context, self.request), name=u"authenticator") if not authenticator.verify(): raise Unauthorized form = self.request.form form_data = {} form_errors = {} errorIdx = 0 for value in form: if value not in unwanted: form_data[value] = safe_unicode(form[value]) if not form[value] and value in required: error = {} error['active'] = True error['msg'] = _(u"This field is required") form_errors[value] = error errorIdx += 1 else: error = {} error['active'] = False error['msg'] = form[value] form_errors[value] = error if errorIdx > 0: self.errors = form_errors else: self._create_dashboard(form)
def _clear_dashboard_asignment(self, data): context = aq_inner(self.context) user = api.user.get(username=self.user_id) properties = dict( dashboard='', ) user.setMemberProperties(properties) IStatusMessage(self.request).addStatusMessage( _(u"Dashboard acces has been revoked"), type='info') base_url = context.absolute_url() params = '/@@manage-users?user={0}'.format(self.user_id) next_url = base_url + params return self.request.response.redirect(next_url)
def _update_dashboard_asignment(self, data): context = aq_inner(self.context) user = api.user.get(username=self.user_id) properties = {'dashboard': data['dashboard']} user.setMemberProperties(mapping=properties) dashboard = uuidToObject(data['dashboard']) api.user.grant_roles( username=self.user_id, roles=['Reader'], obj=dashboard ) IStatusMessage(self.request).addStatusMessage( _(u"User has been granted dashboard access"), type='info') base_url = context.absolute_url() params = '/@@manage-users?user={0}'.format(self.user_id) next_url = base_url + params return self.request.response.redirect(next_url)
def ga_record(self): context = aq_inner(self.context) report = self.report() ga_queries = { 'keywords': 5, 'referral': 6 } for qt in ga_queries: report_index = ga_queries[qt] ga_report = self.build_report_ga() metric = report[report_index] table = metric['dataTable'] rows = table['rows'] cols = table['cols'] if 'totalsForAllResults' in ga_report: first_row = ga_report['totalsForAllResults'] first_row['ga:keyword'] = 'totalsForAllResults' rows.append(first_row) if 'dataTable' in ga_report: data_table = ga_report['dataTable'] dt_rows = data_table['rows'] for r in dt_rows: item = {} row_columns = r['c'] for x in range(7): item_key = cols[x]['id'] item[item_key] = row_columns[x]['v'] rows.append(item) table['rows'] = rows metric['dataTable'] = table stored = getattr(context, 'report') data = json.loads(stored) items = data['items'] items[report_index] = metric setattr(context, 'report', json.dumps(data)) modified(context) context.reindexObject(idxs='modified') msg = _(u"Report data table was successfully updated") api.portal.show_message(msg, self.request) return msg