from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound from sqlalchemy import or_, not_, and_ from libs import datetime2timestamp, filter_dict, is_keys_in_dict, smart_unicode from arara_thrift.ttypes import * from arara import arara_manager from arara import model from arara import ara_memcached from arara.util import require_login from arara.util import log_method_call_with_source, log_method_call_with_source_important, log_method_call_with_source_duration from arara.util import send_mail import etc.arara_settings from etc import arara_settings log_method_call = log_method_call_with_source('member_manager') log_method_call_duration = log_method_call_with_source_duration('member_manager') log_method_call_important = log_method_call_with_source_important('member_manager') import re PROPER_USERNAME_REGEX = re.compile(r'^[a-zA-Z0-9_\-\.]+$') # KAIST E-Mail Address Restriction # 계정명 길이 경계값이 4-20 또는 3-20 으로 알려져 있어서, 1씩 여유를 두었다 PROPER_EMAIL_REGEX = re.compile(r'^[0-9a-zA-Z\_\-\.]{2,21}@kaist.(ac.kr|edu)$') # TODO: non-KAIST E-Mail Address 에 대한 검증도 준비한다 class NoPermission(Exception): pass class WrongPassword(Exception):
import logging import traceback from sqlalchemy.exc import InvalidRequestError from sqlalchemy.sql import func, select from arara import model from arara.util import require_login from arara.util import log_method_call_with_source, log_method_call_with_source_duration, log_method_call_with_source_important from arara.read_status import ReadStatus from arara.read_status.default_backend import ReadStatusManagerDefault from arara_thrift.ttypes import * log_method_call = log_method_call_with_source('read_status_manager_db') log_method_call_duration = log_method_call_with_source_duration('read_status_manager_db') log_method_call_important = log_method_call_with_source_important('read_status_manager_db') class ReadStatusManagerDB(ReadStatusManagerDefault): ''' 읽은 글, 통과한글 처리관련 클래스 ''' def __init__(self, engine): super(ReadStatusManagerDB, self).__init__(engine) self.read_status = {} def _get_dict(self, item, whitelist=None): item_dict = item.__dict__ if whitelist: filtered_dict = filter_dict(item_dict, whitelist)
from sqlalchemy.sql import func, select from arara import model from arara.util import require_login from arara.util import ( log_method_call_with_source, log_method_call_with_source_duration, log_method_call_with_source_important, ) from arara.read_status import ReadStatus from arara.read_status.default_backend import ReadStatusManagerDefault from arara_thrift.ttypes import * log_method_call = log_method_call_with_source("read_status_manager_db") log_method_call_duration = log_method_call_with_source_duration("read_status_manager_db") log_method_call_important = log_method_call_with_source_important("read_status_manager_db") class ReadStatusManagerDB(ReadStatusManagerDefault): """ 읽은 글, 통과한글 처리관련 클래스 """ def __init__(self, engine): super(ReadStatusManagerDB, self).__init__(engine) self.read_status = {} def _get_dict(self, item, whitelist=None): item_dict = item.__dict__ if whitelist:
from sqlalchemy.orm.exc import NoResultFound, MultipleResultsFound from sqlalchemy import or_, not_, and_ from libs import datetime2timestamp, filter_dict, is_keys_in_dict, smart_unicode from arara_thrift.ttypes import * from arara import arara_manager from arara import model from arara import ara_memcached from arara.util import require_login from arara.util import log_method_call_with_source, log_method_call_with_source_important, log_method_call_with_source_duration from arara.util import send_mail import etc.arara_settings from etc import arara_settings log_method_call = log_method_call_with_source('member_manager') log_method_call_duration = log_method_call_with_source_duration( 'member_manager') log_method_call_important = log_method_call_with_source_important( 'member_manager') import re PROPER_USERNAME_REGEX = re.compile(r'^[a-zA-Z0-9_\-\.]+$') # KAIST E-Mail Address Restriction # 계정명 길이 경계값이 4-20 또는 3-20 으로 알려져 있어서, 1씩 여유를 두었다 PROPER_EMAIL_REGEX = re.compile(r'^[0-9a-zA-Z\_\-\.]{2,21}@kaist.(ac.kr|edu)$') # TODO: non-KAIST E-Mail Address 에 대한 검증도 준비한다 class NoPermission(Exception): pass