Exemple #1
0
    def put(self, key):
        parser = reqparse.RequestParser()
        parser.add_argument('content', type=str, required=True)
        parser.add_argument('id_record', type=str, required=True)
        args = parser.parse_args()
        content = args["content"]
        content = content.lower()
        record = args["id_record"]

        # Check Relation
        if model.check_relation("record", record):
            return response(401,
                            message="Relation to Record error Check Your Key")

        # Validation
        if validation.content_validation(record, content):
            return response(401, message="Named Error")
        if validation.count_character(content):
            return response(401, message="Count Character Error")

        data = {
            "key": key,
            "value": content,
            "record": record,
            "created_at": utils.get_datetime()
        }
        try:
            model.update("content", key, data)
        except Exception as e:
            return response(401, message=str(e))
        else:
            return response(200, data=data, message="Edited")
Exemple #2
0
    def put(self, key):
        parser = reqparse.RequestParser()
        parser.add_argument('value', type=str, required=True)
        parser.add_argument('name', type=str, required=True)
        parser.add_argument('id_record', type=str, required=True)
        args = parser.parse_args()
        serial = args["value"]
        name = args["name"]
        record_key = args["id_record"]

        # Check Relation
        if model.check_relation("record", record_key):
            return response(401,
                            message="Relation to Record error Check Your Key")

        if not utils.check_record_serial(record_key):
            return response(401, message="No Serial Record")

        data = {
            "key": key,
            "value": serial,
            "name": name,
            "record": record_key,
            "created_at": utils.get_datetime()
        }
        try:
            model.update("serial", key, data)
        except Exception as e:
            return response(401, message=str(e))
        else:
            return response(200, data=data, message="Edited")
Exemple #3
0
    def put(self, id_userdata):
        parser = reqparse.RequestParser()
        parser.add_argument('email', type=str, required=True)
        parser.add_argument('first_name', type=str, required=True)
        parser.add_argument('last_name', type=str, required=True)
        parser.add_argument('location', type=str, required=True)
        args = parser.parse_args()

        data = {
            "where": {
                "id_userdata": id_userdata
            },
            "data": {
                "email": args['email'],
                "first_name": args['first_name'],
                "last_name": args['last_name'],
                "location": args['location'],
            }
        }

        try:
            db.update("tb_userdata", data=data)
        except Exception as e:
            message = {"status": False, "error": str(e)}
        else:
            message = {"status": True, "data": data}
        finally:
            return response(200, message=message)
Exemple #4
0
def update():
    id_userdata = get_jwt_identity()
    data = {
        "where":{
            "userdata_id": id_userdata
        },
        "data":{
            "email" : request.form['email'],
            "first_name" : request.form['first_name'],
            "last_name" : request.form['last_name'],
            "location" : request.form['location']
        }
    }

    try:
        db.update("tb_userdata", data=data)
    except Exception as e:
        message = {
            "status": False,
            "error": str(e)
        }
    else:
        message = {
            "status": True,
            "data": data
        }
    finally:
        return response(200, message=message)
Exemple #5
0
    def put(self, userdata_id):
        parser = reqparse.RequestParser()
        parser.add_argument('project_id', type=str, required=True)
        parser.add_argument('user_id', type=str, required=True)
        args = parser.parse_args()

        data = {
            "where":{
                "userdata_id": userdata_id
            },
            "data":{
                "project_id" : args['project_id'],
                "user_id" : args['user_id'],
            }
        }

        try:
            db.update("userdata", data=data)
        except Exception as e:
            message = {
                "status": False,
                "error": str(e)
            }
        else:
            message = {
                "status": True,
                "data": data
            }
        finally:
            return response(200, message=message)
Exemple #6
0
def sync_cname_default(id_zone, id_record):
    tags = {"id_record": id_record}
    cmd.zone_begin_http(url, tags)
    json_command = cmd.zone_insert(tags)
    check_res = send_http(url, json_command)
    if check_res:
        # state change
        state = change_state("id_record", id_record, "1")
        db.update("zn_record", data=state)
    cmd.zone_commit_http(url, tags)
Exemple #7
0
def sync_ns(id_zone):
    tags = {"id_zone": id_zone}
    cmd.z_begin(url, tags)
    result_ns = cmd.zone_ns_insert(tags)
    for i in result_ns:
        check_res = send_http(url, i['command'])
        if check_res:
            state = change_state("id_record", i['id_record'], "1")
            db.update("zn_record", data=state)
    cmd.z_commit(url, tags)
