Пример #1
0
def admin_process_event(bot, update):
    user = update.message.from_user
    chatid = update.message.chat.id
    userinput = update.message.text.strip()[1:]
    logger.info(userinput)
    print(INFO_STORE['user_token'], userinput)
    DB().admin_manage_events(INFO_STORE['user_token'], userinput)

    button_list = [InlineKeyboardButton(text='OK', callback_data = 'return_admin_panel')]
    menu = build_menu(button_list, n_cols = 1, header_buttons = None, footer_buttons = None)
    replytext = "Okay! Your previous decision has been recorded. Press 'OK' to return to the Admin Panel."

    if userinput[:-5] == 'approveEvent':
        logger.info("Admin has approved event")
        # PROCESS APPROVE WITH DATABASE HERE

    elif userinput[:-5] == 'rejectEvent':
        logger.info("Admin has rejected event")
        # PROCESS REJECT WITH DATABASE HERE
 
    # deletes message sent previously by bot (this is the previous admin panel message)
    bot.delete_message(chat_id=chatid, message_id=INFO_STORE[user.id]["BotMessageID"][-1])

    msgsent = bot.send_message(text = replytext,
                                chat_id = chatid,
                                reply_markup = InlineKeyboardMarkup(menu),
                                parse_mode=ParseMode.HTML)
    
    #appends message sent by bot itself - the very first message: start message
    INFO_STORE[user.id]["BotMessageID"].append(msgsent['message_id'])
    return 
Пример #2
0
def confirm_event_registration(bot, update):
    user = update.message.from_user
    chatid = update.message.chat.id
    userinput = update.message.text.strip()[1:]
    logger.info(userinput)
    ## registerForEvent and user_token
    print(INFO_STORE)
    print(userinput, INFO_STORE['user_token'])
    DB().register_for_event(userinput, INFO_STORE['user_token'])

    replytext = "WOOTS! You have successfully registered for this event! Press /start if you wish to return to the main menu :)"

    if userinput[:-5] == 'registerForEvent':
        logger.info("User will be starting registration for this event.")
        # PROCESS APPROVE WITH DATABASE HERE

    # deletes message sent previously by bot (this is the previous admin panel message)
    bot.delete_message(chat_id=chatid, message_id=INFO_STORE[user.id]["BotMessageID"][-1])

    msgsent = bot.send_message(text = replytext,
                                chat_id = chatid,
                                parse_mode=ParseMode.HTML)
    
    #appends message sent by bot itself - the very first message: start message
    INFO_STORE[user.id]["BotMessageID"].append(msgsent['message_id'])

    return ConversationHandler.END
Пример #3
0
def do_import_rtq(db, password='', newfileonly=False):
    loader = FileLoader()
    db = DB(password=password, db=db)
    db.create_table_deadlink()
    # print 'try loading', sys.argv[1]
    # lines = loader.load(
    # sys.argv[1])
    newdate = str(db.get_last_day('deadlink'))

    if newdate == 'None':
        newfileonly = False
    for file in utils.dir_listfile('result'):
        rawdatestr = utils.stripDateStr(file).group(1)
        datestr = utils.parseDateString(rawdatestr)
        if newfileonly:
            if datestr > newdate:
                lines = loader.load(file, 7)
                print 'staring insert lines from', file, 'datetime is', datestr
                db.inserts_deadlink(lines, date=datestr)
                print 'insert completed'
            else:
                print datestr, 'skiped'
        else:
            lines = loader.load(file, 7)
            print 'staring insert lines from', file, 'datetime is', datestr
            db.inserts_deadlink(lines, date=datestr)
            print 'insert completed'
Пример #4
0
def browse_events(bot, update):
    query = update.callback_query
    chatid = query.message.chat.id
    messageid = query.message.message_id
    userinput = html.escape(query.data)
    logger.info(userinput)

    button_list = [InlineKeyboardButton(text='Back', callback_data = 'back')]
    menu = build_menu(button_list, n_cols = 1, header_buttons = None, footer_buttons = None)
    
    # CHECK WITH DATABASE HERE 
    # IF EVENT IS PUBLISHED AND APPROVED, IT WILL BE LISTED HERE

    # published_events_list, published_eventIDs = getPublishedEvents()
    published_events_list = DB().generate_all_approved_events()

    BROWSE_EVENTS_MESSAGE = ''
    for i in range(len(published_events_list)):
        BROWSE_EVENTS_MESSAGE += "\n\n<b>EVENT ID: " + str(published_events_list[i][0]) + "</b>"
        BROWSE_EVENTS_MESSAGE += "\n\n" + str(published_events_list[i][1]) 
        BROWSE_EVENTS_MESSAGE += "\n\n" +"/registerForEvent" + str(published_events_list[i][0])
    
    replytext = einfo + "<b>Sup! List of cool events going on recently</b>:"
    replytext += "\n\n" + BROWSE_EVENTS_MESSAGE
        
    bot.editMessageText(text = replytext,
                        chat_id = chatid,
                        message_id = messageid,
                        reply_markup = InlineKeyboardMarkup(menu),
                        parse_mode=ParseMode.HTML)

    return AFTER_BROWSE_EVENTS
