Ejemplo n.º 1
0
    def GET(self):
        params = web.input(page=1)
        try:
            page = int(params.page)
        except:
            page = 1
        session = get_session()
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        dic = lit(relations='servers',
                  fields="*",
                  criteria="",
                  order="id desc",
                  limit=limit,
                  offset=start)
        servers = doquery(db, dic)
        servers2 = doquery(db, dic)

        dic = lit(relations='requests_view',
                  fields="*",
                  criteria=session.criteria,
                  order="id desc",
                  limit=limit,
                  offset=start)
        res = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "search", "?page=")

        l = locals()
        del l['self']
        return render.search(**l)
Ejemplo n.º 2
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if params.ed:
            r = db.query(
                "SELECT a.id, a.firstname, a.lastname, a.username, a.email, a.telephone, "
                "a.is_active, b.id as role, b.name role_name "
                "FROM users a, user_roles b "
                "WHERE a.id = $id AND a.user_role = b.id", {'id': params.ed})
            if r and (session.role == 'Administrator' or '%s' % session.sesid == edit_val):
                u = r[0]
                firstname = u.firstname
                lastname = u.lastname
                telephone = u.telephone
                email = u.email
                username = u.username
                user_role = u.role
                role_name = u.role_name
                is_active = u.is_active
                is_super = True if u.role == 'Administrator' else False

        if params.d_id:
            if session.role == 'Administrator':
                db.query("DELETE FROM users WHERE id=$id", {'id': params.d_id})

        roles = db.query("SELECT id, name FROM user_roles ORDER by name")
        current_role_id = userRolesByName[session.role]
        criteria = ""
        if session.role == 'Administrator':
            dic = lit(
                relations='users a, user_roles b',
                fields="a.id, a.firstname, a.lastname, a.username, a.email, a.telephone, b.name as role ",
                criteria="a.user_role = b.id",
                order="a.firstname, a.lastname",
                limit=limit, offset=start)
        else:
            dic = lit(
                relations='users a, user_roles b',
                fields="a.id, a.firstname, a.lastname, a.username, a.email, a.telephone, b.name as role ",
                criteria="a.user_role = b.id AND a.id=%s" % session.sesid,
                order="a.firstname, a.lastname",
                limit=limit, offset=start)

        users = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2, "users", "?page=")
        l = locals()
        del l['self']
        return render.users(**l)
Ejemplo n.º 3
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if session.role == 'District User':
            district = '%s' % session.username.capitalize()
            if session.username in getattr(settings, 'NATIONAL_USERS', []):
                criteria = "report_type IN %s" % (
                    getattr(settings, 'MTRAC_FORMS', str(
                        ('cases', 'death', 'epc', 'epd', 'tra', 'arv', 'tpt', 'tb', 'gp', 'apt', 'mat'))))
            else:
                criteria = "district SIMILAR TO '%%(%s)%%' AND report_type IN %s" % (
                    session.districts_string, getattr(settings, 'MTRAC_FORMS', str(
                        ('cases', 'death', 'epc', 'epd', 'tra', 'arv', 'tpt', 'tb', 'gp', 'apt', 'mat'))))
            dic = lit(
                relations='requests_view',
                fields=(
                    "id, facility, facility_name, district, msisdn, body, status, source, "
                    "raw_msg, year, week, created, report_type, is_edited, edited_raw_msg"),
                criteria=criteria,
                order="id desc",
                limit=limit, offset=start)
        else:
            criteria = "report_type IN %s" % (getattr(settings, 'MTRAC_FORMS', str(
                ('cases', 'death', 'epc', 'epd', 'tra', 'arv', 'ip', 'tb', 'gp', 'apt', 'mat'))))
            dic = lit(
                relations='requests_view',
                fields=(
                    "id, facility, facility_name, district, msisdn, body, status, source, "
                    "raw_msg, year, week, created, report_type, is_edited, edited_raw_msg"),
                criteria=criteria,
                order="id desc",
                limit=limit, offset=start)

        reports = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2, "archive", "?page=")

        l = locals()
        del l['self']
        return render.archive(**l)
