Exemple #1
0
from fw.auth.social_services import SocialServiceBackends
from fw.db.sql_base import db as sqldb
from fw.documents.address_enums import RFRegionsEnum
from fw.documents.batch_manager import BatchManager
from fw.documents.db_fields import DocumentBatchDbObject
from fw.documents.fields.general_doc_fields import DocAddressField
from fw.documents.fields.simple_doc_fields import DocDateTimeField
from services.notarius.data_model.models import NotariusObject, NotariusBookingObject

notarius_bp = Blueprint('notarius', __name__)


@notarius_bp.route('/meeting/notarius/', methods=['GET'])
@api_view
@login_required
@validate_arguments(batch_id=ArgumentValidator())
def notarius_list(batch_id=None):
    batch = DocumentBatchDbObject.query.filter_by(id=batch_id,
                                                  _owner=current_user,
                                                  deleted=False).scalar()
    if not batch:
        raise errors.InvalidParameterValue('batch_id')

    batch_manager = BatchManager.init(batch)
    assert batch_manager

    region = batch_manager.get_batch_region(batch_id)

    if not region:
        return {'result': []}
    query = NotariusObject.query.filter_by(region=region)
Exemple #2
0
ifns_bp = Blueprint('ifns', __name__)


_okvad_to_json = lambda x: {
    '_id': x.id,
    'okved': x.okved,
    'caption': x.caption,
    'nalog': x.nalog,
    'parent': x.parent
}

@ifns_bp.route('/get_okvad/', methods=['POST'])
@api_view
@validate_arguments(
    parent=ArgumentValidator(required=False),
    batch_type=ArgumentValidator(required=False),
    search=ArgumentValidator(required=False)
)
def get_okvad(parent=None, batch_type=None, search=None):
    search = search or ""
    make_okvad = lambda x: x['class'] + (
        ('.%s' % x['group'] + ('.%s' % x['kind'] if 'kind' in x else '')) if 'group' in x else '')

    query = OkvadObject.query.filter()
    if parent:
        query = query.filter_by(parent=parent)
        if search:
            query = query.filter(OkvadObject.caption.ilike(u'%%%s%%' % search))

        result = [_okvad_to_json(item) for item in query]
Exemple #3
0
from fw.api import errors

from fw.api.args_validators import validate_arguments, ArgumentValidator
from fw.api.base_handlers import api_view
from fw.db.sql_base import db as sqldb
from fw.documents.db_fields import DocumentBatchDbObject
from services.russian_post.db_models import RussianPostTrackingItem

russian_post_bp = Blueprint('russian_post_bp', __name__)


@russian_post_bp.route('/external/russianpost/mail/status/', methods=['GET'])
@api_view
@login_required
@validate_arguments(
    batch_id=ArgumentValidator(required=True),
    #tracking=ArgumentValidator(required=True)
)
def get_mail_status(batch_id=None):
    tracking = RussianPostTrackingItem.query.filter(
        RussianPostTrackingItem.batch_id == batch_id,
        RussianPostTrackingItem.owner_id != 111111
    ).first()    # not scalar
    if not tracking:
        raise errors.PostTrackingItemNotFound()

    return {'result': {
        'status': tracking.status,
        'status_caption': tracking.status_caption
    }}
Exemple #4
0
    try:
        if not batch_manager.finalize_batch(current_app.config,
                                            current_app.logger, batch):
            raise errors.DocumentBatchFinalizationError()
    except Exception:
        current_app.logger.exception(u"Finalisation error")
        return {"result": False}

    return {"result": True}


@documents_bp.route('/batch/finalise/', methods=['POST'])
@api_view
@login_required
@validate_arguments(batch_id=ArgumentValidator())
def finalize_batch(batch_id=None):
    batch = DocumentBatchDbObject.query.filter_by(id=batch_id,
                                                  _owner=current_user,
                                                  deleted=False).first()
    if not batch:
        raise errors.BatchNotFound()
    return _finalize_batch(batch)


@documents_bp.route('/batch/finalise/cancel/', methods=['POST'])
@api_view
@login_required
@validate_arguments(batch_id=ArgumentValidator())
def cancel_batch_finalization(batch_id=None):
    batch = DocumentBatchDbObject.query.filter_by(id=batch_id,
Exemple #5
0
                ] and 'city_type' in item and item['city_type'] == u"г":
                    item['city'] = None
                    item['city_type'] = None
                    item['city_type_full'] = None

            resp = Response(json.dumps(data), mimetype='application/json')
            _set_cors_headers(resp)
            current_app.logger.debug(u"suggest finished")
            return resp
        except Exception:
            pass

    resp = Response('[]', mimetype='application/json')
    _set_cors_headers(resp)
    return resp


@general_bp.route('/geoip/', methods=['GET'])
@api_view
@validate_arguments(ip=ArgumentValidator(required=False))
def geo_ip(ip=None):
    ip = ip or request.remote_addr
    try:
        result = geoip_utils.GeoIpLocator.get_location(ip)
        if not result:
            raise Exception()
    except Exception:
        current_app.logger.exception(u"Failed to get location")
        return {'result': {'region': RFRegionsEnum.RFR_SPB}}
    return {'result': result}
Exemple #6
0
    return result


@auth_bp.route('/account/profile/', methods=['GET'])
@api_view
@login_required
def get_profile():
    data = get_user_api_structure(current_user)
    return {"result": data}


@auth_bp.route('/account/confirm/', methods=['POST', 'GET'])
@api_view
@validate_arguments(code=ConfirmationCodeValidator(),
                    user_id=ArgumentValidator(required=False))
