예제 #1
0
파일: login.py 프로젝트: libarty/ine_client
    def user_enter(self):
        # get field username and password
        username = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[0],
                self.arr_id[list(self.arr_id)[0]][0])).edit.text()
        password = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[0],
                self.arr_id[list(self.arr_id)[0]][1])).edit.text()

        # get url for enter
        url = "api/auth/token/login/"
        url2 = "api/user/"
        # check fields
        if '@' in username:
            user = requests.get(self.url + url2 + '?email=' + username)
            user_dict = json.loads(user.content.decode('utf-8'))
            if not user_dict:
                self.login.error_block.show()
                self.login.error_block.setText(get_lang('login_error001'))
        else:
            user = requests.get(self.url + url2 + '?username='******'utf-8'))
            if not user_dict:
                self.login.error_block.show()
                self.login.error_block.setText(get_lang('login_error001'))
        # login user
        if user_dict:
            data = {
                'username': user_dict[0]['username'],
                'password': password,
            }
            res = requests.post(self.url + url, data=data)
            # get token
            token = json.loads(res.content.decode('utf-8'))
            # check token
            try:
                token['non_field_errors']
                self.login.error_block.show()
                self.login.error_block.setText(get_lang('login_error002'))
            except KeyError:
                # save cookie
                copy = open(BASE_DIR + r'\cookies\token.json', 'w')
                token['username'] = username
                token['password'] = password
                copy.write(json.dumps(token))
                copy.close()
예제 #2
0
파일: render.py 프로젝트: ondratu/morias
def morias_template(req, template, **kwargs):
    if 'lang' not in kwargs:                # lang could be set explicit
        kwargs['lang'] = get_lang(req)
        languages = get_langs(req)
    else:
        languages = (kwargs['lang'],)       # then use languages

    kwargs['debug'] = req.cfg.debug

    if hasattr(req, 'login'):
        kwargs['login'] = req.login

    kwargs['site'] = Object()
    kwargs['site'].name = req.cfg.site_name
    kwargs['site'].description = req.cfg.site_description
    kwargs['site'].keywords = req.cfg.site_keywords
    kwargs['site'].author = req.cfg.site_author
    kwargs['site'].copyright = req.cfg.site_copyright
    kwargs['site'].styles = req.cfg.site_styles + kwargs.pop('styles', ())
    kwargs['site'].this = req.uri
    kwargs['site'].scheme = req.scheme
    kwargs['site'].domain = req.hostname

    kwargs['site'].modules = req.cfg.modules
    kwargs['site'].footers = req.cfg.footers

    kwargs['e'] = sdict()

    translations = translation('morias',
                               localedir=req.cfg.locales,
                               languages=languages,
                               fallback=True)

    return jinja_template(template, req.cfg.templates, translations, **kwargs)
예제 #3
0
def generic_message(bot, update, text_code, **kwargs):
    """Answers the message with a fixed text. Add kwargs to insert text."""
    message = update.effective_message
    lang = get_lang(update.effective_user.language_code)

    message.reply_text(lang.get_text(text_code, **kwargs),
                       parse_mode=ParseMode.MARKDOWN)
예제 #4
0
def empty_query(bot, update):
    user = user_manager.get_user(update.effective_user)
    user_lists = list_manager.get_lists_from_user(user.id)
    lang = get_lang(user.language_code)
    results = []

    if user_lists:
        for list in user_lists:
            message, keyboard = _create_list_message(list, lang), _create_list_keyboard(list, lang)
            new_result = InlineQueryResultArticle(id=list.id,
                                                  title=list.title,
                                                  description=lang.get_text("send_existent"),
                                                  reply_markup=InlineKeyboardMarkup(keyboard),
                                                  input_message_content=InputTextMessageContent(
                                                      message_text=message,
                                                      parse_mode=ParseMode.MARKDOWN,
                                                      disable_web_page_preview=True))
            results.append(new_result)
    else:
        message = lang.get_text("no_existent_meeting_message", bot_username=const.aux.BOT_USERNAME)

        results = [InlineQueryResultArticle(id="no_meeting",
                                            title=lang.get_text("no_existent_meeting_query_title"),
                                            description=lang.get_text("no_existent_meeting_query_description"),
                                            input_message_content=InputTextMessageContent(
                                                message_text=message,
                                                parse_mode=ParseMode.MARKDOWN,
                                                disable_web_page_preview=True))]

    update.inline_query.answer(results,
                               is_personal=True,
                               cache_time=const.QUERY_CACHE_TIME,
                               switch_pm_text=lang.get_text("donations_accepted"),
                               switch_pm_parameter="donation")