Ejemplo n.º 4
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1

        limit = settings.PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if session.role == 'District User':
            district = '%s' % session.username.capitalize()
            if session.username in getattr(settings, 'NATIONAL_USERS', []):
                criteria = " TRUE "
            else:
                criteria = "district SIMILAR TO '%%(%s)%%'" % session.districts_string
            dic = lit(
                relations='rejected_reports_view',
                fields=
                ("id, facility, facility_name, district, msisdn, body, source, "
                 "raw_msg, year, week, created, report_type, is_edited, edited_raw_msg"
                 ),
                criteria=criteria,
                order="id desc",
                limit=limit,
                offset=start)
        else:
            dic = lit(
                relations='rejected_reports_view',
                fields=
                ("id, facility, facility_name, district, msisdn, body, source, "
                 "raw_msg, year, week, created, report_type, is_edited, edited_raw_msg"
                 ),
                # criteria="status='pending'",
                order="id desc",
                limit=limit,
                offset=start)

        reports = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "rejected", "?page=")

        l = locals()
        del l['self']
        return render.rejected(**l)
Ejemplo n.º 5
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1
        roles = db.query(
            "SELECT id, name from reporter_groups WHERE name "
            "IN ('VHT', 'HC', 'Incharge', 'Records Assistant') order by name")
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0
        if session.role == 'District User':
            criteria = "district='%s'" % session.username.capitalize()
        else:
            criteria = ""
        dic = lit(
            relations='healthfacilities',
            fields="id, name, type_id, district, location_name, is_033b, code",
            criteria=criteria,
            order="district, name asc",
            limit=limit,
            offset=start)
        facilities = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "facilities", "?page=")

        l = locals()
        del l['self']
        return render.facilities(**l)
Ejemplo n.º 6
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0
        if session.role == 'District User':
            criteria = "district='%s'" % session.username.capitalize()
        else:
            criteria = ""
        dic = lit(
            relations='facilities', fields="id, name, dhis2id, district, subcounty, is_033b, level, ldate",
            criteria=criteria,
            order="district, subcounty, name asc",
            limit=limit, offset=start)
        facilities = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2, "fsync", "?page=")

        l = locals()
        del l['self']
        return render.fsync(**l)
Ejemplo n.º 7
0
    def GET(self):
        params = web.input(page=1)
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0
        # we start getting requests a month old
        t = cal.parse("2 month ago")[0]
        amonthAgo = '%s-%s-%s' % (t.tm_year, t.tm_mon, t.tm_mday)

        dic = lit(relations='requests',
                  fields="*",
                  criteria="status='failed' AND created > '%s'" % (amonthAgo),
                  order="id desc",
                  limit=limit,
                  offset=start)
        res = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "failed", "?page=")

        l = locals()
        del l['self']
        return render.failed(**l)
Ejemplo n.º 8
0
    def GET(self, facilitycode):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        try:
            page = int(params.page)
        except:
            page = 1

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        dic = lit(
            relations='requests_view',
            fields=
            "id, facility, facility_name, district, msisdn, body, raw_msg, year, week, created",
            criteria="facility='%s'" % facilitycode,
            order="id desc",
            limit=limit,
            offset=start)

        reports = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "", "?page=")

        l = locals()
        del l['self']
        return render.facilityreports(**l)
Ejemplo n.º 9
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if session.role == 'District User':
            district = '%s' % session.username.capitalize()
            criteria = "district='%s'" % district
            dic = lit(
                relations='requests_view',
                fields=
                ("id, facility, facility_name, district, msisdn, body, "
                 "raw_msg, year, week, created, report_type, is_edited, edited_raw_msg"
                 ),
                criteria=criteria +
                " AND status='pending' AND report_type IN ('ras', 'car')",
                order="id desc",
                limit=limit,
                offset=start)
        else:
            dic = lit(
                relations='requests_view',
                fields=
                ("id, facility, facility_name, district, msisdn, body, "
                 "raw_msg, year, week, created, report_type, is_edited, edited_raw_msg"
                 ),
                criteria="status='pending' AND report_type IN ('ras', 'car')",
                order="id desc",
                limit=limit,
                offset=start)

        reports = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "caramalreports", "?page=")

        l = locals()
        del l['self']
        return render.caramal(**l)
