def queue_update():
    json_queue = QueueManager.get_json_queue()
    logging.info("sending notifications")
    subs = memcache.get(SUBSCRIBERS_KEY)
    msg = json.dumps({'type': 'queue', 'data': json_queue, 'active_tas': LabTA.update_active_tas()})
    for s in subs:
        channel.send_message(s, msg)
Example #2
0
def queue_update():
    json_queue = QueueManager.get_json_queue()
    logging.info("sending notifications")
    subs = memcache.get(SUBSCRIBERS_KEY)
    msg = json.dumps({
        'type': 'queue',
        'data': json_queue,
        'active_tas': LabTA.update_active_tas()
    })
    for s in subs:
        channel.send_message(s, msg)
Example #3
0
 def get(self):
     user = users.get_current_user()
     json_queue = QueueManager.get_json_queue()
     token = channel.create_channel(user.email())
     if is_ta(user.email()):
         logging.info("{} is a TA".format(user.email()))
     template_values = {'logout_url': users.create_logout_url('/'),
                        'schedule_url': "http://labta.cs.princeton.edu", 
                        'is_ta': is_ta(user.email()),
                        'curr_user': user.email(),
                        'token': token,
                        'queue': base64.b64encode(json_queue),
                        'active_tas': LabTA.update_active_tas()}
     template = JINJA_ENVIRONMENT.get_template('templates/HelpQueue.html')
     self.response.write(template.render(template_values))
Example #4
0
 def get(self):
     user = users.get_current_user()
     json_queue = QueueManager.get_json_queue()
     token = channel.create_channel(user.email())
     if is_ta(user.email()):
         logging.info("{} is a TA".format(user.email()))
     template_values = {
         'logout_url': users.create_logout_url('/'),
         'schedule_url': "http://labta.cs.princeton.edu/schedule.html",
         'is_ta': is_ta(user.email()),
         'curr_user': user.email(),
         'token': token,
         'queue': base64.b64encode(json_queue),
         'active_tas': LabTA.update_active_tas()
     }
     template = JINJA_ENVIRONMENT.get_template('templates/HelpQueue.html')
     self.response.write(template.render(template_values))
Example #5
0
def init(hwr, hwdir):
    """
    Initializes the HardwareRepository with XML files read from hwdir.

    The hwr module must be imported at the very beginning of the application
    start-up to function correctly.

    This method can however be called later, so that initialization can be
    done when one wishes.

    :param hwr: HardwareRepository module
    :param str hwdir: Path to hardware objects

    :return: None
    """

    global HWR

    try:
        hwr.init_hardware_repository(path.abspath(path.expanduser(hwdir)))
        _hwr = hwr.getHardwareRepository()
        _hwr.connect()
        HWR = _hwr
    except Exception:
        logging.getLogger("HWR").exception("")
    try:
        global beamline, actions, plotting
        beamline = hwr.beamline

        qm = QueueManager.QueueManager("MXCuBE3")

        from mxcube3.core import qutils

        qutils.init_signals(hwr.beamline.queue_model)

    except Exception:
        msg = "Could not initialize one or several hardware objects, "
        msg += "stopped at first error ! \n"
        msg += "Make sure That all devices servers are running \n"
        msg += "Make sure that the detector software is running \n"
        exit_with_error(msg)
Example #6
0
def parse_an_article(link_queue=QueueManager.list_init(),
                     link_visited=isVisited.init()):
    target_url = link_queue.get()
    if target_url in link_visited or target_url in stoplist:
        return link_queue, link_visited
    # html = open('test.html', encoding='utf8').read()
    print(target_url)
    html = load_html(target_url)
    link_visited[target_url] = True

    try:
        soup = BeautifulSoup(html, 'html.parser')
    except:
        return link_queue, link_visited

    # get date
    date = None
    try:
        time_stamp = int(soup.find(id='news-time')['data-val']) / 1000
        date = datetime.datetime.fromtimestamp(time_stamp)
        # time is scaled at seconds
    except:
        try:
            raw_date = soup.find(id='pubtime_baidu')['content']
            date = datetime.datetime.strptime(raw_date,
                                              "%Y-%m-%dT%H:%M:%S+08:00")
        except:
            try:
                raw_date = soup.find(id='pubtime_baidu').string
                date = datetime.datetime.strptime(raw_date,
                                                  "%Y-%m-%d %H:%M:%S")
            except:
                pass

    byte_title = soup.title.string

    # now parsing the body part
    byte_content = ""
    try:
        article = soup.find('article')
        for string in article.strings:
            byte_content += string
        # byte_content = byte_content.encode('utf8')
    except:
        article = soup.find(itemprop='articleBody')
        try:
            descendants = article.descendants
            for tag in article.descendants:
                if tag.name == 'p':
                    # byte_content += tag.string
                    try:
                        byte_content += tag.string
                    except:
                        try:
                            byte_content += tag.br.string
                        except:
                            pass
                    byte_content += '\n'
        except:
            pass
    # parsing finished

    for raw_link in soup.find_all('a'):
        filtered_addtolist(raw_link.get('href'), link_queue, link_visited)

    page = Webpage(target_url, byte_title, date, byte_content)
    date_filename = space_to_dash(str(date))
    database.save(date_filename, byte_content)
    print(date_filename)
    return link_queue, link_visited
Example #7
0
            pass
    # parsing finished

    for raw_link in soup.find_all('a'):
        filtered_addtolist(raw_link.get('href'), link_queue, link_visited)

    page = Webpage(target_url, byte_title, date, byte_content)
    date_filename = space_to_dash(str(date))
    database.save(date_filename, byte_content)
    print(date_filename)
    return link_queue, link_visited


if __name__ == '__main__':
    while True:
        link_queue = QueueManager.list_init()
        link_visited = isVisited.init()
        for iter_count in tqdm(range(MAX_ITERATION)):
            link_queue, link_visited\
                = parse_an_article(link_queue, link_visited)
        print("now start saving")
        QueueManager.list_save(link_queue)
        isVisited.save(link_visited)
        print("saving complete")
        while True:
            user_input = input("continue?\n(y/n)")
            if user_input == 'y':
                break
            if user_input == 'n':
                exit(0)
Example #8
0
import json
import logging
import signals

import queue_model_objects_v1 as qmo
import queue_entry as qe
import QueueManager

from flask import Response, jsonify, request, session
from mxcube3 import app as mxcube
from mxcube3 import socketio
from . import qutils

qm = QueueManager.QueueManager('Mxcube3')


@mxcube.route("/mxcube/api/v0.1/queue/start", methods=['PUT'])
def queue_start():
    """
    Start execution of the queue.

    :returns: Respons object, status code set to:
              200: On success
              409: Queue could not be started
    """
    logging.getLogger('HWR').info('[QUEUE] Queue going to start')

    try:
        mxcube.queue.queue_hwobj.set_pause(False)
        mxcube.queue.queue_hwobj.execute()
    except Exception as ex: