예제 #1
0
def add_tt_table(env, db):
    """Migrate from template files to db."""
    
    cursor = db.cursor()


    # detect existing templates files
    allTmpls = _findAllTmpls(env)
    allTmpls.sort(_cmp)

    # import into db
    for tt_name in allTmpls:
        tt_text = _loadTemplateText(env, tt_name)
        modi_time = _getMTime(tt_name)
        
        from tickettemplate.model import TT_Template
        TT_Template.insert(env, tt_name, tt_text, modi_time)

    # base64
    # detect existing templates files
    allTmpls = _findAllTmplsBase64(env)
    allTmpls.sort(_cmpBase64)

    # import into db
    for tt_name in allTmpls:
        tt_text = _loadTemplateTextBase64(env, tt_name)
        modi_time = _getMTimeBase64(tt_name)
        
        from tickettemplate.model import TT_Template
        tt_name = base64.decodestring(tt_name).decode("utf-8")
        TT_Template.insert(env, tt_name, tt_text, modi_time)
예제 #2
0
def add_ticket_template_store(env, db):
    """Add table ticket_template_store."""
    from tickettemplate.model import schema, schema_version, TT_Template
    from trac.db import DatabaseManager

    connector, _ = DatabaseManager(env)._get_connector()
    cursor = db.cursor()

    table = schema[0]
    for stmt in connector.to_sql(table):
        try:
            cursor.execute(stmt)
        except:
            pass

    from default_templates import DEFAULT_TEMPLATES
    from ttadmin import SYSTEM_USER

    now = int(time.time())
    for tt_name, tt_value in DEFAULT_TEMPLATES:
        record = (now, SYSTEM_USER, tt_name, "description", tt_value,)
        TT_Template.insert(env, record)

    for id, modi_time, tt_name, tt_text in cursor.fetchall():
        record = (modi_time, SYSTEM_USER, tt_name, "description", tt_text,)
        TT_Template.insert(env, record)
def add_tt_table(env, db):
    """Migrate from template files to db."""

    # detect existing templates files
    allTmpls = _findAllTmpls(env)
    allTmpls.sort(_cmp)

    # import into db
    for tt_name in allTmpls:
        tt_text = _loadTemplateText(env, tt_name)
        modi_time = _getMTime(tt_name)

        from tickettemplate.model import TT_Template
        TT_Template.insert(env, tt_name, tt_text, modi_time)

    # base64
    # detect existing templates files
    allTmpls = _findAllTmplsBase64(env)
    allTmpls.sort(_cmpBase64)

    # import into db
    for tt_name in allTmpls:
        tt_text = _loadTemplateTextBase64(env, tt_name)
        modi_time = _getMTimeBase64(tt_name)

        from tickettemplate.model import TT_Template
        tt_name = base64.decodestring(tt_name).decode('utf-8')
        TT_Template.insert(env, tt_name, tt_text, modi_time)
예제 #4
0
    def environment_created(self):
        # Create the required tables
        db = self.env.get_db_cnx()
        connector, _ = DatabaseManager(self.env)._get_connector()
        cursor = db.cursor()
        for table in schema:
            for stmt in connector.to_sql(table):
                cursor.execute(stmt)

        # Insert a global version flag
        cursor.execute("INSERT INTO system (name,value) "
                       "VALUES ('tt_version',%s)", (schema_version,))

        # Create some default templates
        now = int(time.time())
        from default_templates import DEFAULT_TEMPLATES
        for tt_name, tt_value in DEFAULT_TEMPLATES:
            record = [
                now,
                SYSTEM_USER,
                tt_name,
                "description",
                tt_value,
                ]
            TT_Template.insert(self.env, record)
        
        db.commit()
