kandi background
Explore Kits

frappe | Low code web framework for real world applications | Application Framework library

 by   frappe Python Version: v13.26.1 License: MIT

 by   frappe Python Version: v13.26.1 License: MIT

Download this library from

kandi X-RAY | frappe Summary

frappe is a Python library typically used in Server, Application Framework, Framework applications. frappe has build file available, it has a Permissive License and it has high support. However frappe has 149 bugs and it has 2 vulnerabilities. You can download it from GitHub.
Low code web framework for real world applications, in Python and Javascript
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • frappe has a highly active ecosystem.
  • It has 3685 star(s) with 2048 fork(s). There are 184 watchers for this library.
  • There were 6 major release(s) in the last 6 months.
  • There are 1205 open issues and 2114 have been closed. On average issues are closed in 136 days. There are 42 open pull requests and 0 closed requests.
  • It has a negative sentiment in the developer community.
  • The latest version of frappe is v13.26.1
frappe Support
Best in #Application Framework
Average in #Application Framework
frappe Support
Best in #Application Framework
Average in #Application Framework

quality kandi Quality

  • frappe has 149 bugs (5 blocker, 2 critical, 34 major, 108 minor) and 1641 code smells.
frappe Quality
Best in #Application Framework
Average in #Application Framework
frappe Quality
Best in #Application Framework
Average in #Application Framework

securitySecurity

  • frappe has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • frappe code analysis shows 2 unresolved vulnerabilities (0 blocker, 2 critical, 0 major, 0 minor).
  • There are 94 security hotspots that need review.
frappe Security
Best in #Application Framework
Average in #Application Framework
frappe Security
Best in #Application Framework
Average in #Application Framework

license License

  • frappe is licensed under the MIT License. This license is Permissive.
  • Permissive licenses have the least restrictions, and you can use them in most projects.
frappe License
Best in #Application Framework
Average in #Application Framework
frappe License
Best in #Application Framework
Average in #Application Framework

buildReuse

  • frappe releases are available to install and integrate.
  • Build file is available. You can build the component from source.
  • Installation instructions are available. Examples and code snippets are not available.
  • It has 106929 lines of code, 5833 functions and 2049 files.
  • It has high code complexity. Code complexity directly impacts maintainability of the code.
frappe Reuse
Best in #Application Framework
Average in #Application Framework
frappe Reuse
Best in #Application Framework
Average in #Application Framework
Top functions reviewed by kandi - BETA

kandi has reviewed frappe and discovered the below as its top functions. This is intended to give you an instant insight into frappe implemented functionality, and help decide if they suit your requirements.

  • Validate the field names of the document .
  • Get a list of EventEvents .
  • Prepare filter condition .
  • Search for a search widget .
  • Import data
  • Restore a database .
  • Build a dict of fields that match the given doctype .
  • Execute a SQL query .
  • Handle a request .
  • Delete a document .

frappe Key Features

Low code web framework for real world applications, in Python and Javascript

ErpNext jalali calendar

copy iconCopydownload iconDownload
~/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/datepicker_i18n.js
;(function ($) { $.fn.datepicker.language['tr'] = {
    days: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
    daysShort: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
    daysMin: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
    months: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
    monthsShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],
    today: 'Bugün',
    clear: 'Temizle',
    dateFormat: 'dd.mm.yyyy',
    timeFormat: 'hh:ii',
    firstDay: 1
};
 })(jQuery);
-----------------------
~/frappe-bench/apps/frappe/frappe/public/js/frappe/form/controls/datepicker_i18n.js
;(function ($) { $.fn.datepicker.language['tr'] = {
    days: ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'],
    daysShort: ['Paz', 'Pzt', 'Sal', 'Çar', 'Per', 'Cum', 'Cmt'],
    daysMin: ['Pz', 'Pt', 'Sa', 'Ça', 'Pe', 'Cu', 'Ct'],
    months: ['Ocak','Şubat','Mart','Nisan','Mayıs','Haziran', 'Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık'],
    monthsShort: ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara'],
    today: 'Bugün',
    clear: 'Temizle',
    dateFormat: 'dd.mm.yyyy',
    timeFormat: 'hh:ii',
    firstDay: 1
};
 })(jQuery);

Import and parse a file to fill the form