Пример #5
0
    def __init__(self):

        self.db = DB()
        self.m = Tk()
        self.m.title("quiz")
        self.m.minsize(500, 500)
        self.m.configure(bg='#0a3d62')
        self.login()
        self.m.mainloop()
Пример #6
0
def do_import_rcu(db, password='', newfileonly=False):
    loader = FileLoader()
    db = DB(password=password, db=db)
    db.create_table_deadlink_classify()
    cates = ['aladdin', 'h5', 'lightaap', 'normal', 'siteapp', 'tc']
    newdate = str(db.get_last_day('deadlink'))

    if newdate == 'None':
        newfileonly = False

    def httpcodeNot200(line):
        return line[2] != '200'

    for category in cates:
        for file in utils.dir_listfile(
                'result',
                subdirprefix='result_spider_random_classfiy_url',
                fileSubPrefix='result_spider_10000_' + category):
            datestr = utils.getDateFromStr(file)
            if newfileonly:
                if datestr > newfileonly:
                    lines = loader.load(file, 5)
                    try:
                        filteredlines = [
                            i
                            for i in itertools.ifilter(httpcodeNot200, lines)
                        ]
                    except TypeError, e:
                        print >> sys.stderr, e.args
                        continue
                    print 'deads', len(
                        filteredlines
                    ), 'staring insert lines from', file, 'datetime is', datestr
                    db.inserts_deadlink_classify(filteredlines,
                                                 cls=category,
                                                 date=datestr)
                    print 'insert completed'
                else:
                    print datestr, 'skiped'
            else:
                lines = loader.load(file, 5)
                try:
                    filteredlines = [
                        i for i in itertools.ifilter(httpcodeNot200, lines)
                    ]
                except TypeError, e:
                    print >> sys.stderr, e.args
                    continue
                print 'deads', len(
                    filteredlines
                ), 'staring insert lines from', file, 'datetime is', datestr
                db.inserts_deadlink_classify(filteredlines,
                                             cls=category,
                                             date=datestr)
                print 'insert completed'
Пример #7
0
    def __init__(self):

        self.db = DB()
        self.m = Tk()
        self.m.title("quiz")
        self.m.minsize(500, 500)
        self.m.configure(bg='#0a3d62')
        # C=Canvas(self.m, bg="blue", height=250, width=300)
        # filename=PhotoImage(file="C:\\Users\\Designit\\PycharmProjects\\guirough\\trial.png")
        # background_label=Label(self.m, image=filename)
        # background_label.place(x=0, y=0, relwidth=1, relheight=1)
        #
        # C.pack( )
        self.login()
        # self.cl=Button(self.m,text='close',lambda :self.m.close())
        self.m.mainloop()
Пример #8
0
def admin_panel(bot, update):
    query = update.callback_query
    chatid = query.message.chat.id
    messageid = query.message.message_id
    userinput = html.escape(query.data)
    logger.info(userinput)

    button_list = [InlineKeyboardButton(text='Back', callback_data = 'back')]
    menu = build_menu(button_list, n_cols = 1, header_buttons = None, footer_buttons = None)

    # GET EVENTS AND VENUES REQUESTS CALL FROM FUNCTIONS 

    # list_pending_events, list_pending_venues, list_eventIDs, list_venueIDs = getPendingEventsVenues()

    list_events = DB().generate_all_pending_events()

    ADMIN_MENU_MESSAGE = "\n\n" + einfo + "<b>List of Event Publications to be Approved:</b>"
    for i in range(len(list_events)):
        ADMIN_MENU_MESSAGE += "\n\n<b>EVENT ID: " + str(list_events[i][0]) + "</b>"
        ADMIN_MENU_MESSAGE += "\n\n" + str(list_events[i][1]) 
        ADMIN_MENU_MESSAGE += "\n\n" +"/approveEvent" + str(list_events[i][0]) + " | " +  "/rejectEvent" + str(list_events[i][0])


    # ADMIN_MENU_MESSAGE += "\n\n" + einfo + "<b>List of Venue Bookings to be Approved:</b>"
    # for i in range(len(list_pending_venues)):
    #     ADMIN_MENU_MESSAGE += "\n\n<b>VENUE ID: " + str(list_venueIDs[i]) + "</b>"
    #     ADMIN_MENU_MESSAGE += "\n\n" + str(list_pending_venues[i])
    #     ADMIN_MENU_MESSAGE += "\n\n" + "/approveVenue" + list_venueIDs[i] + " | " +  "/rejectVenue" + list_venueIDs[i] 
    
    replytext = "<b>Here is the full list of pending events publication and venue booking requests for you to approve.</b>"
    replytext += ADMIN_MENU_MESSAGE
    
    bot.editMessageText(text = replytext,
                        chat_id = chatid,
                        message_id = messageid,
                        reply_markup = InlineKeyboardMarkup(menu),
                        parse_mode=ParseMode.HTML)
    return AFTER_ADMIN_PANEL