예제 #5
0
    def environment_created(self):
        # Create the required tables
        db = self.env.get_db_cnx()
        connector, _ = DatabaseManager(self.env)._get_connector()
        cursor = db.cursor()
        for table in schema:
            for stmt in connector.to_sql(table):
                cursor.execute(stmt)

        # Insert a global version flag
        cursor.execute(
            "INSERT INTO system (name,value) "
            "VALUES ('tt_version',%s)", (schema_version, ))

        # Create some default templates
        now = int(time.time())
        from default_templates import DEFAULT_TEMPLATES
        for tt_name, tt_value in DEFAULT_TEMPLATES:
            record = [
                now,
                SYSTEM_USER,
                tt_name,
                "description",
                tt_value,
            ]
            TT_Template.insert(self.env, record)

        db.commit()
예제 #6
0
 def ticket_template_export(self):
     """export current ticket templates as json to stdout"""
     template_names = TT_Template.fetchNames(self.env)
     export_data = []
     for template_name in template_names:
         export_datum = (
             template_name,
             TT_Template.fetch(self.env, template_name),
         )
         export_data.append(export_datum)
     print(json.dumps(export_data, indent=2))
예제 #7
0
 def _loadTemplateText(self, tt_name):
     """ get tempate text from tt_dict.
         return tt_text if found in db
             or default tt_text if exists
             or empty string if default not exists.
     """
     tt_text = TT_Template.fetch(self.env, tt_name)
     if not tt_text:
         tt_text = TT_Template.fetch(self.env, "default")
     
     return tt_text
 def ticket_template_export(self):
     """export current ticket templates as json to stdout"""
     template_names = TT_Template.fetchNames(self.env)
     export_data = []
     for template_name in template_names:
         export_datum = (
             template_name,
             TT_Template.fetch(self.env, template_name),
         )
         export_data.append(export_datum)
     print(json.dumps(export_data, indent=2))
    def _loadTemplateText(self, tt_name):
        """ get template text from tt_dict.
            return tt_text if found in db
                or default tt_text if exists
                or empty string if default not exists.
        """
        tt_text = TT_Template.fetch(self.env, tt_name)
        if not tt_text:
            tt_text = TT_Template.fetch(self.env, 'default')

        return tt_text
예제 #10
0
 def _saveTemplateText(self, tt_name, tt_text):
     """ save ticket template text to db.
     """
     id = TT_Template.insert(
         self.env,
         (int(time.time()), "SYSTEM", tt_name, "description", tt_text))
     return id
예제 #11
0
    def _getTTFields(self, tt_user, tt_name):
        """
            Get all fields values
            return:
                {
                    "summary": {"field_type":"text", "field_value": "abc"},
                    "description": {"field_type":"textarea", "field_value": "xyz"},
                }

        """
        result = {}

        # init result
        field_list = self._getFieldList()
        for field in field_list:
            result[field] = ""

        # update from db
        data = {
            "tt_user": tt_user,
            "tt_name": tt_name,
            }
        field_value_mapping = TT_Template.fetchCurrent(self.env, data)
        for k, v in field_value_mapping.items():
            if k in field_list:
                result[k] = v

        for field in field_list:
            field_type = self.config.get("tickettemplate", field + ".type", "text")
            field_value = field_value_mapping.get(field)
            field_detail = {"field_type":field_type, "field_value": field_value}
            result[field] = field_detail

        return result