copy iconCopydownload iconDownload
// Copyright (c) 2020, Bhavesh and contributors
// For license information, please see license.txt

    frappe.ui.form.on('Car Upload Tool', {
        upload: function(frm) {
            frm.call({
                doc: frm.doc,
                method:"upload_data",
                freeze:true,
                freeze_message:"Data Uploading ...",
                callback:function(r){
                    console.log(r)
                }
            })
        }
    });
# -*- coding: utf-8 -*-
# Copyright (c) 2020, Bhavesh and contributors
# For license information, please see license.txt

from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from carrental.carrental.doctype.car_upload_tool.csvtojson import csvtojson
import csv 
import json

class CarUploadTool(Document):
    def upload_data(self):
        _file = frappe.get_doc("File", {"file_url": self.attach_file})
        filename = _file.get_full_path()
        csv_json = csv_to_json(filename)
        make_car(csv_json)
        


def csv_to_json(csvFilePath):
    jsonArray = []
    #read csv file
    with open(csvFilePath, encoding='latin-1') as csvf:
        #load csv file data using csv library's dictionary reader
        csvReader = csv.DictReader(csvf,delimiter=";")

        #convert each csv row into python dict
        for row in csvReader:
            frappe.errprint(row)
            #add this python dict to json array
            jsonArray.append(row)  
    #convert python jsonArray to JSON String and write to file
    return jsonArray

def make_car(car_details):
    for row in car_details:
        create_brand(row.get('Marke'))
        create_car_type(row.get('Fahrzeugkategorie'))
        if not frappe.db.exists("Car",row.get('Fahrgestellnr.')):
            car_doc = frappe.get_doc(dict(
                doctype = "Car",
                brand = row.get('Marke'),
                model_and_description = row.get('Bezeichnung'),
                type_of_fuel = row.get('Motorart'),
                color = row.get('Farbe'),
                transmission = row.get('Getriebeart'),
                horsepower = row.get('Leistung (PS)'),
                car_type = row.get('Fahrzeugkategorie'),
                car_vin_id = row.get('Fahrgestellnr.'),
                licence_plate = row.get('Kennzeichen'),
                location_code = row.get('Standort')
            ))
            car_doc.model = car_doc.model_and_description.split(' ')[0] or ''
            car_doc.insert(ignore_permissions = True)
        else:
            car_doc = frappe.get_doc("Car",row.get('Fahrgestellnr.'))
            car_doc.brand = row.get('Marke')
            car_doc.model_and_description = row.get('Bezeichnung')
            car_doc.model = car_doc.model_and_description.split(' ')[0] or ''
            car_doc.type_of_fuel = row.get('Motorart')
            car_doc.color = row.get('Farbe')
            car_doc.transmission = row.get('Getriebeart')
            car_doc.horsepower = row.get('Leistung (PS)')
            car_doc.car_type = row.get('Fahrzeugkategorie')
            car_doc.car_vin_id = row.get('Fahrgestellnr.')
            car_doc.licence_plate = row.get('Kennzeichen')
            car_doc.location_code = row.get('Standort')
            car_doc.save(ignore_permissions = True)
    frappe.msgprint("Car Uploaded Successfully")


def create_brand(brand):
    if not frappe.db.exists("Brand",brand):
        frappe.get_doc(dict(
            doctype = "Brand",
            brand = brand
        )).insert(ignore_permissions = True)

def create_car_type(car_type):
    if not frappe.db.exists("Vehicle Type",car_type):
        frappe.get_doc(dict(
            doctype = "Vehicle Type",
            vehicle_type = car_type
        )).insert(ignore_permissions = True)
-----------------------
// Copyright (c) 2020, Bhavesh and contributors
// For license information, please see license.txt

    frappe.ui.form.on('Car Upload Tool', {
        upload: function(frm) {
            frm.call({
                doc: frm.doc,
                method:"upload_data",
                freeze:true,
                freeze_message:"Data Uploading ...",
                callback:function(r){
                    console.log(r)
                }
            })
        }
    });
# -*- coding: utf-8 -*-
# Copyright (c) 2020, Bhavesh and contributors
# For license information, please see license.txt

from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from carrental.carrental.doctype.car_upload_tool.csvtojson import csvtojson
import csv 
import json

class CarUploadTool(Document):
    def upload_data(self):
        _file = frappe.get_doc("File", {"file_url": self.attach_file})
        filename = _file.get_full_path()
        csv_json = csv_to_json(filename)
        make_car(csv_json)
        