예제 #5
0
def donate(bot, update, user_data):
    if PAYMENT_PROVIDER_TOKEN is None:
        generic_message(bot, update, "donations_not_available")
        return

    lang = get_lang(update.effective_user.language_code)

    user_data["donation"] = 5
    text = lang.get_text("donate")
    keyboard = [[
        InlineKeyboardButton("❤ %s€ ❤" % user_data["donation"],
                             callback_data="donate")
    ],
                [
                    InlineKeyboardButton("⏬", callback_data="don*LLL"),
                    InlineKeyboardButton("⬇️", callback_data="don*LL"),
                    InlineKeyboardButton("🔽", callback_data="don*L"),
                    InlineKeyboardButton("🔼", callback_data="don*G"),
                    InlineKeyboardButton("⬆️", callback_data="don*GG"),
                    InlineKeyboardButton("⏫", callback_data="don*GGG")
                ]]
    update.message.reply_text(text,
                              reply_markup=InlineKeyboardMarkup(keyboard),
                              parse_mode=ParseMode.MARKDOWN,
                              disable_web_page_preview=True)
예제 #6
0
def generic_message(bot, update, text_code):
    # Responde a cualquier mensaje con un texto genérico, sin añadiduras.
    message = update.effective_message
    user = update.effective_user
    user_lang_code = user.language_code
    lang = get_lang(user_lang_code)

    message.reply_text(lang.get_text(text_code), parse_mode=ParseMode.MARKDOWN)
def _api_predict_text(text):
    data = urllib.urlencode({
        'key': PREDICT_API_KEY,
        'lang': get_lang(text),
        'q': text
    })
    request = urllib2.urlopen(PREDICT_API_URL, data)
    return json.loads(request.read())
예제 #8
0
def support(bot, update):
    message = update.effective_message
    lang = get_lang(update.effective_user.language_code)

    if len(message.text.replace("/support", "")) > 0:
        message.forward(const.ADMIN_TELEGRAM_ID)
        message.reply_text(lang.get_text("support_sent"))
    else:
        message.reply_text(lang.get_text("support_default"))
예제 #9
0
def ts3_notifications_panel(bot, update):
    """A panel on the private chat to activate/deactivate the ts3 notifications."""

    lang = get_lang(update.effective_user.language_code)

    keyboard = [[InlineKeyboardButton("🔔", callback_data="notify_activate"),
                 InlineKeyboardButton("🔕", callback_data="notify_deactivate")]]

    update.effective_message.reply_text(lang.get_text("notifications_panel"),
                                        reply_markup=InlineKeyboardMarkup(keyboard))