Ejemplo n.º 10
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")

        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0
        topics = TOPICS
        action_centers = ACTION_CENTERS

        session = get_session()
        if session.role == 'District User':
            district_id = allDistrictsByName['%s' %
                                             session.username.capitalize()]
            criteria = "districtid = %s" % district_id
            dic = lit(
                relations="anonymousreports_view",
                fields=(
                    "id, facility, district, created, report, action, topic, "
                    "action_taken, action_center, comment"),
                criteria=criteria,
                order="id desc",
                limit=limit,
                offset=start)
        else:
            criteria = ""
            dic = lit(
                relations="anonymousreports_view",
                fields=(
                    "id, facility, district, created, report, action, topic, "
                    "action_taken, action_center, comment"),
                criteria=criteria,
                order="id desc",
                limit=limit,
                offset=start)

        anonymous_reports = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "hotline", "?page=")
        l = locals()
        del l['self']
        return render.hotline(**l)
Ejemplo n.º 11
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="", search="", subcounty="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0
        if session.role == 'District User':
            districts_SQL = (
                "SELECT id, name FROM locations WHERE id = "
                "ANY('%s'::INT[]) ORDER BY name" % session.districts_array)
            # criteria = "district='%s'" % session.username.capitalize()
            criteria = "is_active = 't' AND district_id = ANY('%s'::INT[]) " % session.districts_array
            if params.search:
                criteria += (" AND name ilike '%%%%%s%%%%' " % params.search )

            if params.subcounty:
                criteria += ( " AND location = %s " % params.subcounty)

        else:
            districts_SQL = (
                "SELECT id, name FROM locations WHERE type_id = "
                "(SELECT id FROM locationtype WHERE name = 'district') ORDER by name")
            criteria = " is_active = 't' "

            if params.search:
                criteria += (" AND name ilike '%%%%%s%%%%' " % params.search )

            if params.subcounty:
                criteria += ( " AND location = %s " % params.subcounty)

        dic = lit(
            relations='healthfacilities', fields="id, name, type_id, district, location_name, is_033b, code, last_reporting_date",
            criteria=criteria,
            order="district, name asc",
            limit=limit, offset=start)
        facilities = doquery(db, dic)
        facilitiesx = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2, "facilities", "?page=")

        districts_1 = db.query(districts_SQL)
        districts_2 = db.query(districts_SQL)
        district = {}

        l = locals()
        del l['self']
        return render.facilities(**l)
Ejemplo n.º 12
0
    def POST(self):
        session = get_session()
        username = session.username
        params = web.input(page=1, reqid=[])
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        with db.transaction():
            if params.abtn == 'Cancel Selected':
                if params.reqid:
                    for val in params.reqid:
                        db.update('requests',
                                  where="id = %s" % val,
                                  status='canceled',
                                  updated='NOW()')
                    log_dict = {
                        'logtype':
                        'Web',
                        'action':
                        'Cancel Requests',
                        'actor':
                        username,
                        'ip':
                        web.ctx['ip'],
                        'descr':
                        'User %s canceled %s request(s)' %
                        (username, len(params.reqid)),
                        'user':
                        session.sesid
                    }
                    audit_log(db, log_dict)
                db.transaction().commit()
                return web.seeother("/ready")
        dic = lit(relations='requests',
                  fields="*",
                  criteria="status='ready'",
                  order="id desc",
                  limit=limit,
                  offset=start)
        res = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "ready", "?page=")

        l = locals()
        del l['self']
        return render.ready(**l)