Пример #9
0
    def __init__(self):
        try:
            # connect to database
            self.db = DB(database="energy_report_consumption")

            # Connecting to the IDA ICE API.
            pid = start()
            test = ida_lib.connect_to_ida(b"5945", pid.encode())
            # connect to ida ice document
            self.building = call_ida_api_function(
                ida_lib.openDocument, b"d:\\ide_mine\\building_work1.idm")
            self.building_name = ida_get_name(self.building)
            self.energy_report = showList.showSingleChild(
                self.building, 'ENERGY-REPORT')
            self.standard_report_list = [
                'Lighting, facility', 'Electric cooling', 'HVAC aux',
                'Fuel heating', 'Domestic hot water', 'Equipment, tenant'
            ]
        except:
            print("Exception in user code:")
            print('-' * 60)
            traceback.print_exc(file=sys.stdout)
            print('-' * 60)
Пример #10
0
 def createEvent(cls, organizerID, name, description):
     return DB().create_event(User.currentUser.token, name, "", "",
                              description)
Пример #11
0
def main():
    updater = Updater(TELEGRAM_TOKEN)
    dispatcher=updater.dispatcher
    dispatcher.add_error_handler(error)

    conv_handler = ConversationHandler(
            entry_points = [CommandHandler('start', start)],

            states = {
                AFTER_START: [CallbackQueryHandler(callback = login, pattern = '^(login)$'),
                            CallbackQueryHandler(callback = register, pattern = '^(register)$')],

                LOGIN: [MessageHandler(Filters.text, login_verify),
                        CallbackQueryHandler(callback = start, pattern = '^(back)$')],

                VERIFY_LOGIN: [CallbackQueryHandler(callback = login, pattern = '^(login_fail)$'),
                                CallbackQueryHandler(callback = dashboard, pattern = '^(login_success)$')],

                FIRST_NAME: [MessageHandler(Filters.text, showtoken),
                            CallbackQueryHandler(callback = register, pattern = '^(register_back)$')],

                # LAST_NAME: [MessageHandler(Filters.text, showtoken),
                #             CallbackQueryHandler(callback = register, pattern = '^(back)$')],

                NEWLOGIN: [CallbackQueryHandler(callback = dashboard, pattern = '^(dashboard)$'),
                            CallbackQueryHandler(callback = showtoken, pattern = '^(back)$')], 

                AFTER_DASHBOARD: [CallbackQueryHandler(callback = mark_attendance, pattern = '^(attendance)$'),
                                CallbackQueryHandler(callback = browse_events, pattern = '^(browse_events)$'),
                                CallbackQueryHandler(callback = manage_events, pattern = '^(manage_events)$'),
                                CallbackQueryHandler(callback = admin_panel, pattern = '^(admin_panel)$'),
                                CallbackQueryHandler(callback = log_out, pattern = '^(log_out)$')],
                
                AFTER_MARK_ATTENDANCE: [CallbackQueryHandler(callback = dashboard, pattern = '^(back)$'),
                                        MessageHandler(Filters.photo, check_QR_code)],

                AFTER_BROWSE_EVENTS: [CallbackQueryHandler(callback = dashboard, pattern = '^(back)$')],

                AFTER_MANAGE_EVENTS: [CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$'),
                                        CallbackQueryHandler(callback = start_create_event, pattern = '^(create_event)$'),
                                        CallbackQueryHandler(callback = dashboard, pattern = '^(back)$')],
                
                AFTER_START_EDIT_EVENT: [CallbackQueryHandler(callback = cancel_date, pattern = '^(canceldate)'),
                                        CallbackQueryHandler(callback = rename_event, pattern = '^(rename_event)$'),
                                        CallbackQueryHandler(callback = edit_event_desc, pattern = '^(edit_desc)$'),
                                        CallbackQueryHandler(callback = book_venue, pattern = '^(book_venue)$'),
                                        CallbackQueryHandler(callback = request_publish_event, pattern = '^(request_publish)$'),
                                        CallbackQueryHandler(callback = manage_events, pattern = '^(back)$')],
                
                CREATE_NEW_EVENT: [MessageHandler(Filters.text, create_event_name),
                                    CallbackQueryHandler(callback = manage_events, pattern = '^(back)$')],

                CREATE_EVENT_DESC: [MessageHandler(Filters.text, final_create_event)],

                FINAL_CREATE_EVENT: [CallbackQueryHandler(callback = manage_events, pattern = '^(back_to_manage_events)$')],

                RENAME_EVENT: [MessageHandler(Filters.text, process_rename_event),
                                CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$')],

                RENAME_EVENT_CONFIRM: [CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$')],

                EDIT_EVENT_DESCRIPTION: [MessageHandler(Filters.text, process_event_description_edit),
                                        CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$')],

                EDIT_EVENT_DESCRIPTION_CONFIRM: [CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$')],

                BOOK_VENUE: [CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$'),
                            CallbackQueryHandler(callback = book_timing, pattern = '^((?![0-9]{4}).)*$')],

                BOOK_TIMING: [CallbackQueryHandler(callback = inline_handler)],

                BOOK_TIMING_FINAL: [CallbackQueryHandler(callback = start_edit_event, pattern = '^[0-9]{4}$')],
                        
                AFTER_ADMIN_PANEL: [CallbackQueryHandler(callback = dashboard, pattern = '^(back)$')]

            },

            fallbacks = [CommandHandler('cancel', cancel)],
            allow_reentry = True
        )
    dispatcher.add_handler(conv_handler)

    list_pending_events, list_pending_venues, list_eventIDs, list_venueIDs = getPendingEventsVenues()
    # create unique command for each approval and rejection of the events and venue bookings:
    for i in range(len(list_eventIDs)):
        approvecommandtext = 'approveEvent' + str(list_eventIDs[i])
        rejectcommandtext = 'rejectEvent' + str(list_eventIDs[i])
        dispatcher.add_handler(CommandHandler(command = approvecommandtext, callback = admin_process_event))
        dispatcher.add_handler(CommandHandler(command = rejectcommandtext, callback = admin_process_event))
    for i in range(len(list_venueIDs)):
        approvecommandtext = 'approveVenue' + str(list_venueIDs[i])
        rejectcommandtext = 'rejectVenue' + str(list_venueIDs[i])
        dispatcher.add_handler(CommandHandler(command = approvecommandtext, callback = admin_process_venue))
        dispatcher.add_handler(CommandHandler(command = rejectcommandtext, callback = admin_process_venue))

    dispatcher.add_handler(CallbackQueryHandler(callback = admin_panel, pattern = '^(return_admin_panel)$'))

    published_events_list = DB().generate_all_approved_events()
    # create unique command for each registration of events:
    for i in range(len(published_events_list)):
        registercommandtext = 'registerForEvent' + str(published_events_list[i][0])
        dispatcher.add_handler(CommandHandler(command = registercommandtext, callback = confirm_event_registration))

    updater.start_polling()
    updater.idle()
Пример #12
0
def do_test(db, password=''):
    db = DB(password=password, db=db)
    ret = db.get_last_day('classify')
    print 'last day is', ret
Пример #13
0
from dbhelper import DB
from math import ceil
import random as rand
import bcrypt, cfg, os, shutil, json

try:
    from BytesIO import BytesIO
except ImportError:
    from io import BytesIO

app = Flask(__name__)
app.secret_key = "omgitsosecret"
app.wsgi_app = ProxyFix(app.wsgi_app)
login_manager = LoginManager()
login_manager.init_app(app)
db = DB()

from utils import runHlsThread
runHlsThread()

app.jinja_env.globals['cfg'] = cfg


@app.route("/videos", methods=["GET"])
@login_required
def videos():
    count = db.count("videos")

    n_pages = ceil(count / cfg.V_PAGE_ROWS)
    page = request.args.get('page')
    try:
Пример #14
0
    def login(token):
        if (not DB().user_login(token)):
            return False

        User.currentUser = User("test", token)
        return DB().user_login(token)
Пример #15
0
 def register(name):
     token = DB().add_user(name)
     User.currentUser = User(name, token)
     return token