예제 #12
0
    def process_admin_request(self, req, cat, page, path_info):
        req.perm.assert_permission('TT_ADMIN')
        
        req.hdf['options'] = self._getTicketTypeNames()
        req.hdf['type'] = req.args.get('type')

        
        if req.args.has_key("id"):
            # after load history
            id = req.args.get("id")
            req.hdf['tt_text'] = self._loadTemplateTextById(id)
            req.hdf['type'] = self._getNameById(id)

        
        elif req.method == 'POST':

            # Load
            if req.args.get('loadtickettemplate'):
                tt_name = req.args.get('type')

                req.hdf['tt_text'] = self._loadTemplateText(tt_name)

            # Load history
            if req.args.get('loadhistory'):
                tt_name = req.args.get('type')
                
                req.hdf['tt_name'] = tt_name
                
                tt_history = []
                for id,modi_time,tt_name,tt_text in TT_Template.selectByName(self.env, tt_name):
                    history = {}
                    history["id"] = id
                    history["tt_name"] = tt_name
                    history["modi_time"] = self._formatTime(int(modi_time))
                    history["tt_text"] = tt_text
                    history["href"] = req.abs_href.admin(cat, page, {"id":id})
                    tt_history.append(history)
                
                req.hdf['tt_history'] = tt_history
                                
                return 'loadhistory.cs', None

            # Save
            elif req.args.get('savetickettemplate'):
                tt_text = req.args.get('description').replace('\r', '')
                tt_name = req.args.get('type')

                self._saveTemplateText(tt_name, tt_text)
                req.hdf['tt_text'] = tt_text
                
            # preview
            elif req.args.get('preview'):
                tt_text = req.args.get('description').replace('\r', '')
                tt_name = req.args.get('type')

                description_preview = self._previewTemplateText(tt_name, tt_text, req)
                req.hdf['tt_text'] = tt_text
                req.hdf['description_preview'] = description_preview

        return 'admin_tickettemplate.cs', None
예제 #13
0
 def _insert_templates(self, templates):
     """
     accept list of tuples called templates and insert into database.
     example: templates = [('tt_name','tt_value'),]
     """
     now = int(time.time())
     for tt_name, tt_value in templates:
         record = [
             now,
             SYSTEM_USER,
             tt_name,
             'description',
             tt_value,
         ]
         TT_Template.insert(self.env, record)
         # increment timestamp; other code expects it to be unique
         now += 1
 def _insert_templates(self, templates):
     """
     accept list of tuples called templates and insert into database.
     example: templates = [('tt_name','tt_value'),]
     """
     now = int(time.time())
     for tt_name, tt_value in templates:
         record = [
             now,
             SYSTEM_USER,
             tt_name,
             'description',
             tt_value,
         ]
         TT_Template.insert(self.env, record)
         # increment timestamp; other code expects it to be unique
         now += 1
예제 #15
0
    def _handleCustomDelete(self, req):
        """ delete custom template
        """
        jsonstr = urllib.unquote(req.read())
        custom_data = json.loads(jsonstr)
        tt_name = custom_data.get('tt_name')
        if not tt_name:
            return

        tt_user = req.authname

        # delete same custom template if exist
        delete_data = {
            'tt_user': tt_user,
            'tt_name': tt_name,
        }
        TT_Template.deleteCustom(self.env, delete_data)
        return tt_name
예제 #16
0
    def _handleCustomDelete(self, req):
        """ delete custom template
        """
        jsonstr = urllib.unquote(req.read())
        custom_data = json.loads(jsonstr)
        tt_name = custom_data.get("tt_name")
        if not tt_name:
            return

        tt_user = req.authname

        # delete same custom template if exist
        delete_data = {
            "tt_user": tt_user,
            "tt_name": tt_name,
        }
        TT_Template.deleteCustom(self.env, delete_data)
        return tt_name
예제 #17
0
    def environment_created(self):
        # Create the required tables
        db = self.env.get_db_cnx()
        connector, _ = DatabaseManager(self.env)._get_connector()
        cursor = db.cursor()
        for table in schema:
            for stmt in connector.to_sql(table):
                cursor.execute(stmt)

        # Insert a global version flag
        cursor.execute("INSERT INTO system (name,value) "
                       "VALUES ('tt_version',%s)", (schema_version,))

        # Create some default templates
        for tt_name, tt_text in DEFAULT_TEMPLATES:
            TT_Template.insert(self.env, tt_name, tt_text, 0)
        
        db.commit()