def csv_to_json(csvFilePath):
    jsonArray = []
    #read csv file
    with open(csvFilePath, encoding='latin-1') as csvf:
        #load csv file data using csv library's dictionary reader
        csvReader = csv.DictReader(csvf,delimiter=";")

        #convert each csv row into python dict
        for row in csvReader:
            frappe.errprint(row)
            #add this python dict to json array
            jsonArray.append(row)  
    #convert python jsonArray to JSON String and write to file
    return jsonArray

def make_car(car_details):
    for row in car_details:
        create_brand(row.get('Marke'))
        create_car_type(row.get('Fahrzeugkategorie'))
        if not frappe.db.exists("Car",row.get('Fahrgestellnr.')):
            car_doc = frappe.get_doc(dict(
                doctype = "Car",
                brand = row.get('Marke'),
                model_and_description = row.get('Bezeichnung'),
                type_of_fuel = row.get('Motorart'),
                color = row.get('Farbe'),
                transmission = row.get('Getriebeart'),
                horsepower = row.get('Leistung (PS)'),
                car_type = row.get('Fahrzeugkategorie'),
                car_vin_id = row.get('Fahrgestellnr.'),
                licence_plate = row.get('Kennzeichen'),
                location_code = row.get('Standort')
            ))
            car_doc.model = car_doc.model_and_description.split(' ')[0] or ''
            car_doc.insert(ignore_permissions = True)
        else:
            car_doc = frappe.get_doc("Car",row.get('Fahrgestellnr.'))
            car_doc.brand = row.get('Marke')
            car_doc.model_and_description = row.get('Bezeichnung')
            car_doc.model = car_doc.model_and_description.split(' ')[0] or ''
            car_doc.type_of_fuel = row.get('Motorart')
            car_doc.color = row.get('Farbe')
            car_doc.transmission = row.get('Getriebeart')
            car_doc.horsepower = row.get('Leistung (PS)')
            car_doc.car_type = row.get('Fahrzeugkategorie')
            car_doc.car_vin_id = row.get('Fahrgestellnr.')
            car_doc.licence_plate = row.get('Kennzeichen')
            car_doc.location_code = row.get('Standort')
            car_doc.save(ignore_permissions = True)
    frappe.msgprint("Car Uploaded Successfully")


def create_brand(brand):
    if not frappe.db.exists("Brand",brand):
        frappe.get_doc(dict(
            doctype = "Brand",
            brand = brand
        )).insert(ignore_permissions = True)

def create_car_type(car_type):
    if not frappe.db.exists("Vehicle Type",car_type):
        frappe.get_doc(dict(
            doctype = "Vehicle Type",
            vehicle_type = car_type
        )).insert(ignore_permissions = True)

Swift: Files appear to be corrupt after base64 encoding

copy iconCopydownload iconDownload
let fileAsString = attachment.base64EncodedString() + "=="
request.httpBody = Data(query!.replacingOccurrences(of: "+", with: "%2B").utf8)
-----------------------
let fileAsString = attachment.base64EncodedString() + "=="
request.httpBody = Data(query!.replacingOccurrences(of: "+", with: "%2B").utf8)

Azure DevOps React Container Production Build JavaScript heap out of memory error

copy iconCopydownload iconDownload
# stage1 - build react app first 
FROM node:14.16.1-alpine3.13 as build
WORKDIR /app
ENV NODE_OPTIONS="--max-old-space-size=8192"
ENV PATH /app/node_modules/.bin:$PATH
COPY ./package.json /app/
RUN apk --no-cache add g++ gcc libgcc libstdc++ linux-headers make py3-pip git
RUN npm install --quiet node-gyp -g
RUN npm install
COPY . /app
RUN npm run-script build

Generate a random string on employee custom field in ERPNext

copy iconCopydownload iconDownload
var pool = "abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789";
var compNumber = " STR18001749";

var randString = function(frm) {
  var s = "";
  var today = new Date();
  var date = String(today.getFullYear()).substring(2, 4) + '' + (today.getMonth() + 1);
  var time = today.getHours() + "" + today.getMinutes();
  var dateTime = date + time;

  while (s.length < 8) {
    var i = Math.floor(Math.random() * pool.length);
    s += pool[i];
  }

  frm.doc.misconduct = s.toUpperCase() + ' ' + dateTime + compNumber;
  // refresh_field('misconduct'); // commented out so the snippet runs
};

x = {doc: {}};
randString(x);
console.log(x);

bluetooth module accelerometer

copy iconCopydownload iconDownload
#include <ArduinoBLE.h>
#include <Arduino_LSM9DS1.h>