예제 #10
0
def full_query(bot, update):
    query_split = update.inline_query.query.split("*")
    user = user_manager.get_user(update.effective_user)
    lang = get_lang(user.language_code)

    # If the query starts with id* this is a list search by id.
    if query_split[0] == "id":
        list_id = query_split[1]
        list = list_manager.get_list_by_id(list_id)
        
        if list:
            message, keyboard = _create_list_message(list, lang), _create_list_keyboard(list, lang)
    
            results = [InlineQueryResultArticle(id=list.id,
                                                title=list.title,
                                                description=lang.get_text("send_existent_meeting_query_description"),
                                                reply_markup=InlineKeyboardMarkup(keyboard),
                                                input_message_content=InputTextMessageContent(
                                                    message_text=message,
                                                    parse_mode=ParseMode.MARKDOWN,
                                                    disable_web_page_preview=True)
                                                )]
        else:
            message = lang.get_text("list_not_found_message")

            results = [InlineQueryResultArticle(id="not_found",
                                                title=lang.get_text("list_not_found_query_title"),
                                                description=lang.get_text("list_not_found_query_description"),
                                                input_message_content=InputTextMessageContent(
                                                    message_text=message,
                                                    parse_mode=ParseMode.MARKDOWN,
                                                    disable_web_page_preview=True
                                                ))]

    else:
        list_id = uuid4()
        keyboard = _create_list_keyboard(List, lang, list_id)

        results = [InlineQueryResultArticle(id=list_id,
                                            title=update.inline_query.query,
                                            description=lang.get_text("press_to_send"),
                                            reply_markup=InlineKeyboardMarkup(keyboard),
                                            input_message_content=InputTextMessageContent(
                                                message_text="*%s*" % update.inline_query.query,
                                                parse_mode=ParseMode.MARKDOWN,
                                                disable_web_page_preview=True
                                            ))]

    update.inline_query.answer(results,
                               is_personal=True,
                               cache_time=const.QUERY_CACHE_TIME,
                               switch_pm_text=lang.get_text("donations_accepted"),
                               switch_pm_parameter="donation")
예제 #11
0
def ts3_command_group(bot, update):
    global last_ts3_command_usage
    lang = get_lang(update.effective_user.language_code)

    # Check if the command was used early in the group.
    if last_ts3_command_usage + const.GROUP_COMMAND_USAGE_DELAY < time() or \
            update.effective_user.id == const.ADMIN_TELEGRAM_ID:
        ts3_command(bot, update)
    else:
        keyboard = [[InlineKeyboardButton(lang.get_text("use_in_pm"), url="t.me/%s?start=ts3" %
                                                                          const.aux.BOT_USERNAME)]]
        update.effective_message.reply_text(lang.get_text("use_the_command_in_private_chat"),
                                            reply_markup=InlineKeyboardMarkup(keyboard))
    last_ts3_command_usage = time()
예제 #12
0
def start(bot, update, args):
    if not args:
        generic_message(bot, update, "start", bot_username=const.aux.BOT_USERNAME)
    else:
        # Send the complete list of votes for a particular option.
        list_id, vote_option = args[0].split("_")
        list = list_manager.get_list_by_id(list_id)
        user = user_manager.get_user(update.effective_user)
        lang = get_lang(user.language_code)
        text = _create_complete_list_message(list, vote_option, lang)
        keyboard = _create_complete_list_keyboard(list, lang)
        update.effective_message.reply_text(text,
                                            reply_markup=InlineKeyboardMarkup(keyboard),
                                            parse_mode=ParseMode.MARKDOWN,
                                            disable_web_page_preview=True)
예제 #13
0
def get_clist(bot, update):
    user = user_manager.get_user(update.effective_user)
    lang = get_lang(user.language_code)
    vote_option, list_id = update.callback_query.data.split("*")[1:3]
    list = list_manager.get_list_by_id(list_id)
    text = _create_complete_list_message(list, vote_option, lang)
    keyboard = _create_complete_list_keyboard(list, lang)

    try:
        update.effective_message.edit_text(text,
                                           reply_markup=InlineKeyboardMarkup(keyboard),
                                           parse_mode=ParseMode.MARKDOWN,
                                           disable_web_page_preview=True)
    except Exception as e:
        pass

    update.callback_query.answer()
예제 #14
0
def send_donation_receipt(bot, update, user_data):
    lang = get_lang(update.effective_user.language_code)

    if "donation" not in user_data:
        user_data["donation"] = 5

    title = lang.get_text("donation_title")
    description = lang.get_text("donation_description")
    prices = [LabeledPrice(title, user_data["donation"] * 100)]

    bot.send_invoice(chat_id=update.effective_chat.id,
                     title=title,
                     description=description,
                     payload="approve_donation",
                     provider_token=PAYMENT_PROVIDER_TOKEN,
                     start_parameter="donacion",
                     currency="EUR",
                     prices=prices)
    update.effective_message.edit_reply_markup(reply_markup=InlineKeyboardMarkup([[]]))