예제 #18
0
    def _handleCustomSave(self, req):
        """ save custom template
        """
        jsonstr = urllib.unquote(req.read())
        custom_data = json.loads(jsonstr)
        tt_name = custom_data.get("tt_name")
        custom_template = custom_data.get("custom_template")
        if not tt_name or not custom_template:
            return tt_name, custom_template

        now = int(time.time())
        tt_user = req.authname

        # delete same custom template if exist
        delete_data = {
            "tt_user": tt_user,
            "tt_name": tt_name,
        }
        TT_Template.deleteCustom(self.env, delete_data)

        # save custom template
        field_list = self._getFieldList()
        for tt_field in field_list:
            tt_value = custom_template.get(tt_field)

            if tt_value is not None:
                record = [
                    now,
                    tt_user,
                    tt_name,
                    tt_field,
                    tt_value,
                ]
                TT_Template.insert(self.env, record)

        return tt_name, custom_template
예제 #19
0
    def _handleCustomSave(self, req):
        """ save custom template
        """
        jsonstr = urllib.unquote(req.read())
        custom_data = json.loads(jsonstr)
        tt_name = custom_data.get('tt_name')
        custom_template = custom_data.get('custom_template')
        if not tt_name or not custom_template:
            return tt_name, custom_template

        now = int(time.time())
        tt_user = req.authname

        # delete same custom template if exist
        delete_data = {
            'tt_user': tt_user,
            'tt_name': tt_name,
        }
        TT_Template.deleteCustom(self.env, delete_data)

        # save custom template
        field_list = self._getFieldList()
        for tt_field in field_list:
            tt_value = custom_template.get(tt_field)

            if tt_value is not None:
                record = [
                    now,
                    tt_user,
                    tt_name,
                    tt_field,
                    tt_value,
                ]
                TT_Template.insert(self.env, record)

        return tt_name, custom_template
예제 #20
0
    def _getTTFields(self, tt_user, tt_name):
        """
            Get all fields values
            return:
                {
                    "summary": {"field_type":"text", "field_value": "abc"},
                    "description": {"field_type":"textarea", "field_value": "xyz"},
                }

        """
        result = {}

        # init result
        field_list = self._getFieldList()
        for field in field_list:
            result[field] = ""

        # update from db
        data = {
            "tt_user": tt_user,
            "tt_name": tt_name,
        }
        field_value_mapping = TT_Template.fetchCurrent(self.env, data)
        for k, v in field_value_mapping.items():
            if k in field_list:
                result[k] = v

        for field in field_list:
            field_type = self.config.get("tickettemplate", field + ".type",
                                         "text")
            field_value = field_value_mapping.get(field)
            field_detail = {
                "field_type": field_type,
                "field_value": field_value
            }
            result[field] = field_detail

        return result
예제 #21
0
 def _saveTemplateText(self, tt_name, tt_text):
     """ save ticket template text to db.
     """
     id = TT_Template.insert(self.env, (int(time.time()), 'SYSTEM',
                                        tt_name, 'description', tt_text))
     return id
예제 #22
0
    def process_request(self, req):
        req.perm.assert_permission('TICKET_CREATE')
        data = {
            "gettext": gettext,
            "_": _,
            "tag_": tag_,
            "N_": N_,
        }

        if req.path_info.startswith('/tt/query'):
            # handle XMLHTTPRequest
            data["req_args"] = req.args

            data.update({"tt_user": req.authname})
            result = TT_Template.fetchAll(self.env, data)
            result["status"] = "1"
            result["field_list"] = self._getFieldList()
            if self.config.getbool("tickettemplate", "enable_custom", True) and \
                'TT_USER' in req.perm:
                result["enable_custom"] = True
            else:
                result["enable_custom"] = False
            if req.args.has_key("warning"):
                result["warning"] = "1"
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)

        # tt_custom save
        elif req.path_info.startswith('/tt/custom_save'):
            tt_name, custom_template = self._handleCustomSave(req)
            result = {}
            result["status"] = "1"
            result["tt_name"] = tt_name
            result["new_template"] = custom_template
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)

        # tt_custom delete
        elif req.path_info.startswith('/tt/custom_delete'):
            tt_name = self._handleCustomDelete(req)
            result = {}
            result["status"] = "1"
            result["tt_name"] = tt_name
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)

        elif req.path_info.startswith('/tt/edit_buffer_save'):
            tt_name, custom_template = self._handleCustomSave(req)
            result = {}
            result["status"] = "1"
            result["tt_name"] = tt_name
            result["new_template"] = custom_template
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)
        elif req.path_info.startswith('/tt/tt_newticket.js'):
            filename = resource_filename(__name__, 'templates/tt_newticket.js')
            chrome = Chrome(self.env)
            message = chrome.render_template(req, filename, data, 'text/plain')

            req.send_response(200)
            req.send_header('Cache-control', 'no-cache')
            req.send_header('Expires', 'Fri, 01 Jan 1999 00:00:00 GMT')
            req.send_header('Content-Type', 'text/x-javascript')
            req.send_header(
                'Content-Length',
                len(
                    isinstance(message, unicode) and message.encode("utf-8")
                    or message))
            req.end_headers()

            if req.method != 'HEAD':
                req.write(message)
            raise RequestDone