Ejemplo n.º 13
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        allow_edit = False

        try:
            edit_val = int(params.ed)
            allow_edit = True
        except ValueError:
            pass
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if params.ed and allow_edit:
            res = db.query(
                "SELECT id, description, shortname, slug, cmd, form, form_order, dataset, dataelement, "
                "category_combo, threshold FROM dhis2_mtrack_indicators_mapping WHERE id = $id",
                {'id': edit_val})
            if res:
                r = res[0]
                name = r.description
                shortname = r.shortname
                slug = r.slug
                cmd = r.cmd
                form = r.form
                form_order = r.form_order
                dataset = r.dataset
                dataelement = r.dataelement
                category_combo = r.category_combo
                threshold = r.threshold

        dic = lit(
            relations="dhis2_mtrack_indicators_mapping",
            fields=(
                "id, description, shortname, slug, form, form_order, cmd, dataset, "
                "dataelement, category_combo "),
            criteria="",
            order="dataset, form, form_order",
            limit=limit, offset=start
        )
        mappings = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2, "indicators", "?page=")

        l = locals()
        del l['self']
        return render.indicators(**l)
Ejemplo n.º 14
0
    def GET(self):
        params = web.input(page=1)
        try:
            page = int(params.page)
        except:
            page = 1
        session = get_session()
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        dic = lit(relations='servers',
                  fields="*",
                  criteria="",
                  order="id desc",
                  limit=limit,
                  offset=start)
        servers = doquery(db, dic)
        servers2 = doquery(db, dic)

        report_types = db.query(
            "SELECT distinct(form) AS form FROM dhis2_mtrack_indicators_mapping ORDER BY form"
        )
        dic = lit(relations='requests_view',
                  fields="*",
                  criteria=session.criteria,
                  order="id desc",
                  limit=limit,
                  offset=start)
        res = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "search", "?page=")

        l = locals()
        del l['self']
        return render.search(**l)
Ejemplo n.º 15
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="")
        edit_val = params.ed
        session = get_session()
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if params.ed:
            r = db.query(
                "SELECT id, name, descr FROM user_roles WHERE id = $id",
                {'id': params.ed})
            if r and (session.role == 'Administrator'):
                g = r[0]
                name = g.name
                description = g.descr

                permission_ids = []
                rx = db.query(
                    "SELECT permission_id AS id FROM user_role_permissions WHERE user_role = $user_role ",
                    {'user_role': params.ed})
                for p in rx:
                    permission_ids.append(p['id'])

        if params.d_id:
            if session.role == 'Administrator':
                pass
                # db.query("DELETE FROM user_role_permissions WHERE user_role=$id", {'id': params.d_id})
                # db.query("DELETE FROM user_roles WHERE id=$id", {'id': params.d_id})

        dic = lit(relations='user_roles',
                  fields='id, name, descr',
                  criteria='',
                  order='name',
                  limit=limit,
                  offset=start)

        groups = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "groups", "?page=")
        l = locals()
        del l['self']
        return render.groups(**l)
Ejemplo n.º 16
0
    def GET(self):
        params = web.input(page=1)
        try:
            page = int(params.page)
        except:
            page = 1

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        dic = lit(
            relations='requests', fields="*",
            criteria="status='completed'",
            order="id desc",
            limit=limit, offset=start)
        res = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2, "completed", "?page=")

        l = locals()
        del l['self']
        return render.completed(**l)