예제 #15
0
def cast_vote(bot, update):
    user = user_manager.get_user(update.effective_user)
    lang = get_lang(user.language_code)
    vote, list_id = update.callback_query.data.split("*")[1:3]
    list = list_manager.get_list_by_id(list_id)

    if list:
        conn = database.get_connection()

        # Check if the user has voted before this list
        cur = conn.execute("SELECT vote FROM user_votes WHERE user_id=? AND list_id=?", [user.id, list.id])
        past_vote = cur.fetchone()
        if past_vote:
            # If it is a new vote type, we change the vote type.
            if past_vote[0] != vote:
                conn.execute("UPDATE user_votes SET vote=?, vote_timestamp=? WHERE user_id=? AND list_id=?",
                                  [vote, time(), user.id, list.id])
            # If it is the same, we remove the vote
            else:
                conn.execute("DELETE FROM user_votes WHERE user_id=? AND list_id=?", [user.id, list.id])

        else:
            conn.execute("INSERT INTO user_votes VALUES (?, ?, ?, ?)", [user.id, list.id, vote, time()])

        conn.commit()
        conn.close()

        message, keyboard = _create_list_message(list, lang), _create_list_keyboard(list, lang)

        bot.edit_message_text(text=message,
                              parse_mode=ParseMode.MARKDOWN,
                              disable_web_page_preview=True,
                              reply_markup=InlineKeyboardMarkup(keyboard),
                              inline_message_id=update.callback_query.inline_message_id)
        update.callback_query.answer("okay 👍")
    else:
        update.callback_query.answer(lang.get_text("warning_list_does_not_exist"), shot_alert=True)
        bot.edit_message_reply_markup(inline_message_id=update.callback_query.inline_message_id,
                                      reply_markup=InlineKeyboardMarkup([[]]))