Exemple #8
0
def sync_soa(id_zone):
    tags = {"id_zone": id_zone}
    cmd.z_begin(url, tags)
    id_record, respons = cmd.zone_soa_insert_default(tags)
    check_res = send_http(url, respons)
    if check_res:
        # state change
        state = change_state("id_record", id_record, "1")
        db.update("zn_record", data=state)

    cmd.z_commit(url, tags)
Exemple #9
0
 def put(self, key):
     parser = reqparse.RequestParser()
     parser.add_argument('ttl', type=str, required=True)
     args = parser.parse_args()
     ttl = args["ttl"]
     data = {"key": key, "value": ttl}
     try:
         model.update("ttl", key, data)
     except Exception as e:
         return response(401, message=str(e))
     else:
         return response(200, data=data, message="Edited")
Exemple #10
0
def update_serial(serial_resource, increment="01"):
    serial = serial_resource["serial"]
    soa_record = serial_resource["soa_record"]
    rdata_record = serial_resource["rdata_record"]

    new_serial = helpers.increment_serial(serial, increment)
    new_rdata = helpers.replace_serial(rdata_record["rdata"], new_serial)
    content_data = {
        "where": {"record_id": soa_record["id"]},
        "data": {"rdata": new_rdata, "record_id": soa_record["id"]},
    }
    model.update("rdata", data=content_data)
Exemple #11
0
    def put(self, user_id):
        parser = reqparse.RequestParser()
        parser.add_argument("email", type=str, required=True)
        args = parser.parse_args()
        email = args["email"]
        args = parser.parse_args()

        if not model.is_unique(table="user", field="email", value=f"{email}"):
            return response(409, message="Duplicate Email")

        try:
            validator.validate("EMAIL", email)
        except Exception as e:
            return response(422, message=f"{e}")

        try:
            data = {"where": {"id": user_id}, "data": {"email": email}}
            row_count = model.update("user", data=data)
            if not row_count:
                return response(404)

            return response(200, data=data.get("data"))
        except Exception as e:
            current_app.logger.error(f"{e}")
            return response(500)
Exemple #12
0
def sync_conf_insert(id_zone):
    tags = {"id_zone": id_zone}
    respons_c_insert = cmd.config_insert(tags)
    cmd.conf_begin_http(url)
    check_res = send_http(url, respons_c_insert)
    if check_res:
        # state change
        state = change_state("id_zone", id_zone, "1")
        check = db.update("zn_zone", data=state)
        print(check)
    cmd.conf_commit_http(url)
Exemple #13
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('name', type=str, required=True)
        parser.add_argument('vat', type=str, required=True)
        parser.add_argument('id_number', type=str, required=True)
        parser.add_argument('address1', type=str, required=False)
        parser.add_argument('address2', type=str, required=False)
        parser.add_argument('city', type=str, required=False)
        parser.add_argument('state', type=str, required=False)
        parser.add_argument('postal_code', type=str, required=False)
        parser.add_argument('country_id', type=str, required=False)
        parser.add_argument('work_phone', type=str, required=True)
        parser.add_argument('email', type=str, required=True)
        parser.add_argument('first_name', type=str, required=True)
        parser.add_argument('last_name', type=str, required=True)
        args = parser.parse_args()
        client_data = {
            "name": args['name'],
            "vat_number": args['vat'],
            "id_number": args['id_number'],
            "address1": args['address1'],
            "address2": args['address2'],
            "city": args['city'],
            "state": args['state'],
            "postal_code": args['postal_code'],
            "country_id": args['country_id'],
            "work_phone": args['work_phone']
        }
        client_data_temps = utils.post_ninja("clients", client_data)
        contact_data = client_data_temps['data']['contacts']
        contact_db = db.get_by_id("contacts", "public_id",
                                  contact_data[0]['id'])[0]

        contact_data_update = {
            "where": {
                "id": str(contact_db['id'])
            },
            "data": {
                "email": args['email'],
                "first_name": args['first_name'],
                "last_name": args['last_name'],
                "phone": args['work_phone']
            }
        }

        try:
            a = db.update("contacts", contact_data_update)
        except Exception as e:
            return response(401, message=str(e))
        else:
            id = str(client_data_temps['data']['id'])
            client_data = utils.get_ninja(api="clients/" + id)['data']
        return response(200, data=client_data)