예제 #23
0
    def render_admin_panel(self, req, cat, page, path_info):
        req.perm.assert_permission('TT_ADMIN')

        data = {
            'gettext': gettext,
            '_': _,
            'tag_': tag_,
            'N_': N_,
        }

        data['options'] = self._getTicketTypeNames()
        data['type'] = req.args.get('type')

        if 'id' in req.args:
            # after load history
            id = req.args.get('id')
            data['tt_text'] = self._loadTemplateTextById(id)
            data['type'] = self._getNameById(id)

        elif req.method == 'POST':

            # Load
            if req.args.get('loadtickettemplate'):
                tt_name = req.args.get('type')

                data['tt_text'] = self._loadTemplateText(tt_name)

            # Load history
            if req.args.get('loadhistory'):
                tt_name = req.args.get('type')

                data['tt_name'] = tt_name

                tt_history = []
                for id, modi_time, tt_name, tt_text \
                        in TT_Template.selectByName(self.env, tt_name):
                    history = {
                        'id': id,
                        'tt_name': tt_name,
                        'modi_time': self._formatTime(int(modi_time)),
                        'tt_text': tt_text,
                        'href': req.abs_href.admin(cat, page, {'id': id})
                    }
                    tt_history.append(history)

                data['tt_history'] = tt_history

                return 'loadhistory.html', data

            # Save
            elif req.args.get('savetickettemplate'):
                tt_text = req.args.get('description').replace('\r', '')
                tt_name = req.args.get('type')

                self._saveTemplateText(tt_name, tt_text)
                data['tt_text'] = tt_text

            # preview
            elif req.args.get('preview'):
                tt_text = req.args.get('description').replace('\r', '')
                tt_name = req.args.get('type')

                description_preview = \
                    self._previewTemplateText(tt_name, tt_text, req)
                data['tt_text'] = tt_text
                data['description_preview'] = description_preview

        return 'admin_tickettemplate.html', data
예제 #24
0
    def process_request(self, req):
        req.perm.assert_permission('TICKET_CREATE')
        data = {
            'gettext': gettext,
            '_': _,
            'tag_': tag_,
            'N_': N_,
        }

        if req.path_info.startswith('/tt/query'):
            # handle XMLHTTPRequest
            data['req_args'] = req.args

            data.update({'tt_user': req.authname})
            result = TT_Template.fetchAll(self.env, data)
            result['status'] = '1'
            result['field_list'] = self._getFieldList()
            if self.enable_custom and 'TT_USER' in req.perm:
                result['enable_custom'] = True
            else:
                result['enable_custom'] = False
            if 'warning' in req.args:
                result['warning'] = req.args['warning']
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)

        # tt_custom save
        elif req.path_info.startswith('/tt/custom_save'):
            tt_name, custom_template = self._handleCustomSave(req)
            result = {'status': '1', 'tt_name': tt_name,
                      'new_template': custom_template}
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)

        # tt_custom delete
        elif req.path_info.startswith('/tt/custom_delete'):
            tt_name = self._handleCustomDelete(req)
            result = {'status': '1', 'tt_name': tt_name}
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)

        elif req.path_info.startswith('/tt/edit_buffer_save'):
            tt_name, custom_template = self._handleCustomSave(req)
            result = {'status': '1', 'tt_name': tt_name,
                      'new_template': custom_template}
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)
        elif req.path_info.startswith('/tt/tt_newticket.js'):
            filename = resource_filename(__name__,
                                         'templates/tt_newticket.js')
            chrome = Chrome(self.env)
            message = \
                chrome.render_template(req, filename, data, 'text/plain')

            req.send_response(200)
            req.send_header('Cache-control', 'no-cache')
            req.send_header('Expires', 'Fri, 01 Jan 1999 00:00:00 GMT')
            req.send_header('Content-Type', 'text/x-javascript')
            req.send_header('Content-Length',
                            len(isinstance(message, unicode)
                            and message.encode("utf-8") or message))
            req.end_headers()

            if req.method != 'HEAD':
                req.write(message)
            raise RequestDone