예제 #16
0
파일: login.py 프로젝트: libarty/ine_client
    def __init__(self):
        super().__init__()
        self.resize(500, 500)
        pixmap = QtGui.QPixmap(BASE_DIR + r'\media\cur\1.png').scaled(20, 20)
        cursor = QtGui.QCursor(pixmap)
        self.setCursor(cursor)
        # set cursor
        pixmap = QtGui.QPixmap(BASE_DIR + r'\media\cur\2.png').scaled(20, 20)
        cursor2 = QtGui.QCursor(pixmap)

        # check connect to server
        v = False
        x = 0
        while v == False:
            try:
                test = requests.get(list_ip[x], timeout=5)
                self.url = list_ip[x]
                v = True
            except:
                if list_ip[x] == list_ip[-1]:
                    self.url = False
                    v = True
            x += 1

        # set array of widget names
        self.arr_id = {
            'log_sign_in': ['log_nickname',
                            'log_password'],  # exit, Registration, entry
            'log_registration': [
                'log_nickname', 'log_password', 'log_password_c', 'log_email',
                'log_phone'
            ],  # back->Sign_in, next->Check_code
            'log_check_code': ['log_code-1',
                               'log_code-2'],  # back->Registration, entry
        }

        # set main layout
        lay = QtWidgets.QVBoxLayout(self)
        lay.setSpacing(0)
        lay.setContentsMargins(0, 0, 0, 0)
        # set main widget
        main = QtWidgets.QWidget(self)
        main.setStyleSheet("background:{};".format(
            get_style('log_main_color')))
        lay.addWidget(main)
        # set layout for center other widgets
        main_lay = QtWidgets.QGridLayout(main)
        main_lay.setSpacing(0)
        main_lay.setContentsMargins(0, 0, 0, 0)

        # set animation background
        back = BackGeometryAnimation(num_x=10,
                                     num_y=10,
                                     color=get_style('log_back_color'),
                                     min_size=20,
                                     max_size=60,
                                     min_rotate=0,
                                     max_rotate=90,
                                     duration=8000,
                                     parent=self)
        main_lay.addWidget(back, 0, 0, 1, 1, alignment=QtCore.Qt.AlignCenter)
        # set text widget
        for x in self.arr_id:
            center = QtWidgets.QWidget(self)
            # set id
            setattr(self, 'center_{}'.format(x), center)
            center.setStyleSheet("background:{};".format(
                get_style('log_center_color')))
            center.setFixedWidth(get_style('log_center_width'))
            # set layout for content
            center.center_lay = QtWidgets.QVBoxLayout(center)
            center.title = QtWidgets.QLabel(center)

            # set style for title
            center.title.setStyleSheet(
                "background:{};padding:{}px;color:{};font-size:{}px;".format(
                    get_style('log_title_color'),
                    get_style('log_title_padding'),
                    get_style('log_title_text_color'),
                    get_style('log_title_size')))
            if get_style('log_title_center'):
                center.title.setAlignment(QtCore.Qt.AlignHCenter
                                          | QtCore.Qt.AlignVCenter)

            # set text
            center.title.setText(get_lang(x))
            center.center_lay.addWidget(center.title)

            # set triangle style
            # for left
            style_left = 'background:qconicalgradient(cx:{} , cy:0.5, angle:{}, stop:0.1450 {}, stop:0.1451 {})'.format(
                0,
                334,
                get_style('log_edblock_triangle_color'),
                get_style('log_edblock_triangle_back'),
            )
            # for right
            style_right = 'background:qconicalgradient(cx:{} , cy:0.5, angle:{}, stop:0.1450 {}, stop:0.1451 {})'.format(
                1,
                153,
                get_style('log_edblock_triangle_color'),
                get_style('log_edblock_triangle_back'),
            )

            for y in range(len(self.arr_id[x])):
                center.text_block = TextBlock(
                    parent=center,
                    back_color=get_style('log_edblock_back_color'),
                    title_color=get_style('log_edblock_title_color'),
                    title_text_color=get_style('log_edblock_title_text_color'),
                    title_size=get_style('log_edblock_title_size'),
                    title_padding=get_style('log_edblock_title_padding'),
                    title_center=get_style('log_edblock_title_center'),
                    title_text=get_lang(self.arr_id[x][y]),
                    edit_color=get_style('log_edblock_edit_color'),
                    edit_text_color=get_style('log_edblock_edit_text_color'),
                    edit_size=get_style('log_edblock_edit_size'),
                    edit_padding=get_style('log_edblock_edit_padding'),
                    edit_text='',
                    type='Password' if 'password' in self.arr_id[x][y] else
                    'Phone' if 'phone' in self.arr_id[x][y] else 'Text')

                # set id
                setattr(self, 'text_block_{}_{}'.format(x, self.arr_id[x][y]),
                        center.text_block)
                center.center_lay.addWidget(center.text_block)
            # block for error
            center.error_block = QtWidgets.QLabel(center)
            center.error_block.setStyleSheet(
                'background:{};color:{};font-size:{};padding:{}px'.format(
                    get_style('log_error_back_color'),
                    get_style('log_error_text_color'),
                    get_style('log_error_size'),
                    get_style('log_error_padding'),
                ))
            center.error_block.hide()
            center.center_lay.addWidget(center.error_block)
            # block for buttons
            center.widget_button = QtWidgets.QWidget(center)
            center.widget_button_lay = QtWidgets.QHBoxLayout(
                center.widget_button)
            center.center_lay.addWidget(center.widget_button)
            # add center widget
            main_lay.addWidget(center,
                               0,
                               0,
                               1,
                               1,
                               alignment=QtCore.Qt.AlignCenter)
            # set right button
            center.right_button = QtWidgets.QPushButton(center)
            center.right_button.setStyleSheet(
                'border:none;{}'.format(style_right))
            center.right_button.setFixedHeight(get_style('log_button_size'))
            center.right_button.setFixedWidth(get_style('log_button_size'))
            # set left button
            center.left_button = QtWidgets.QPushButton(center)
            center.left_button.setStyleSheet(
                'border:none;{}'.format(style_left))
            center.left_button.setFixedHeight(get_style('log_button_size'))
            center.left_button.setFixedWidth(get_style('log_button_size'))

            # set cursor
            center.right_button.setCursor(cursor2)
            center.left_button.setCursor(cursor2)

            # set buttons on the sides
            center.vs = QtWidgets.QSpacerItem(0, 0,
                                              QtWidgets.QSizePolicy.Expanding,
                                              QtWidgets.QSizePolicy.Minimum)

            # set layout
            center.widget_button_lay.addWidget(center.left_button)
            center.widget_button_lay.addItem(center.vs)
            center.widget_button_lay.addWidget(center.right_button)

            # hide each block
            center.hide()

        # get each block individually

        # get login block
        self.login = getattr(self, 'center_{}'.format(list(self.arr_id)[0]))

        try:
            way = open(BASE_DIR + r'\cookies\token.json', 'r')
            save_log = json.load(way)

            log = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[0],
                    self.arr_id[list(self.arr_id)[0]][0]))
            pas = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[0],
                    self.arr_id[list(self.arr_id)[0]][1]))

            log.edit.setText(save_log['username'])
            pas.edit.setText(save_log['password'])

        except FileNotFoundError:
            pass

        if not self.url:
            self.login.error_block.show()
            self.login.error_block.setText(get_lang('ServerError000'))

        self.login.show()

        # set buttons for login block
        self.login.button_registr = QtWidgets.QPushButton(self.login)
        self.login.button_registr.setStyleSheet(
            'border:none;background:{};color:{};padding:{}px;font-size:{}px;'.
            format(
                get_style('log_edblock_registr_color'),
                get_style('log_edblock_registr_text_color'),
                get_style('log_edblock_registr_padding'),
                get_style('log_edblock_registr_size'),
            ))
        self.login.button_registr.setText(get_lang('log_registration'))
        # set layout
        self.login.center_lay.addWidget(self.login.button_registr)
        # set cursor
        self.login.button_registr.setCursor(cursor2)

        # get Registration block
        self.regist = getattr(self, 'center_{}'.format(list(self.arr_id)[1]))

        # get user verification block
        self.check_code = getattr(self,
                                  'center_{}'.format(list(self.arr_id)[2]))

        if self.url:
            # exit the program
            self.login.left_button.clicked.connect(self.close_program)
            # enter the program
            self.login.right_button.clicked.connect(self.user_enter)
            # go to registration panel
            self.login.button_registr.clicked.connect(self.show_center_regist)
            # back to login block
            self.regist.left_button.clicked.connect(self.show_center_login)
            # go to the user verification block
            self.regist.right_button.clicked.connect(self.show_center_code)
            # back to registration panel
            self.check_code.left_button.clicked.connect(
                self.show_center_regist)
            # add user
            self.check_code.right_button.clicked.connect(self.add_user)

            self.get_ip = socket.gethostbyname(socket.gethostname())