Ejemplo n.º 17
0
    def GET(self):
        params = web.input(page=1,
                           ed="",
                           d_id="",
                           caller="web",
                           search="",
                           show="")
        edit_val = params.ed
        search_field = params.search
        show = params.show
        session = get_session()
        if session.role == 'District User':
            districts_SQL = (
                "SELECT id, name FROM locations WHERE type_id = "
                "(SELECT id FROM locationtype WHERE name = 'district') "
                "AND name = '%s'" % session.username.capitalize())
        else:
            districts_SQL = (
                "SELECT id, name FROM locations WHERE type_id = "
                "(SELECT id FROM locationtype WHERE name = 'district') ORDER by name"
            )

        districts = db.query(districts_SQL)
        district = {}
        roles = db.query("SELECT id, name from reporter_groups order by name")
        allow_edit = False

        try:
            edit_val = int(params.ed)
            allow_edit = True
        except ValueError:
            pass
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if params.ed and allow_edit:
            res = db.query(
                "SELECT id, firstname, lastname, gender, telephone, "
                "reporting_location, role, alternate_tel, facilityid, facility, code, date_of_birth, "
                "national_id, created, loc_name FROM reporters_view1 "
                " WHERE id = $id", {'id': edit_val})
            if res:
                r = res[0]
                reporter_id = edit_val
                firstname = r.firstname
                lastname = r.lastname
                gender = r.gender
                telephone = r.telephone
                national_id = r.national_id
                role = r.role.split(',')
                alt_telephone = r.alternate_tel
                location = r.reporting_location
                parish = ""
                subcounty = ""
                facilityid = r.facilityid
                facility = r.facility
                facilityname = r.facility
                code = r.code
                date_of_birth = r.date_of_birth
                district = ""
                village = ""
                villagename = r.loc_name
                subcounties = []
                ancestors = db.query(
                    "SELECT id, name, level FROM get_ancestors($loc) "
                    "WHERE level > 1 ORDER BY level DESC;", {'loc': location})
                if ancestors:
                    for loc in ancestors:
                        if loc['level'] == 4:
                            parish = loc
                            parishname = loc['name']
                            villages = db.query(
                                "SELECT id, name FROM get_children($id)",
                                {'id': loc['id']})
                        if loc['level'] == 3:
                            subcounty = loc
                            subcountyname = loc['name']
                            parishes = db.query(
                                "SELECT id, name FROM get_children($id)",
                                {'id': loc['id']})
                        elif loc['level'] == 2:
                            district = loc
                            districtname = loc['name']
                            subcounties = db.query(
                                "SELECT id, name FROM get_children($id)",
                                {'id': loc['id']})
                else:
                    district = location
                location_for_facilities = subcounty.id if subcounty else district.id

                if location_for_facilities:
                    facilities = db.query(
                        "SELECT id, name FROM healthfacilities WHERE location=$loc",
                        {'loc': location_for_facilities})
                if facilityid:
                    facility = r.facility

        allow_del = False
        try:
            del_val = int(params.d_id)
            allow_del = True
        except ValueError:
            pass
        if params.d_id and allow_del:
            if session.role in ('District User', 'Administrator'):
                reporter = db.query(
                    "SELECT firstname || ' ' || lastname as name, telephone "
                    "FROM reporters WHERE id = $id", {'id': params.d_id})
                if reporter:
                    rx = reporter[0]
                    log_dict = {
                        'logtype':
                        'Web',
                        'action':
                        'Delete',
                        'actor':
                        session.username,
                        'ip':
                        web.ctx['ip'],
                        'descr':
                        'Deleted reporter %s:%s (%s)' %
                        (params.d_id, rx['name'], rx['telephone']),
                        'user':
                        session.sesid
                    }
                    # db.query("DELETE FROM reporter_groups_reporters WHERE reporter_id=$id", {'id': params.d_id})
                    # db.query("DELETE FROM reporter_healthfacility WHERE reporter_id=$id", {'id': params.d_id})
                    db.query("DELETE FROM schedules WHERE reporter_id=$id",
                             {'id': params.d_id})
                    db.query("DELETE FROM reporters WHERE id=$id",
                             {'id': params.d_id})
                    audit_log(db, log_dict)
                    if params.caller == "api":  # return json if API call
                        web.header("Content-Type",
                                   "application/json; charset=utf-8")
                        return json.dumps({'message': "success"})

        if session.role == 'District User':
            district_id = allDistrictsByName['%s' %
                                             session.username.capitalize()]
            criteria = "district_id=%s" % district_id
            if params.search:
                criteria += (
                    " AND (telephone ilike '%%%%%s%%%%' OR alternate_tel ilike '%%%%%s%%%%' OR "
                    "name ilike '%%%%%s%%%%')")
                criteria = criteria % (params.search, params.search,
                                       params.search)
                dic = lit(
                    relations='reporters_view1',
                    fields=
                    ("id, name, gender, telephone, district_id, alternate_tel, "
                     "facility, role, uuid, created "),
                    criteria=criteria,
                    order="facility, name",
                    limit=limit,
                    offset=start)
            else:
                dic = lit(
                    relations='reporters_view1',
                    fields=
                    ("id, name, gender, telephone, district_id, alternate_tel, "
                     "facility, role,  uuid, created "),
                    criteria=criteria,
                    order="id desc",
                    limit=limit,
                    offset=start)
        else:
            criteria = "TRUE "
            if params.search:
                criteria += (
                    " AND (telephone ilike '%%%%%s%%%%' OR alternate_tel ilike '%%%%%s%%%%' OR "
                    "name ilike '%%%%%s%%%%')")
                criteria = criteria % (params.search, params.search,
                                       params.search)
                dic = lit(
                    relations='reporters_view1',
                    fields=
                    ("id, name, gender, telephone, district_id, alternate_tel, "
                     "facility, role, uuid, created "),
                    criteria=criteria,
                    order="facility, name",
                    limit=limit,
                    offset=start)
            else:
                criteria = "id >  (SELECT max(id) - 250 FROM reporters)"
                dic = lit(
                    relations='reporters_view1',
                    fields=
                    ("id, name, gender, telephone, district_id, alternate_tel, "
                     "facility, role, uuid, created "),
                    criteria=criteria,
                    order="facility, name",
                    limit=limit,
                    offset=start)

        try:
            reporters = doquery(db, dic)
            count = countquery(db, dic)
        except:
            reporters = []
            count = 0
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "reporters", "?page=")
        l = locals()
        del l['self']
        return render.reporters(**l)