Exemple #14
0
    def put(self, key):
        parser = reqparse.RequestParser()
        parser.add_argument('email', type=str, required=True)
        parser.add_argument('project_id', type=str, required=True)
        args = parser.parse_args()
        project_id = args["project_id"]
        email = args["email"]
        if utils.check_unique("user", "email", email, key=key):
            return response(401, message="Duplicate email Detected")
        data_update = {
            "key": key,
            "email": email,
            "project_id": project_id,
            "state": "edited",
            "created_at": utils.get_datetime()
        }

        try:
            model.update("user", key, data_update)
        except Exception as e:
            return response(401, message=str(e))
        else:
            return response(200, data=data_update, message="Update Success")
Exemple #15
0
 def put(self, key):
     parser = reqparse.RequestParser()
     parser.add_argument('zone', type=str, required=True)
     parser.add_argument('id_user', type=str, required=True)
     args = parser.parse_args()
     zone = args["zone"]
     zone = zone.lower()
     id_user = args["id_user"]
     if utils.check_unique("zone", "value", zone, key=key):
         return response(401, message="Duplicate zone Detected")
     if validation.zone_validation(zone):
         return response(401, message="Named Error")
     data = {
         "key": key,
         "value": zone,
         "created_at": utils.get_datetime(),
         "user": id_user,
     }
     try:
         model.update("zone", key, data)
     except Exception as e:
         return response(401, message=str(e))
     else:
         return response(200, data=data, message="Edited")
Exemple #16
0
    def put(self, ttl_id):
        parser = reqparse.RequestParser()
        parser.add_argument("ttl", type=str, required=True)
        args = parser.parse_args()
        ttl = args["ttl"]

        if not ttl:
            return response(422)

        try:
            data = {"where": {"id": ttl_id}, "data": {"ttl": ttl}}
            row_count = model.update("ttl", data=data)
            if not row_count:
                return response(404)

            return response(200, data=data.get("data"))
        except Exception as e:
            return response(500, message=f"{e}")
Exemple #17
0
    def put(self, type_id):
        parser = reqparse.RequestParser()
        parser.add_argument("type", type=str, required=True)
        args = parser.parse_args()
        type_ = args["type"]

        if not type_:
            return response(422)

        try:
            data = {"where": {"id": type_id}, "data": {"type": type_}}
            row_count = model.update("type", data=data)
            if not row_count:
                return response(404)

            return response(200, data=data.get("data"))
        except Exception:
            return response(500)