예제 #17
0
파일: login.py 프로젝트: libarty/ine_client
    def show_center_code(self):
        #print(list(self.arr_id)[1])

        '/api/already_ip/get/?ip_name=127.0.0.1:80001'

        url = "api/already_ip/get/?ip_name="
        url2 = "api/user/"
        url3 = 'api/extra_user/get/?phone='
        url4 = 'api/auth/users/'

        check_ip = requests.get(self.url + url + self.get_ip)
        check_ip_dict = json.loads(check_ip.content.decode('utf-8'))
        if check_ip_dict:
            self.regist.error_block.show()
            self.regist.error_block.setText(get_lang('login_error003'))
        else:
            # get text
            password_text = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[1],
                    self.arr_id[list(self.arr_id)[1]][1])).edit.text()
            c_password_text = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[1],
                    self.arr_id[list(self.arr_id)[1]][2])).edit.text()
            phone_text = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[1],
                    self.arr_id[list(self.arr_id)[1]][4])).edit.text()
            email_text = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[1],
                    self.arr_id[list(self.arr_id)[1]][3])).edit.text()
            username_text = getattr(
                self, 'text_block_{}_{}'.format(
                    list(self.arr_id)[1],
                    self.arr_id[list(self.arr_id)[1]][0])).edit.text()

            # check validate fields
            if re.search(r'[^a-z0-9_]', username_text):
                self.regist.error_block.show()
                self.regist.error_block.setText(get_lang('login_error004.1'))
            elif len(username_text) > 20 or len(username_text) < 3:
                self.regist.error_block.show()
                self.regist.error_block.setText(get_lang('login_error004.2'))
            else:
                user = requests.get(self.url + url2 + '?username='******'utf-8'))
                if user_dict:
                    self.regist.error_block.show()
                    self.regist.error_block.setText(
                        get_lang('login_error004.3'))
                else:

                    if '@' in email_text and '.' in email_text:
                        user = requests.get(self.url + url2 + '?email=' +
                                            email_text)
                        user_dict = json.loads(user.content.decode('utf-8'))
                        if user_dict:
                            self.regist.error_block.show()
                            self.regist.error_block.setText(
                                get_lang('login_error005.1'))
                        else:
                            if len(phone_text) >= 9:
                                phone_get = requests.get(self.url + url3 +
                                                         phone_text)
                                phone_dict = json.loads(
                                    phone_get.content.decode('utf-8'))
                                if phone_dict:
                                    self.regist.error_block.show()
                                    self.regist.error_block.setText(
                                        get_lang('login_error006.2'))
                                else:

                                    err = validate_password(password_text)
                                    if err['ErrorPassword']:
                                        self.regist.error_block.show()
                                        self.regist.error_block.setText(
                                            get_lang('login_error007.1'))
                                    else:
                                        if not password_text == c_password_text:
                                            self.regist.error_block.show()
                                            self.regist.error_block.setText(
                                                get_lang('login_error007.2'))
                                        else:
                                            try:
                                                data = {
                                                    'username': username_text,
                                                    'password': password_text,
                                                    'email': email_text,
                                                }
                                                res = requests.post(self.url +
                                                                    url4,
                                                                    data=data)
                                                self.regist.hide()
                                                self.check_code.show()
                                            except:
                                                print("something error")

                            else:
                                self.regist.error_block.show()
                                self.regist.error_block.setText(
                                    get_lang('login_error006.1'))
                    else:
                        self.regist.error_block.show()
                        self.regist.error_block.setText(
                            get_lang('login_error005.2'))