BLEService dataService("180C"); // User defined service

BLEStringCharacteristic dataCharacteristic("2A56", // standard 16-bit characteristic UUID
    BLERead | BLENotify, 50); // remote clients will be able to read and subscribe to notifications

float oldX = 0.0;  // last value
float oldY = 0.0;
float oldZ = 0.0;
long previousMillis = 0;  // last time the value was checked, in ms

void setup()
{
    Serial.begin(9600); // initialize serial communication
    while (!Serial)
        ;

    pinMode(LED_BUILTIN, OUTPUT); // initialize the built-in LED pin

    if (!BLE.begin()) { // initialize BLE
        Serial.println("starting BLE failed!");
        while (1)
            ;
    }

    BLE.setLocalName("Sac de frappe"); // Set name for connection
    BLE.setAdvertisedService(dataService); // Advertise service
    dataService.addCharacteristic(dataCharacteristic); // Add characteristic to service
    BLE.addService(dataService); // Add service
    dataCharacteristic.setValue(""); // Set initial value

    BLE.advertise(); // Start advertising
    Serial.print("Peripheral device MAC: ");
    Serial.println(BLE.address());
    Serial.println("Waiting for connections...");

    Serial.begin(9600);
    while (!Serial);
    Serial.println("Started");

    if (!IMU.begin()) {
        Serial.println("Failed to initialize IMU!");
        while (1);
    }

    Serial.print("Accelerometer sample rate = ");
    Serial.print(IMU.accelerationSampleRate());
    Serial.println(" Hz");
    Serial.println();
    Serial.println("Acceleration in G's");
    Serial.println("X\tY\tZ");
}

void loop()
{
    BLEDevice central = BLE.central(); // Wait for a BLE central to connect

    // if a central is connected to the peripheral:
    if (central) {
        Serial.print("Connected to central MAC: ");
        // print the central's BT address:
        Serial.println(central.address());
        // turn on the LED to indicate the connection:
        digitalWrite(LED_BUILTIN, HIGH);

        // update value every 200ms
        // while the central is connected:
        while (central.connected()) {
            long currentMillis = millis();
            // if 200ms have passed, update value:
            if (currentMillis - previousMillis >= 200) {
                previousMillis = currentMillis;
                updateValue();
            }
        }
    }
    // when the central disconnects, turn off the LED:
    digitalWrite(LED_BUILTIN, LOW);
    Serial.print("Disconnected from central MAC: ");
    Serial.println(central.address());
}

void updateValue() {
    float x, y, z;

    if (!IMU.accelerationAvailable()) return; // Return if not ready
    IMU.readAcceleration(x, y, z); // Read new data

    if (x != oldX || y != oldY || z != oldZ) {
        // print it
        Serial.print(x);
        Serial.print('\t');
        Serial.print(y);
        Serial.print('\t');
        Serial.println(z);
        dataCharacteristic.writeValue("X: " + String(x) + " Y: " + String(y) + " Z: " + String(z));  // update value
        // save the value for next comparison
        oldX = x;
        oldY = y;
        oldZ = z;
    }
}

How to specify filter for child items in list view?

copy iconCopydownload iconDownload
frappe.set_route('List', 'Sales Order', 'List', {'<Child Table Doctype(Sales Order Item)>.item_code':my_specific_item_code});

Issue using a conditional statement within a Lambda function in Pandas

copy iconCopydownload iconDownload
import pandas as pd
from deep_translator import GoogleTranslator as GT
from deep_translator import exceptions as excp

