Esempio n. 1
0
    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)
Esempio n. 2
0
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()