예제 #18
0
파일: login.py 프로젝트: libarty/ine_client
    def add_user(self):

        # get text
        password = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[1],
                self.arr_id[list(self.arr_id)[1]][1])).edit.text()
        phone = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[1],
                self.arr_id[list(self.arr_id)[1]][4])).edit.text()
        username = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[1],
                self.arr_id[list(self.arr_id)[1]][0])).edit.text()

        code_1 = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[2],
                self.arr_id[list(self.arr_id)[2]][0])).edit.text()
        code_2 = getattr(
            self, 'text_block_{}_{}'.format(
                list(self.arr_id)[2],
                self.arr_id[list(self.arr_id)[2]][1])).edit.text()

        url = 'api/auth/users/activation/'

        data = {
            'uid': code_1,
            'token': code_2,
        }
        try:
            res = requests.post(self.url + url, data=data)
            res_dict = json.loads(res.content.decode('utf-8'))
            self.check_code.error_block.show()
            self.check_code.error_block.setText(get_lang('login_error008'))
            print(res_dict)
        except:
            # login
            url = "api/auth/token/login/"
            url2 = "api/extra_user/post/"
            url3 = "api/already_ip/post/"
            url4 = "api/user/"
            data = {
                'username': username,
                'password': password,
            }
            res = requests.post(self.url + url, data=data)
            # get token
            token = json.loads(res.content.decode('utf-8'))
            # check token
            try:
                token['non_field_errors']
                self.login.error_block.show()
                self.login.error_block.setText(get_lang('login_error002'))
            except KeyError:
                # get id for extra user fields
                get_id = requests.get(self.url + url4 + '?username='******'utf-8'))

                # for phone
                data2 = {
                    'user': int(get_id_dict[0]['id']),
                    'phone': int(phone),
                }
                # for ip
                data3 = {
                    'ip_name': self.get_ip,
                }
                headers = {'Authorization': 'Token ' + token["auth_token"]}

                requests.post(self.url + url2, data=data2, headers=headers)
                requests.post(self.url + url3, data=data3, headers=headers)
                # save cookie
                copy = open(BASE_DIR + r'\cookies\token.json', 'w')
                token['username'] = username
                token['password'] = password
                copy.write(json.dumps(token))
                copy.close()