# sample dataframe
data = {'tweet_text': ['100 Arsenal appearances. Congratulations, Rob! ', "     Lundi soir dans l'émission ,     et   ont débriefé la victoire dans le Der...", '  È in corso la votazione tra le 4 figurine finaliste!', '   y’a absolument zéro vanne l’avis est désastreux. ', 'FINAL  1-3 ¡El   firma una gran remontada en su primera victoria de 2021!  ... ', '  JÁ HÁ ONZE!   ', 'HALF-TIME Southampton 1-0 LiverpoolDanny Ings’ brilliant early opener is the difference at the break ', "10' Une-deux parfaitement exécuté entre Tino et   Notre capitaine voit sa frappe passer au-dessus. 0-0 ", '  ¡INCREÍBLE, DOS SANTOS!          ', '   +3     ', "Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n'est peut-être pas inutile, ne fût-ce que pour être exact en tout, d'indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient souvent autant de place dans leur vie et surtout dans leur destinée que ce qu'ils font. M. Myriel était fils d'un conseiller au parlement d'Aix; noblesse de robe. On contait de lui que son père, le réservant pour hériter de sa charge, l'avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d'assez petite taille, élégant, gracieux, spirituel; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent, les familles parlementaires décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d'une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n'avaient point d'enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel? L'écroulement de l'ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l'épouvante, firent-ils germer en lui des idées de renoncement et de solitude? Fut-il, au milieu d'une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d'un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au coeur, l'homme que les catastrophes publiques n'ébranleraient pas en le frappant dans son existence et dans sa fortune? Nul n'aurait pu le dire; tout ce qu'on savait, c'est que, lorsqu'il revint d'Italie, il était prêtre.Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n'est peut-être pas inutile, ne fût-ce que pour être exact en tout, d'indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient souvent autant de place dans leur vie et surtout dans leur destinée que ce qu'ils font. M. Myriel était fils d'un conseiller au parlement d'Aix; noblesse de robe. On contait de lui que son père, le réservant pour hériter de sa charge, l'avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d'assez petite taille, élégant, gracieux, spirituel; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent, les familles parlementaires décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d'une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n'avaient point d'enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel? L'écroulement de l'ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l'épouvante, firent-ils germer en lui des idées de renoncement et de solitude? Fut-il, au milieu d'une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d'un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au coeur, l'homme que les catastrophes publiques n'ébranleraient pas en le frappant dans son existence et dans sa fortune? Nul n'aurait pu le dire; tout ce qu'on savait, c'est que, lorsqu'il revint d'Italie, il était prêtre.Quoique ce détail ne touche en aucune manière au fond même de ce que nous avons à raconter, il n'est peut-être pas inutile, ne fût-ce que pour être exact en tout, d'indiquer ici les bruits et les propos qui avaient couru sur son compte au moment où il était arrivé dans le diocèse. Vrai ou faux, ce qu'on dit des hommes tient souvent autant de place dans leur vie et surtout dans leur destinée que ce qu'ils font. M. Myriel était fils d'un conseiller au parlement d'Aix; noblesse de robe. On contait de lui que son père, le réservant pour hériter de sa charge, l'avait marié de fort bonne heure, à dix-huit ou vingt ans, suivant un usage assez répandu dans les familles parlementaires. Charles Myriel, nonobstant ce mariage, avait, disait-on, beaucoup fait parler de lui. Il était bien fait de sa personne, quoique d'assez petite taille, élégant, gracieux, spirituel; toute la première partie de sa vie avait été donnée au monde et aux galanteries. La révolution survint, les événements se précipitèrent, les familles parlementaires décimées, chassées, traquées, se dispersèrent. M. Charles Myriel, dès les premiers jours de la révolution, émigra en Italie. Sa femme y mourut d'une maladie de poitrine dont elle était atteinte depuis longtemps. Ils n'avaient point d'enfants. Que se passa-t-il ensuite dans la destinée de M. Myriel? L'écroulement de l'ancienne société française, la chute de sa propre famille, les tragiques spectacles de 93, plus effrayants encore peut-être pour les émigrés qui les voyaient de loin avec le grossissement de l'épouvante, firent-ils germer en lui des idées de renoncement et de solitude? Fut-il, au milieu d'une de ces distractions et de ces affections qui occupaient sa vie, subitement atteint d'un de ces coups mystérieux et terribles qui viennent quelquefois renverser, en le frappant au coeur, l'homme que les catastrophes publiques n'ébranleraient pas en le frappant dans son existence et dans sa fortune? Nul n'aurait pu le dire; tout ce qu'on savait, c'est que, lorsqu'il revint d'Italie, il était prêtre.", ['😀 😃 😄 😁 😆 😅 😂 🤣'], '😀 😃 😄 😁 😆 😅 😂 🤣'], 'lang': ['en', 'fr', 'it', 'fr', 'es', 'pt', 'en', 'fr', 'es', 'und', 'fr', 'sp', 'sp']}
df = pd.DataFrame(data)

# function to translate and catch exceptions
def translate(x):
    try:
        v = GT(source='auto', target='en').translate(x['tweet_text']) if (x['tweet_text'] != " " and x['lang'] != "en") else x['tweet_text']
    except (excp.NotValidPayload, excp.NotValidLength) as e:
        v = f'Translation Exception: {type(e)}'
    return v