Ejemplo n.º 18
0
    def GET(self):
        params = web.input(page=1, ed="", d_id="", search="")
        edit_val = params.ed
        session = get_session()
        if session.role == 'District User':
            districts_SQL = ("SELECT id, name FROM locations WHERE id = "
                             "ANY('%s'::INT[]) ORDER BY name" %
                             session.districts_array)
        else:
            districts_SQL = (
                "SELECT id, name FROM locations WHERE type_id = "
                "(SELECT id FROM locationtype WHERE name = 'district') ORDER by name"
            )

        districts_1 = db.query(districts_SQL)
        districts_2 = db.query(districts_SQL)
        district = {}
        groups_2 = db.query("SELECT id, name FROM reporter_groups")

        allow_edit = False

        try:
            edit_val = int(params.ed)
            allow_edit = True
        except ValueError:
            pass
        try:
            page = int(params.page)
        except:
            page = 1
        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        if params.ed and allow_edit:
            r = db.query(
                "SELECT id, name, type, question, default_response, start_date "
                "FROM polls WHERE id=$id", {'id': params.ed})
            if r:
                p = r[0]
                name = p.name
                poll_type = p.type
                question = p.question
                default_response = p.default_response
                start_date = p.start_date
                if not start_date:
                    pass
                    # return
                group_ids = []
                rx = db.query(
                    "SELECT id FROM reporter_groups WHERE id IN "
                    "(select unnest(groups) from polls where id = $id)",
                    {'id': params.ed})
                for g in rx:
                    group_ids.append(g['id'])
                district_ids = []
                rx = db.query(
                    "SELECT id FROM locations WHERE id IN "
                    "(select unnest(districts) from polls where id = $id)",
                    {'id': params.ed})
                for d in rx:
                    district_ids.append(d['id'])

        allow_del = False
        try:
            del_val = int(params.d_id)
            allow_del = True
        except ValueError:
            pass
        if params.d_id and allow_del:
            if session.role == 'Administrator':
                db.query("DELETE FROM polls WHERE id=$id", {'id': params.d_id})

        if session.role == 'District User':
            criteria = "user_id = %s " % session.sesid
            if params.search:
                criteria += (" AND name ilike '%%%%%s%%%%' " % params.search)
                dic = lit(
                    relations='polls',
                    fields=
                    "id, name, question, start_date, end_date, response_count, recipient_count",
                    criteria=criteria,
                    order="id desc",
                    limit=limit,
                    offset=start)
            else:
                dic = lit(
                    relations="polls",
                    fields=
                    "id, name, question, start_date, end_date, response_count, recipient_count",
                    criteria=criteria,
                    order="id desc",
                    limit=limit,
                    offset=start)
        else:
            criteria = "TRUE "
            if params.search:
                criteria += (" AND name ilike '%%%%%s%%%%' " % params.search)
                dic = lit(
                    relations='polls',
                    fields=
                    "id, name, question, start_date, end_date, response_count, recipient_count",
                    criteria=criteria,
                    order="id desc",
                    limit=limit,
                    offset=start)
            else:
                dic = lit(
                    relations="polls",
                    fields=
                    "id, name, question, start_date, end_date, response_count, recipient_count",
                    criteria=criteria,
                    order="id desc",
                    limit=limit,
                    offset=start)

        polls = doquery(db, dic)
        polls_2 = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "polling", "?page=")
        l = locals()
        del l['self']
        return render.polls(**l)
