def query(self, options, meeting_id): meeting = sugar.get_object_or_404(Meeting, id=meeting_id) search = options['search'] order_by = options.get('order_by') fields = [R('t1.id', 'id'), R('t1.data','data'), R('t2.category', 'category'), R('t2.data', 'meeting_data')] results = ( Person.select(fields).join(PersonMeeting) .where(meeting=meeting_id) .where(R('t2.data @> (%s)', {'request_funding': '1'})) .limit(options['limit']) .offset(options['offset']) ) if order_by and not options['count']: order_by_column = self.COLUMNS.get(order_by[0], order_by[0]) order_by_dir = order_by[1].upper() if order_by_column == 'category': results = results.order_by(("(t2.category)", order_by_dir)) else: results = results.order_by( ("(t2.data -> '%s')" % order_by_column, order_by_dir)) if search: search = sugar.util.rescape(unidecode(search.lower())) results = results.where(sugar.data_like('_text_for_search', search, table='t1')) if options['count']: return results.count() def render_column(person): if person.meeting_data.get('funding_accepted', False): return '<i class="icon-ok"></i>' def table_row(person, meeting): cat = sugar.get_person_category_or_404(meeting_id, category_id=person.category_id(meeting.id)) url = url_for('participant.view', meeting_id=meeting.id, person_id=person.id, from_page='funding.home') link = "<a href='%s'>%s</a>" % (jinja2.escape(url), person.name) return { 'id': person.id, 'name': link, 'category': cat.data['name_E'], 'funding_accepted': render_column(person), } return (table_row(person, meeting) for person in results)
def update_registered_date(): data = {'meeting_id': '111', 'staff_id': '', 'subject': 'add-participant'} for a in models.Activity.select().where(data__contains=data): if a.data['what_id']: print 'normal case %s' % a.data['what_id'] pm = models.PersonMeeting.select().where(meeting=111, person=a.data['what_id']).get() pm.data['registered_date'] = a.data['date'] pm.save() else: fields = [R('t1.id', 'id'),] search = rescape(unidecode(a.data['what'].lower())) p = (models.Person.select(fields).join(models.PersonMeeting) .where(meeting_id=111) .where(sugar.data_like('_text_for_search', search, table='t1')) ) if p.count() == 1: print 'special case %s' % a.data['what'] pm = models.PersonMeeting.select().where(meeting=111, person=p.get().id).get() pm.data['registered_date'] = a.data['date'] pm.save()