Список видов наград
название
6 Диплом ЦК профсоюза и Государственного агропромышленного Комитета СССР
7 занесения на областную Доску Почета
2 Звание "Ветеран труда"
84 Звание "Ударник коммунистического труда"
57 Звание «Лучший по профессии»
4 Звание Герой Социалистического Труда
64 Знак "Победитель социалистического соревнования"
102 Знак "Ударник двенадцатой пятилетки"
82 Знак "Ударник девятой пятилетки"
100 Знак "Ударник десятой пятилетки"
101 Знак "Ударник одиннадцатой пятилетки"
10 Знак «40 лет стахановского движения»
11 Знак «За активную работу в профгруппе»
12 Знак «За активную работу в профсоюзах»
36 Знак «За работу без аварий»
37 Знак «За сбережение и приумножение лесных богатств РСФСР»
16 Знак «Отличник социалистического соревнования РСФСР»
97 Знак ВЦСПС "За достижения в самодеятельном искусстве"
13 Знак ВЦСПС «За отличную работу в культпросвет учреждениях профсоюзов»
14 Знак ВЦСПС «За укрепление содружества искусства и труда»
15 Знак ВЦСПС и ЦК ВЛКСМ «За активную работу по воспитанию детей и подростков»
78 Знак ЦК ВЛКСМ "Почетный знак ВЛКСМ"
17 Знак ЦК ВЛКСМ «50 лет с именем В.И. Ленина»
45 Знак ЦК ВЛКСМ «За активную работу по охране общественного порядка»
20 Знак ЦК ВЛКСМ «За отличие в труде»
всего содержит: 69 записей, страницы: «  1 2 3  »  весь список (3 стр.)  весь список (3 стр.)  добавить
добавление и редактирование списка наград
название
описание
весь список добавить

    Исходный код модуля /home/httpd/af-web.gaspiko.ru/cgi-bin/plugins2/nagrada_list.pyc

    # -*- coding: utf8 -*-
    SQL = """select SQL_CALC_FOUND_ROWS * from nagrada_view_list order by `name` asc limit %(offset)d,%(limit)d ;"""
    FOUND_ROWS = True
    ROOT = "nagrada_list"
    ROOT_PREFIX = ""
    ROOT_POSTFIX= None
    XSL_TEMPLATE = "data/af-web.xsl"
    EVENT = None
    WHERE = ()
    PARAM = None
    TITLE="Список видов наград"
    MESSAGE="ошибка получения списка наград"
    ORDER = None

    Исходный код модуля /home/httpd/af-web.gaspiko.ru/cgi-bin/app2.py

    #!/usr/bin/env python
    #
    #       app2.py
    #
    #       Copyright 2010 Basmanov Illya 
    #
    #       This program is free software; you can redistribute it and/or modify
    #       it under the terms of the GNU General Public License as published by
    #       the Free Software Foundation; either version 2 of the License, or
    #       (at your option) any later version.
    #
    #       This program is distributed in the hope that it will be useful,
    #       but WITHOUT ANY WARRANTY; without even the implied warranty of
    #       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #       GNU General Public License for more details.
    #
    #       You should have received a copy of the GNU General Public License
    #       along with this program; if not, write to the Free Software
    #       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
    #       MA 02110-1301, USA.
    import sys
    import config

    #sys.stderr = sys.stdout
    #print "Content-Type: text/html; charset=utf8\n\n"

    import ffcgi
    import libs
    from user import user
    from base import bd_sql
    from xslt_proc import xml_xsl_proc

    plugin_dir = "plugins2"


    def load_module():
        if ffcgi.cgi_check_name("plugins"):
            module_name = ffcgi.cgi_value( "plugins" )
            return libs.load_module_name(module_name, plugin_dir)
        else:
            return None


    def load_env():
        data, page, limit = {}, 0, int(config.limit)
        if ffcgi.cgi_check_name("p"):
            page = int(ffcgi.cgi_value("p"))
        if ffcgi.cgi_check_name("l"):
            limit = int(ffcgi.cgi_value("l"))
        if ffcgi.cgi_check_name("plugins"):
            data["plugins"] = ffcgi.cgi_value( "plugins" )
        if ffcgi.cgi_value("ORDER_DIRECTION") in ("DESC", "ASC"):
            data["direction"] = ffcgi.cgi_value("ORDER_DIRECTION")
        else:
            data["direction"] = "DESC"
        data["page"] = page
        data["limit"] = limit
        data["offset"] = page * limit
        xml = user[3] +"%(page)d%(limit)d%(offset)d%(plugins)s%(direction)s"%data
        return data, xml

    def make_order(cgi_param):
        if cgi_param is not None:
            order = []
            direction = "DESC"
            if ffcgi.cgi_value("ORDER_DIRECTION") in ("DESC", "ASC"):
                direction = ffcgi.cgi_value("ORDER_DIRECTION")
            for param in cgi_param:
                if ffcgi.cgi_value("ORDER") == param:
                    value = param
                    if type(value) == list:
                        order.append( ", ".join(["`%s`"%v for v in value]) )
                    elif type(value) == str:
                        order.append( "`%s`"%value )
                    return " ORDER BY %s %s"%(",".join(order), direction)
        return ""


    def make_where(cgi_param, IF_ID_DOMEN=None):
        if cgi_param is None:
            return ""
        where = []
        where_like = []
        if IF_ID_DOMEN is not None:
            where.append(IF_ID_DOMEN)
        if ffcgi.cgi_check_name("WHERE_LIKE"):
            where_like = ffcgi.cgi_value("WHERE_LIKE")
        for param in cgi_param:
            if ffcgi.cgi_check_name(param):
                value = ffcgi.cgi_value(param)
                if type(value) == list:
                    param = param.replace('.','`.`')
                    if ffcgi.cgi_check_name("BETWEEN") and len(value)==2:
                        where.append( "`%s` BETWEEN %s AND %s"%(param, value[0], value[1] ))
                    else:
                        where.append( "`%s` IN (%s)"%(param, ", ".join(["'%s'"%v for v in value])) )
                elif type(value) == str or type(value) == int :
                    if param in where_like:
                        param = param.replace('.','`.`')
                        where.append( "`%s` LIKE '%%%s%%'"%(param, str(value)) )
                    else:
                        param = param.replace('.','`.`')
                        where.append( "`%s`='%s'"%(param, str(value)) )
                else:
                    pass
        if len(where):
            where = " AND ".join(where)
            return "WHERE "+where
        return ""

    def list_to_xml(listtx):
        txml = ""
        if listtx:
                for lx in listtx:
                    txml += "%s"%lx
        return txml

    def exec_sql(module, data, sql, root):
        xml = ""
        try:
            sql = sql%data
            if ffcgi.cgi_check_name("SQL"):
                print sql, ""
            if bd_sql.execute( sql, module.TITLE ):
                txml = bd_sql.get_xml( event = module.EVENT)
                if module.FOUND_ROWS:
                    if bd_sql.execute( "select found_rows() as count;" ):
                        txml += bd_sql.get_xml("all_count")
                xml = "<%s>%s"%(root, txml, root)
            else:
                if module.ROOT_POSTFIX:
                    xml += module.ROOT_POSTFIX
                xml += libs.make_message( "%s"%libs.make_cdata(module.MESSAGE) + "%s"%libs.make_cdata(sql) )
        except Exception, e:
            xml += libs.make_message( "%s: %s"%libs.make_cdata(module.MESSAGE, e) )
        return xml

    def exec_sql_json(module, data, sql, root):
        json_data = {root: {}, }
        try:
            sql = sql%data
            if ffcgi.cgi_check_name("SQL"):
                print sql, ""
            if bd_sql.execute( sql, module.TITLE ):
                json_data[root]["row"] = bd_sql.get_row()
                if module.FOUND_ROWS:
                    if bd_sql.execute( "select found_rows() as count;" ):
                        json_data[root]["all_count"] = bd_sql.get_row()[0][0]
            else:
                json_data[root]['error-message'] = module.MESSAGE
                json_data[root]['error-sql'] = sql
        except Exception, e:
            json_data[root]['error-message'] = module.MESSAGE
            json_data[root]['error-sql'] = sql
        return json_data

    def main():

        module = load_module()
        if module:
            data, xml = load_env()
            xml += ffcgi.cgi_xml() + "%s"%list_to_xml(module.WHERE)
            if_id_domen = None
            if "IF_ID_DOMEN" in dir(module):
                if_id_domen = module.IF_ID_DOMEN
            data["where"] = make_where(module.WHERE, if_id_domen)
            data["order"] = make_order(module.ORDER)
            xml += "%s"%module.TITLE


            if module.PARAM:
                txml = ""
                for param in module.PARAM:
                    if ffcgi.cgi_check_name(param):
                        value = ffcgi.cgi_value(param)
                        if type(value) == list:
                            for v in value:
                                data[param] = v
                                txml += "<%s>%s"%(param, libs.make_str_cdata( v ), param)
                        elif type(value) == str:
                            data[param] = value
                            txml += "<%s>%s"%(param, libs.make_str_cdata(value), param)
                xml += "%s"%txml

            if module.ROOT_PREFIX:
                xml += module.ROOT_PREFIX

            if ffcgi.cgi_check_name("cmd") and ffcgi.cgi_value("cmd")=="add":
                xml += "<%s />"%module.ROOT
            elif ffcgi.cgi_check_name("format"):
                # output format JSON
                try:
                    from json import dumps
                except:
                    from simplejson import dumps
                json_data = {module.ROOT:  [exec_sql_json(module, data, sql = module.SQL[i][1], root = module.SQL[i][0]) for i in range(0, len(module.SQL))][0]}
                print dumps( json_data )
                return
            else:
                if type(module.SQL)==str:
                    xml += exec_sql(module, data, module.SQL, module.ROOT)
                else:
                    xml += "<%s>%s"%(module.ROOT, "\n\t\t".join([exec_sql(module, data, sql = module.SQL[i][1], root = module.SQL[i][0]) for i in range(0, len(module.SQL))]), module.ROOT)



            if ffcgi.cgi_check_name("dbg"):
                xml += bd_sql.history()

            if ffcgi.cgi_check_name("src"):
                def make_source(filename):
                    return filename, libs.make_str_cdata(open(".".join(filename.split('.')[:-1])+".py").read().replace(" "," "))
                xml += "%s%s"%make_source(module.__file__)
                xml += "%s%s"%make_source(__file__)


            xml = "%s"%xml.replace('\0','')
            libs.save_xml(xml, module.__file__ )

            try:
                print xml_xsl_proc(xml,fxsl=module.XSL_TEMPLATE)
            except Exception, e:
                print e

        else:
            print "no define module"
        return 0

    if __name__ == '__main__':
        try:
            main()
        except Exception, e:
                print e

    Отладочная информация

    список sql запросов страницы

    1. INSERT INTO session (UID,HASH,REFERER,UAGENT,date,id_domen) VALUES(0,'guest-7055836409475885151','','webkit/None',now(),@id_domen)#созадём новую сессию для ананимоуса
    2. select SQL_CALC_FOUND_ROWS * from nagrada_view_list order by `name` asc limit 0,25 ;#Список видов наград
    3. select found_rows() as count;#

    список CGI параметров

    параметр значение
    src show
    dbg show
    plugins nagrada_list