Exemple #18
0
    def post(self):
        url_env = os.getenv("SOCKET_AGENT_HOST")
        port = os.getenv("SOCKET_AGENT_PORT")
        url_fix = url_env + ":" + port
        url = url_fix + "/api/command_rest"
        json_req = request.get_json(force=True)
        command = utils.get_command(request.path)
        init_data = parse.parser(json_req, command)
        respons = dict()

        if init_data['action'] == 'conf-read':
            respons = cmd.conf_read()
            http_respons = utils.send_http(url, data=respons)
            return response(200, data=http_respons)

        if init_data['action'] == 'conf-insert':
            tags = dict()
            for i in init_data['data']:
                tags = i['tags']
            respons = cmd.config_insert(tags)
            cmd.conf_begin_http(url)
            http_respons = utils.send_http(url, respons)
            if http_respons:
                # state change
                state = utils.change_state("id_zone", tags['id_zone'], "1")
                db.update("zn_zone", data=state)

            cmd.conf_commit_http(url)
            return response(200, data=http_respons)

        if init_data['action'] == 'zone-read':
            tags = dict()
            for i in init_data['data']:
                tags = i['tags']
            respons = cmd.zone_read(tags)
            http_respons = utils.send_http(url, respons)
            return response(200, data=http_respons)

        if init_data['action'] == 'zone-soa-insert':
            result = list()
            for i in init_data['data']:
                tags = i['tags']
            begin_json = cmd.zone_begin(tags)
            begin_respon = utils.send_http(url, begin_json)
            result.append(begin_respon)

            try:
                id_record, respons = cmd.zone_soa_insert_default(tags)
            except Exception as e:
                respons = {"Status": False, "Error": str(e)}
                return response(400, message=respons)
            else:
                http_respons = utils.send_http(url, respons)
                # state change
                if http_respons:
                    state = utils.change_state("id_record", id_record, "1")
                    db.update("zn_record", data=state)

                result.append(http_respons)
                commit_json = cmd.zone_commit(tags)
                commit_response = utils.send_http(url, commit_json)
                result.append(commit_response)
                return response(200, data=result)

        if init_data['action'] == 'zone-begin':
            for i in init_data['data']:
                tags = i['tags']
            respons = cmd.zone_begin(tags)
            http_response = utils.send_http(url, respons)
            return response(200, data=http_response)

        if init_data['action'] == 'zone-commit':
            for i in init_data['data']:
                tags = i['tags']
            respons = cmd.zone_commit(tags)
            http_response = utils.send_http(url, respons)
            return response(200, data=http_response)

        if init_data['action'] == 'zone-insert':
            respons = list()
            for i in init_data['data']:
                tags = i['tags']
            json_begin = cmd.zone_begin_http(url, tags)
            respons.append(json_begin)
            json_command = cmd.zone_insert(tags)
            http_response = utils.send_http(url, json_command)
            # change state
            if http_response:
                state = utils.change_state("id_record", tags['id_record'], "1")
                try:
                    db.update("zn_record", data=state)
                except Exception as e:
                    print(e)
            respons.append(http_response)
            res_commit = cmd.zone_commit_http(url, tags)
            respons.append(res_commit)
            return response(200, data=respons)

        if init_data['action'] == 'zone-ns-insert':
            respons = list()
            for i in init_data['data']:
                tags = i['tags']
            res_begin = cmd.z_begin(url, tags)
            respons.append(res_begin)
            try:
                result = cmd.zone_ns_insert(tags)
            except Exception as e:
                respons = {"Status": False, "Error": str(e)}
                return response(400, message=respons)
            else:
                for i in result:
                    state = None
                    http_response = utils.send_http(url, i['command'])
                    # state change
                    if http_response:
                        state = utils.change_state("id_record", i['id_record'],
                                                   "1")
                        try:
                            db.update("zn_record", data=state)
                        except Exception as e:
                            print(e)
                    respons.append(http_response)

                res_commit = cmd.z_commit(url, tags)
                respons.append(res_commit)
                return response(200, data=respons)

        if init_data['action'] == 'zone-srv-insert':
            result = list()
            for i in init_data['data']:
                tags = i['tags']
            begin_json = cmd.zone_begin_http(url, tags)
            # begin_respon = utils.send_http(url,begin_json)
            result.append(begin_json)

            try:
                respons = cmd.zone_insert_srv(tags)
            except Exception as e:
                respons = {"status": False, "error": str(e)}
                return response(400, data=result, message=respons)
            else:
                http_response = utils.send_http(url, respons)
                if http_response:
                    state = utils.change_state("id_record", tags['id_record'],
                                               "1")
                    try:
                        db.update("zn_record", data=state)
                    except Exception as e:
                        print(e)

                result.append(http_response)
                commit_json = cmd.zone_commit_http(url, tags)
                # commit_response = utils.send_http(url,commit_json)
                result.append(commit_json)
                return response(200, data=result)

        if init_data['action'] == 'zone-mx-insert':
            result = list()
            for i in init_data['data']:
                tags = i['tags']

            begin_json = cmd.zone_begin_http(url, tags)
            # begin_respon = utils.send_http(url,begin_json)
            result.append(begin_json)

            try:
                respons = cmd.zone_insert_mx(tags)

            except Exception as e:
                respons = {"status": False, "error": str(e)}
                return response(400, data=result, message=respons)
            else:
                http_response = utils.send_http(url, respons)
                # change state
                if http_respons:
                    state = utils.change_state("id_record", tags['id_record'],
                                               "1")
                    try:
                        db.update("zn_record", data=state)
                    except Exception as e:
                        print(e)

                result.append(http_response)
                commit_json = cmd.zone_commit_http(url, tags)
                result.append(commit_json)
                return response(200, data=result)

        # delete all zone
        if init_data['action'] == 'conf-unset':
            result = list()
            for i in init_data['data']:
                tags = i['tags']
            data = cmd.conf_unset(tags)
            cmd.conf_begin_http(url)
            http_respons = utils.send_http(url, data)
            cmd.conf_commit_http(url)
            return response(200, data=http_respons)

        if init_data['action'] == 'zone-unset':
            result = list()
            for i in init_data['data']:
                print(i)
                tags = i['tags']
            respons = list()
            res_begin = cmd.zone_begin_http(url, tags)
            respons.append(res_begin)
            json_command = cmd.zone_unset(tags)
            http_response = utils.send_http(url, json_command)
            respons.append(http_response)
            res_commit = cmd.zone_commit_http(url, tags)
            respons.append(res_commit)
            return response(200, data=respons)
