Exemple #1
0
    def __init__(self, shard, contest):
        logger.initialize(ServiceCoord("ContestWebServer", shard))
        self.contest = contest

        # This is a dictionary (indexed by username) of pending
        # notification. Things like "Yay, your submission went
        # through.", not things like "Your question has been replied",
        # that are handled by the db. Each username points to a list
        # of tuples (timestamp, subject, text).
        self.notifications = {}

        parameters = {
            "login_url": "/",
            "template_path": os.path.join(os.path.dirname(__file__), "templates", "contest"),
            "static_path": os.path.join(os.path.dirname(__file__), "static"),
            "cookie_secret": base64.b64encode(config.secret_key),
            "debug": config.tornado_debug,
        }
        parameters["is_proxy_used"] = config.is_proxy_used
        WebService.__init__(
            self,
            config.contest_listen_port[shard],
            _cws_handlers,
            parameters,
            shard=shard,
            listen_address=config.contest_listen_address[shard],
        )
        self.file_cacher = FileCacher(self)
        self.evaluation_service = self.connect_to(ServiceCoord("EvaluationService", 0))
        self.scoring_service = self.connect_to(ServiceCoord("ScoringService", 0))
Exemple #2
0
    def __init__(self, shard):
        logger.initialize(ServiceCoord("AdminWebServer", shard))

        # A list of pending notifications.
        self.notifications = []

        parameters = {
            "login_url": "/",
            "template_path": os.path.join(os.path.dirname(__file__),
                                          "templates", "admin"),
            "static_path": os.path.join(os.path.dirname(__file__),
                                        "static"),
            "cookie_secret": base64.b64encode(config.secret_key),
            "debug": config.tornado_debug,
            }
        WebService.__init__(self,
                            config.admin_listen_port,
                            _aws_handlers,
                            parameters,
                            shard=shard,
                            custom_logger=logger,
                            listen_address=config.admin_listen_address)
        self.file_cacher = FileCacher(self)
        self.evaluation_service = self.connect_to(
            ServiceCoord("EvaluationService", 0))
        self.scoring_service = self.connect_to(
            ServiceCoord("ScoringService", 0))
        self.resource_services = []
        for i in xrange(get_service_shards("ResourceService")):
            self.resource_services.append(self.connect_to(
                ServiceCoord("ResourceService", i)))
        self.logservice = self.connect_to(ServiceCoord("LogService", 0))
Exemple #3
0
def main():
    parser = ArgumentParser()
    parser.add_argument("--standalone", action="store_true")
    parser.add_argument("--debug", action="store_true")
    opts = parser.parse_args()
    if opts.standalone:
        Control.STANDALONE = True
    if opts.debug:
        Control.logger.setLevel(logging.DEBUG)
    try:
        request = WebService.Request(Control.STANDALONE, Control.logger)
        if request.logLevel > 1:
            Control.logger.setLevel(logging.DEBUG)
        Control.logger.info("%s request from %s", request.type, request.client)
        Control.logger.debug("Request body:\n%s", request.message)
        if request.type == "Ticket":
            response = check_ticket(Ticket(request.doc))
        elif request.type == "Manifest":
            response = make_delta(Manifest(request.doc))
        else:
            error = "Don't understand %r" % request.type
            response = WebService.ErrorResponse(error, Control.logger)
    except Exception as e:
        response = WebService.ErrorResponse(str(e), Control.logger)
    Control.logger.debug("Response:\n%s\n", response.body)
    if Control.STANDALONE:
        sys.stdout.write(response.body)
    else:
        response.send()
Exemple #4
0
 def get_defect(mergedDefectDO, scope):
     try:
         return WebService.DefectHandler(mergedDefectDO,
                                         projectId=scope.projectId,
                                         projectDOs=scope.projectDOs,
                                         scope=scope.triage_scope())
     except UnboundLocalError:
         return WebService.DefectHandler(mergedDefectDO,
                                         scope=scope.triage_scope())
Exemple #5
0
def check_ticket(client_ticket):
    server_ticket = load_server_manifest(include_file_list=False).ticket
    Control.logger.debug("client_ticket.host: %s", client_ticket.host, 2)
    Control.logger.debug("server_ticket.host: %s", server_ticket.host, 2)
    Control.logger.debug("client_ticket.checksum: %s", client_ticket.checksum)
    Control.logger.debug("server_ticket.checksum: %s" % server_ticket.checksum)
    Control.logger.debug("client_ticket.timestamp: %s",
                         client_ticket.timestamp)
    Control.logger.debug("server_ticket.timestamp: %s",
                         server_ticket.timestamp)
    response = etree.Element("Current")
    response.text = (client_ticket == server_ticket) and "Y" or "N"
    return WebService.Response(response, Control.logger)
Exemple #6
0
def make_delta(client_manifest):
    server_manifest = load_server_manifest()
    client_files = {}
    server_files = {}
    to_be_installed = []
    to_be_deleted = []
    manifest_name = None
    for f in client_manifest.files:
        client_files[f.name.upper()] = f
    for f in server_manifest.files:
        server_files[f.name.upper()] = f
    for key in server_files:
        serverFile = server_files[key]
        if "CDRMANIFEST.XML" in key:
            manifest_name = serverFile.name
        if key not in client_files:
            Control.logger.debug("adding new client file %s", serverFile.name)
            to_be_installed.append(serverFile.name)
        elif client_files[key] != serverFile:
            Control.logger.debug("adding changed client file %s",
                                 serverFile.name)
            to_be_installed.append(serverFile.name)
    for key in client_files:
        if key not in server_files:
            name = client_files[key].name
            Control.logger.debug("client file %s to be deleted", name)
            to_be_deleted.append(name)
    updates = etree.Element("Updates")
    if to_be_installed:
        if manifest_name and manifest_name not in to_be_installed:
            to_be_installed.append(manifest_name)
        Control.logger.debug("sending %d files to be installed",
                             len(to_be_installed))
        zip_file = base64.encodestring(build_zip_file(to_be_installed))
        etree.SubElement(updates, "ZipFile", encoding="base64").text = zip_file
    if to_be_deleted:
        Control.logger.debug("%d files will be removed", len(to_be_deleted))
        deletions = etree.SubElement(updates, "Delete")
        for name in to_be_deleted:
            etree.SubElement(deletions, "File").text = name
    return WebService.Response(updates, Control.logger)
Exemple #7
0
        #print node.toxml()
        if node.nodeType == node.TEXT_NODE:
            rc.append(node.data)
    return ''.join(rc)


def getNodeText(element, nodename):
    try:
        return getText((element.getElementsByTagName(nodename)[0]).childNodes)
    except IndexError:
        return None


if __name__ == '__main__':

    wsOpts = WebService.WSOpts()
    parser = wsOpts.get_common_opts()

    parser.add_option("--inputfile",
                      dest="inputfile",
                      help="XML file exported from CIM")
    parser.add_option("--debug",
                      action="store_true",
                      dest="debug",
                      help="XML file exported from CIM")

    (options, args) = parser.parse_args()

    if not options.inputfile:
        print "Input file of defects to be exported must be specified"
        sys.exit(-1)
Exemple #8
0
reload(sys)
sys.setdefaultencoding("latin-1")

def scrapeHeadlines(text):
    headlines = "";
    lines = text.splitlines()
    for line in lines:
        if (string.find(line, "<a href") == 0):
            pos1 = string.find(line, "<b>")
            if pos1 > 0:
                pos2 = string.find(line, "</b>")
                if pos2 > 0:
                    headlines += line[pos1+len("<b>"):pos2] + ".\n"
    return headlines
    
print '--- Creating Headline Web Service'
news_service = WebService.ServiceProxy("http://www.soapclient.com/xml/SQLDataSoap.WSDL");
print '--- Calling Headline Web Service'
news = news_service.ProcessSRL("NEWS.SRI", "yahoo", "");
headlines = scrapeHeadlines(news)
print '--- Got headlines in English'
print headlines

print '--- Creating Translation Web Service'
babel_service = WebService.ServiceProxy("http://www.xmethods.net/sd/BabelFishService.wsdl");
print '--- Calling Translation Web Service'
translation = babel_service.BabelFish("en_fr", headlines)
print '--- Translated headlines:'
print translation
print '--- Done!'
Exemple #9
0
 def defect_scope(self, client):
     return WebService.OptionsProcessor(self.options, client)
Exemple #10
0
    def __init__(self, reporters):
        self._p = WebService.WSOpts().get_common_opts()

        # use --test flag to avoid sending e-mail while debugging this script
        self._p.set_defaults(testing="false")
        self._p.set_defaults(raw="false")
        self._p.set_defaults(quiet="false")

        self._p.add_option("--test",
                           action="store_true",
                           dest="testing",
                           help="Testing flag: no mail just echo to stdout")
        self._p.add_option("--dest",
                           dest="reporter",
                           default='subscribers',
                           help="Send to whom? " + ','.join(reporters.keys()))
        self._p.add_option(
            "--unassigned-to",
            dest="unassigned_to",
            default=None,
            help="Send report of unassigned defects to this user")
        self._p.add_option("--format",
                           dest="format",
                           default='table',
                           help="Report format (%s)" %
                           (','.join(templates.available_formats.keys()), ))
        self._p.add_option("--chart_field",
                           dest="field",
                           default='',
                           help="Primary field for chart")
        self._p.add_option("--chart_stack_field",
                           dest="stack_field",
                           default='',
                           help="Stacking field for chart")
        self._p.add_option("--title",
                           dest="title",
                           default=None,
                           help="Title for chart")
        self._p.add_option("--raw",
                           action='store_true',
                           dest="raw",
                           help="Exclude headers in CSV output")
        self._p.add_option("--quiet",
                           action='store_true',
                           dest="quiet",
                           help="Exclude unnecessary script output.")

        # Make sure we validate options
        def validate_reporter(options, args):
            try:
                reporters[options.reporter]
            except KeyError:
                return ['Unknown "--dest" value ' + options.reporter]

        self._p.add_validator(validate_reporter)

        def validate_format(options, args):
            global render_email
            try:
                render_email = templates.available_formats[options.format]
            except KeyError:
                return ['Unknown "--format" value ' + options.format]

        self._p.add_validator(validate_format)
Exemple #11
0
def main(dev):
    if dev != True:
        check_admin()
    kill_self()
    add_hosts()
    WebService.run_app()
Exemple #12
0
# -*- encoding: utf-8 -*-

import sys
sys.dont_write_bytecode = True

from WebService import *
from TranslationService import *
import requests_cache

print("Setting up cache")
requests_cache.install_cache('translation.cache', backend='sqlite')
web = WebService("0.0.0.0", 11000)
web.start()