예제 #25
0
 def _getNameById(self, id):
     """ get tempate name from tt_dict.
     """
     tt_name = TT_Template.getNameById(self.env, id)
     
     return tt_name        
예제 #26
0
    def render_admin_panel(self, req, cat, page, path_info):
        req.perm.assert_permission('TT_ADMIN')

        data = {
            'gettext': gettext,
            '_': _,
            'tag_': tag_,
            'N_': N_,
        }

        data['options'] = self._getTicketTypeNames()
        data['type'] = req.args.get('type')

        if 'id' in req.args:
            # after load history
            id = req.args.get('id')
            data['tt_text'] = self._loadTemplateTextById(id)
            data['type'] = self._getNameById(id)

        elif req.method == 'POST':

            # Load
            if req.args.get('loadtickettemplate'):
                tt_name = req.args.get('type')

                data['tt_text'] = self._loadTemplateText(tt_name)

            # Load history
            if req.args.get('loadhistory'):
                tt_name = req.args.get('type')

                data['tt_name'] = tt_name

                tt_history = []
                for id, modi_time, tt_name, tt_text \
                        in TT_Template.selectByName(self.env, tt_name):
                    history = {'id': id, 'tt_name': tt_name,
                               'modi_time': self._formatTime(int(modi_time)),
                               'tt_text': tt_text,
                               'href': req.abs_href.admin(cat, page,
                                                          {'id': id})}
                    tt_history.append(history)

                data['tt_history'] = tt_history

                return 'loadhistory.html', data

            # Save
            elif req.args.get('savetickettemplate'):
                tt_text = req.args.get('description').replace('\r', '')
                tt_name = req.args.get('type')

                self._saveTemplateText(tt_name, tt_text)
                data['tt_text'] = tt_text

            # preview
            elif req.args.get('preview'):
                tt_text = req.args.get('description').replace('\r', '')
                tt_name = req.args.get('type')

                description_preview = \
                    self._previewTemplateText(tt_name, tt_text, req)
                data['tt_text'] = tt_text
                data['description_preview'] = description_preview

        return 'admin_tickettemplate.html', data