Exemple #19
0
    def put(self, record_id):
        parser = reqparse.RequestParser()
        parser.add_argument("zone", type=str, required=True)
        parser.add_argument("owner", type=str, required=True)
        parser.add_argument("rtype", type=str, required=True)
        parser.add_argument("rdata", type=str, required=True)
        parser.add_argument("ttl", type=str, required=True)
        args = parser.parse_args()
        owner = args["owner"].lower()
        rtype = args["rtype"].lower()
        rdata = args["rdata"]
        zone = args["zone"]
        ttl = args["ttl"]

        try:
            ttl_id = ttl_model.get_ttlid_by_ttl(ttl)
            record_model.is_exists(record_id)

            type_id = type_model.get_typeid_by_rtype(rtype)
            zone_id = zone_model.get_zone_id(zone)
        except Exception as e:
            return response(404, message=f"{e}")

        try:
            rules.check_edit(rtype, zone_id, type_id, owner, rdata, ttl_id, record_id)
        except Exception as e:
            return response(409, message=f"{e}")

        try:
            validator.validate(rtype, rdata)
            validator.validate("owner", owner)
        except Exception as e:
            return response(422, message=f"{e}")

        try:
            serial_resource = get_serial_resource(zone)
            check_serial_limit(serial_resource)
        except Exception as e:
            return response(429, message=f"{e}")

        try:
            data = {
                "where": {"id": record_id},
                "data": {
                    "owner": owner,
                    "zone_id": zone_id,
                    "type_id": type_id,
                    "ttl_id": ttl_id,
                },
            }
            content_data = {
                "where": {"record_id": record_id},
                "data": {"rdata": rdata, "record_id": record_id},
            }

            command.set_zone(record_id, "zone-unset")

            model.update("rdata", data=content_data)
            model.update("record", data=data)

            command.set_zone(record_id, "zone-set")

            # increment serial after adding new record
            rtype = type_model.get_type_by_recordid(record_id)
            if rtype != "SOA":
                update_serial(serial_resource, "02")

            record = model.get_one(table="record", field="id", value=record_id)
            data_ = record_model.get_other_data(record)
            return response(200, data=data_)
        except Exception as e:
            current_app.logger.error(f"{e}")
            return response(500)
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('client_id', type=str, required=True)
        parser.add_argument('is_recurring', type=str, required=True)
        parser.add_argument('tax_rate1', type=str, required=True)
        parser.add_argument('tax_name1', type=str, required=True)
        parser.add_argument('is_amount_discount', type=str, required=False)
        parser.add_argument('service_type', type=str, required=True)
        parser.add_argument('product_id', type=str, required=True)
        args = parser.parse_args()

        try:
            get_products = utils.get_ninja("products/"+str(args['product_id']))['data']
        except Exception as e:
            print(e)
        tax_value = percentage(get_products['cost'], get_products['tax_rate1'])

        data_insert = {
            "client_id": args['client_id'],
            "is_recurring": args['is_recurring'],
            "tax_rate1": str(args['tax_rate1']),
            "tax_name1": str(args['tax_name1']),
            "is_amount_discount": str(args['is_amount_discount']),
            "custom_value1": args['service_type']
        }
        try:
            invoice_data_temps = utils.post_ninja("invoices", data_insert)['data']
        except Exception as e:
            print(e)
        get_invoice_id = db.get_by_id("invoices","public_id", invoice_data_temps['id'])[0]
        data_insert_items = {
            "account_id": "1",
            "user_id": "1",
            "invoice_id": str(get_invoice_id['id']),
            "product_id": str(args['product_id']),
            "product_key": get_products['product_key'],
            "notes": get_products['notes'],
            "custom_value1": args['service_type'],
            "tax_rate1": "0",
            "tax_name1": "",
            "tax_rate2":"0",
            "tax_name2": "",
            "discount": "0",
            "cost": str(get_products['cost']),
            "public_id": str(invoice_data_temps['id']),
            "qty":"1"
        }

        try:
            db.insert("invoice_items", data_insert_items)
        except Exception as e:
            print(e)
        else:
            invoice_updates = {
                "where":{
                    "public_id": str(invoice_data_temps['id'])
                },
                "data":{
                    "invoice_status_id": "2",
                    "amount": str(get_products['cost']+tax_value),
                    "balance": str(get_products['cost']+tax_value)
                }
            }
            try:
                db.update("invoices", data=invoice_updates)
            except Exception as e:
                print("DISINI",e)
        email_data = {
            "invoice_number":invoice_data_temps['invoice_number']
        }
        try:
            send_email = utils.post_ninja("email_invoice", email_data)
        except Exception as e:
            print(e)
        try:
            get_invoice = utils.get_ninja("invoices/"+str(invoice_data_temps['id']))
        except Exception as e:
            return response(200, message=str(e))
        else:
            return response(200, data=get_invoice)