Ejemplo n.º 19
0
    def POST(self):
        params = web.input(page=1,
                           reqid=[],
                           submissionid="",
                           body="",
                           sdate="",
                           edate="",
                           status="",
                           year="",
                           week="",
                           pbtn="",
                           msisdn="",
                           facility="")
        try:
            page = int(params.page)
        except:
            page = 1
        session = get_session()

        limit = PAGE_LIMIT
        start = (page - 1) * limit if page > 0 else 0

        dic = lit(relations='servers',
                  fields="*",
                  criteria="",
                  order="id desc",
                  limit=limit,
                  offset=start)
        servers = doquery(db, dic)
        servers2 = doquery(db, dic)

        with db.transaction():
            if params.pbtn == 'Retry Selected':
                if params.reqid:
                    for val in params.reqid:
                        db.update('requests',
                                  where="id = %s" % val,
                                  status='ready')
            if params.pbtn == 'Cancel Selected':
                if params.reqid:
                    for val in params.reqid:
                        db.update('requests',
                                  where="id = %s" % val,
                                  status='canceled')
            db.transaction().commit()

        criteria = "TRUE "
        if params.submissionid:
            criteria += " AND submissionid = %s" % params.submissionid
        if params.status:
            criteria += " AND status = '%s' " % params.status
        if params.sdate:
            criteria += " AND created >= '%s'" % params.sdate
        if params.edate:
            criteria += " AND created <= '%s'" % params.edate
        if params.week:
            criteria += " AND week = '%s'" % params.week
        if params.body:
            criteria += " AND body ILIKE '%%%s%%'" % params.body
        if params.year:
            criteria += " AND year = '%s'" % params.year
        if params.msisdn:
            criteria += " AND msisdn = '%s'" % params.msisdn
        if params.facility:
            criteria += " AND facility = '%s'" % params.facility
        if params.formatting:
            if params.formatting == "xml":
                criteria += " AND xml_is_well_formed_document(body)"

        print criteria
        if len(criteria) > 5:
            session.criteria = criteria
        dic = lit(relations='requests_view',
                  fields="*",
                  criteria=criteria,
                  order="id desc",
                  limit=limit,
                  offset=start)
        res = doquery(db, dic)
        count = countquery(db, dic)
        pagination_str = getPaginationString(default(page, 0), count, limit, 2,
                                             "search", "?page=")

        l = locals()
        del l['self']
        return render.search(**l)