예제 #27
0
    def process_request(self, req):
        req.perm.assert_permission('TICKET_CREATE')
        data = {
            'gettext': gettext,
            '_': _,
            'tag_': tag_,
            'N_': N_,
        }

        if req.path_info.startswith('/tt/query'):
            # handle XMLHTTPRequest
            data['req_args'] = req.args

            data.update({'tt_user': req.authname})
            result = TT_Template.fetchAll(self.env, data)
            result['status'] = '1'
            result['field_list'] = self._getFieldList()
            if self.enable_custom and 'TT_USER' in req.perm:
                result['enable_custom'] = True
            else:
                result['enable_custom'] = False
            if 'warning' in req.args:
                result['warning'] = req.args['warning']
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)

        # tt_custom save
        elif req.path_info.startswith('/tt/custom_save'):
            tt_name, custom_template = self._handleCustomSave(req)
            result = {
                'status': '1',
                'tt_name': tt_name,
                'new_template': custom_template
            }
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)

        # tt_custom delete
        elif req.path_info.startswith('/tt/custom_delete'):
            tt_name = self._handleCustomDelete(req)
            result = {'status': '1', 'tt_name': tt_name}
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)

        elif req.path_info.startswith('/tt/edit_buffer_save'):
            tt_name, custom_template = self._handleCustomSave(req)
            result = {
                'status': '1',
                'tt_name': tt_name,
                'new_template': custom_template
            }
            json_str = json.dumps(result)
            self._sendResponse(req, json_str)
        elif req.path_info.startswith('/tt/tt_newticket.js'):
            filename = resource_filename(__name__, 'templates/tt_newticket.js')
            chrome = Chrome(self.env)
            message = \
                chrome.render_template(req, filename, data, 'text/plain')

            req.send_response(200)
            req.send_header('Cache-control', 'no-cache')
            req.send_header('Expires', 'Fri, 01 Jan 1999 00:00:00 GMT')
            req.send_header('Content-Type', 'text/x-javascript')
            req.send_header(
                'Content-Length',
                len(
                    isinstance(message, unicode) and message.encode("utf-8")
                    or message))
            req.end_headers()

            if req.method != 'HEAD':
                req.write(message)
            raise RequestDone
예제 #28
0
    def process_request(self, req):
        req.perm.assert_permission('TICKET_CREATE')
        data = {
            "gettext": gettext,
            "_": _,
            "tag_": tag_,
            "N_": N_,
        }
        
        if req.path_info.startswith('/tt/query'):
            # handle XMLHTTPRequest
            data["req_args"] = req.args
                
            data.update({"tt_user": req.authname})
            result = TT_Template.fetchAll(self.env, data)
            result["status"] = "1"
            result["field_list"] = self._getFieldList()
            if self.config.getbool("tickettemplate", "enable_custom", True) and \
                'TT_USER' in req.perm:
                result["enable_custom"] = True
            else:
                result["enable_custom"] = False
            if req.args.has_key("warning"):
                result["warning"] = "1"
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)

        # tt_custom save
        elif req.path_info.startswith('/tt/custom_save'):
            tt_name, custom_template = self._handleCustomSave(req);
            result = {}
            result["status"] = "1"
            result["tt_name"] = tt_name
            result["new_template"] = custom_template
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)

        # tt_custom delete
        elif req.path_info.startswith('/tt/custom_delete'):
            tt_name = self._handleCustomDelete(req);
            result = {}
            result["status"] = "1"
            result["tt_name"] = tt_name
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)

        elif req.path_info.startswith('/tt/edit_buffer_save'):
            tt_name, custom_template = self._handleCustomSave(req);
            result = {}
            result["status"] = "1"
            result["tt_name"] = tt_name
            result["new_template"] = custom_template
            jsonstr = json.dumps(result)
            self._sendResponse(req, jsonstr)
        elif req.path_info.startswith('/tt/tt_newticket.js'):
            filename = resource_filename(__name__, 'templates/tt_newticket.js')
            chrome = Chrome(self.env)
            message = chrome.render_template(req, filename, data, 'text/plain')
            
            req.send_response(200)
            req.send_header('Cache-control', 'no-cache')
            req.send_header('Expires', 'Fri, 01 Jan 1999 00:00:00 GMT')
            req.send_header('Content-Type', 'text/x-javascript')
            req.send_header('Content-Length', len(isinstance(message, unicode) and message.encode("utf-8") or message))
            req.end_headers()

            if req.method != 'HEAD':
                req.write(message)
            raise RequestDone
예제 #29
0
 def _loadTemplateTextById(self, id):
     """ get tempate text from tt_dict.
     """
     tt_text = TT_Template.fetchById(self.env, id)
     
     return tt_text        
예제 #30
0
 def _saveTemplateText(self, tt_name, tt_text):
     """ save ticket template text to db.
     """
     
     id = TT_Template.insert(self.env, tt_name, tt_text, time.time())
     return id