# translate the column
df['translated'] = df[['tweet_text', 'lang']].apply(lambda x: translate(x), axis = 1)

# find rows with Translation Exception
not_translated = df[['tweet_text', 'lang', 'translated']][df['translated'].str.startswith('Translation Exception')]

javascript override class variable

copy iconCopydownload iconDownload
frappe.frappe_toolbar.notifications.$dropdown = $('.Header').find('.dropdown-item-notifications');

sql order by not working with decimal(18,6)

copy iconCopydownload iconDownload
select cast(actual_qty as decimal(18,2)) as qty
from `Bin`
where warehouse = `Warehouse`.name
order by qty desc;
select cast(actual_qty as decimal(18,2)) as qty
from `Bin`
where warehouse = `Warehouse`.name
order by cast(actual_qty as decimal(18,2)) desc
-----------------------
select cast(actual_qty as decimal(18,2)) as qty
from `Bin`
where warehouse = `Warehouse`.name
order by qty desc;
select cast(actual_qty as decimal(18,2)) as qty
from `Bin`
where warehouse = `Warehouse`.name
order by cast(actual_qty as decimal(18,2)) desc
-----------------------
select tw.name, 
       CONCAT_WS(" : ", "Actual Qty", ifnull(round(tb.actual_qty, 2), 0)) actual_qty
from tabWarehouse tw left join tabBin tb
on tb.warehouse = tw.name and tb.item_code = '30440'
where tw.name like '%%%%' 
  and ifnull(tw.company, '') in ('', 'TILE SELECT') 
  and tw.is_group = 0.0
order by ifnull(round(tb.actual_qty, 2), 0) desc limit 0, 20
`tabWarehouse`.`name` like '%%%%' 
-----------------------
select tw.name, 
       CONCAT_WS(" : ", "Actual Qty", ifnull(round(tb.actual_qty, 2), 0)) actual_qty
from tabWarehouse tw left join tabBin tb
on tb.warehouse = tw.name and tb.item_code = '30440'
where tw.name like '%%%%' 
  and ifnull(tw.company, '') in ('', 'TILE SELECT') 
  and tw.is_group = 0.0
order by ifnull(round(tb.actual_qty, 2), 0) desc limit 0, 20
`tabWarehouse`.`name` like '%%%%' 

Community Discussions

Trending Discussions on frappe
  • i made some changes in my frappe app locally. After that i accepted it from visual studio code as i have cloned it on my system
  • ErpNext jalali calendar
  • Import and parse a file to fill the form
  • Share data for two servers but for different scripts on Frappe framework
  • How to create a Home folder in ErpNext File Doctype after deleting it?
  • Swift: Files appear to be corrupt after base64 encoding
  • Frappe: cur_frm.add_custom_button() does not add a Custom-Button
  • Azure DevOps React Container Production Build JavaScript heap out of memory error
  • Generate a random string on employee custom field in ERPNext
  • bluetooth module accelerometer
Trending Discussions on frappe

QUESTION

i made some changes in my frappe app locally. After that i accepted it from visual studio code as i have cloned it on my system

Asked 2022-Feb-02 at 08:37

I made some changes in my frappe app locally.
After that I accepted it from Visual Studio Code as I have cloned it on my system.

After that, I opened my Linux terminal and look at the status by git status, it was showing the changes I have made.

After that, I typed git commit -m "my changes".
And in last, I pushed it to the main server by git push upstream new_branch.

But right now, I only have read permission, so I could not do it.

So my question is: when I will get write permission of the main project, will I have to do this process again?
Or can I simply push it again?
Because now when I type git status, it is showing there is nothing to commit.

ANSWER

Answered 2022-Feb-02 at 08:11

A simple push will be enough.

To gain write access on a remote repository does not change your local clone and local work.

Note: one does not generally push directly to upstream, only to the default remote 'origin' which should point to your own repository (or fork of a repository).

Once push, you can initiate a pull request with, as a target, a branch of the original upstream repository.

Source https://stackoverflow.com/questions/70952003

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install frappe

Install via Docker
Install via Frappe Bench
Offical Documentation
Managed Hosting on Frappe Cloud

Support

Code of ConductContribution GuidelinesSecurity PolicyTranslations

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Share this Page

share link
Consider Popular Application Framework Libraries
Compare Application Framework Libraries with Highest Support
Compare Application Framework Libraries with Highest Quality
Compare Application Framework Libraries with Highest Reuse
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.