def confirm_account(code=None, user_id=None):
    if len(code) != current_app.config['max_activation_link_length'] and \
                    len(code) != current_app.config['digital_activation_link_length']:
        raise errors.InvalidParameterValue('code')

    if len(code) == current_app.config['digital_activation_link_length'] and not user_id:
        raise errors.MissingRequiredParameter('code')

    link_type = ConfirmationLinkTypeEnum.CLT_MOBILE if (
        len(code) == current_app.config['digital_activation_link_length']) else ConfirmationLinkTypeEnum.CLT_EMAIL
    user = UserManager.confirm_email_or_mobile(code, user_id if user_id else None, link_type)
    if not user:
        raise errors.UserNotFound()

    data = get_user_api_structure(user)
Exemple #7
0
from fw.db.sql_base import db as sqldb
from fw.documents.db_fields import DocumentBatchDbObject
from fw.storage.file_storage import FileStorage
from services.yurist import yurist_manager
from services.yurist.data_model.enums import YuristBatchCheckStatus
from services.yurist.data_model.fields import YuristBatchCheck
from services.yurist.data_model.models import YuristBatchCheckObject, YuristCheckFilesObject

yurist_bp = Blueprint('yurist', __name__)


@yurist_bp.route('/batch/yurist/set/', methods=['POST'])
@api_view
@login_required
@validate_arguments(
    batch_id=ArgumentValidator(required=True),
    check=BoolTypeValidator(required=True),
    file_list=ArgumentValidator(required=False),
    typos_correction=BoolTypeValidator(required=False)
)
def yurist_set(batch_id=None, check=None, file_list=None, typos_correction=False):
    typos_correction = bool(typos_correction)
    batch_db = DocumentBatchDbObject.query.filter_by(id=batch_id, _owner=current_user, deleted=False).first()
    if not batch_db:
        raise errors.BatchNotFound()

    if check:
        new = True
        # search for any active check
        cur_check_obj = YuristBatchCheckObject.query.filter(
            YuristBatchCheckObject.batch_id == batch_id,
    result += u"\n\n"
    for i in xrange(min(len(res), 10)):
        result += "\n%s" % unicode(res[i].bysize)
    result += u"\n\n"
    for i in xrange(min(len(res), 10)):
        result += "\n%s" % unicode(res[i].byclodo)
    result += u"\n\n"
    for i in xrange(min(len(res), 10)):
        result += "\n%s" % unicode(res[i].byid)

    return u"<html><body><pre>%s</pre></body></html>" % result


@system_bp.route('/sys/get_batch_doc/', methods=['GET'])
@api_view
@validate_arguments(batch_id=ArgumentValidator(required=True), document_id=ArgumentValidator(required=True))
def get_batch_doc(batch_id=None, document_id=None):
    config = current_app.config
    if not config['STAGING'] and not config['DEBUG']:
        abort(404)
    batch = DocumentBatchDbObject.query.filter_by(id=batch_id).first()
    if not batch:
        raise errors.BatchNotFound()

    doc = BatchDocumentDbObject.query.filter_by(id=document_id).first()

    file_obj = doc.file
    if file_obj:
        file_path = FileStorage.get_path(file_obj, current_app.config)
        if os.path.exists(file_path) and file_path.endswith('.pdf'):
            file_path = file_path[:-4] + '.text-src'
Exemple #9
0
from fw.documents.fields.doc_fields import DocumentBatch
from fw.documents.schema.conditions import Condition
from fw.api import errors
from fw.api.args_validators import validate_arguments, ArgumentValidator
from fw.api.base_handlers import api_view
from fw.documents.batch_manager import BatchManager
from services.partners.models import AccountantPartnersObject, BankPartnersObject, BankPartnerRequestObject, \
    BankPartnersServiceObject, StampPartnersObject

partners_bp = Blueprint('partners', __name__)


@partners_bp.route('/partners/accounts/', methods=['GET'])
@api_view
@login_required
@validate_arguments(batch_id=ArgumentValidator())
def get_accountant_partners(batch_id=None):
    accountant_partner_list = []

    try:
        region = BatchManager.get_batch_region(batch_id)
    except Exception, ex:
        current_app.logger.exception(u"Failed to get batch region")
        raise errors.BatchNotFound()

    partners = AccountantPartnersObject.query.filter_by(enabled=True)
    if region:
        partners = partners.filter(
            or_(AccountantPartnersObject.region.contains([region]),
                AccountantPartnersObject.region == None))
    for item in partners.order_by(AccountantPartnersObject.sort_index.asc()):
Exemple #10
0
# -*- coding: utf-8 -*-
from flask import Blueprint
from flask_login import login_required

from fw.api import errors
from fw.api.args_validators import validate_arguments, ArgumentValidator, IntValidator
from fw.api.base_handlers import api_view
from services.car_assurance.db_models import CarAssurance, CarAssuranceBranch

car_assurance_bp = Blueprint('car_assurance', __name__)


@car_assurance_bp.route('/structures/insurances/', methods=['GET'])
@api_view
@login_required
@validate_arguments(type=ArgumentValidator(required=True),
                    search=ArgumentValidator(required=False),
                    limit=IntValidator(required=False,
                                       min_val=1,
                                       max_val=100500),
                    offset=IntValidator(required=False,
                                        min_val=0,
                                        max_val=100500))
def get_car_insurances(search=None, limit=100, offset=0, **kwargs):
    if 'type' not in kwargs:
        raise errors.MissingRequiredParameter('type')
    type_arg = kwargs['type']
    if type_arg != 'osago':
        raise errors.InvalidParameterValue('type')

    if search: