コード例 #1
0
    def validate_search_index_fields(self):
        if not self.search_index_fields:
            return

        fields = self.search_index_fields.replace(' ', '')
        fields = unique(fields.strip(',').split(
            ','))  # Remove extra ',' and remove duplicates

        # All fields should be indexable
        allowed_indexable_fields = get_indexable_web_fields()

        if not (set(fields).issubset(allowed_indexable_fields)):
            invalid_fields = list(
                set(fields).difference(allowed_indexable_fields))
            num_invalid_fields = len(invalid_fields)
            invalid_fields = comma_and(invalid_fields)

            if num_invalid_fields > 1:
                frappe.throw(
                    _("{0} are not valid options for Search Index Field.").
                    format(frappe.bold(invalid_fields)))
            else:
                frappe.throw(
                    _("{0} is not a valid option for Search Index Field.").
                    format(frappe.bold(invalid_fields)))

        self.search_index_fields = ','.join(fields)
コード例 #2
0
ファイル: queries.py プロジェクト: rangsitww/erpnext
def get_fields(doctype, fields=[]):
    meta = frappe.get_meta(doctype)
    fields.extend(meta.get_search_fields())

    if meta.title_field and not meta.title_field.strip() in fields:
        fields.insert(1, meta.title_field.strip())

    return unique(fields)
コード例 #3
0
ファイル: routes.py プロジェクト: Nirchains/title-links
def build_for_autosuggest(res):
    results = []
    for r in res:
        print r
        out = {"value": r[0], "description": ", ".join(unique(cstr(d) for d in r if d)[0:])}
        results.append(out)

    return results
コード例 #4
0
ファイル: routes.py プロジェクト: mxmo-co/title_links
def build_for_autosuggest(res):
    results = []
    for r in res:
        print r
        out = {"value": r[0], "description": ", ".join(unique(cstr(d) for d in r if d)[0:])}
        results.append(out)

    return results
コード例 #5
0
    def create_task_and_notify_user(self):
        # create the task for the given project and assign to the concerned person
        holiday_list = self.get_holiday_list()

        for activity in self.activities:
            if activity.task:
                continue

            dates = self.get_task_dates(activity, holiday_list)

            task = frappe.get_doc({
                "doctype":
                "Task",
                "project":
                self.project,
                "subject":
                activity.activity_name + " : " + self.employee_name,
                "description":
                activity.description,
                "department":
                self.department,
                "company":
                self.company,
                "task_weight":
                activity.task_weight,
                "exp_start_date":
                dates[0],
                "exp_end_date":
                dates[1],
            }).insert(ignore_permissions=True)
            activity.db_set("task", task.name)

            users = [activity.user] if activity.user else []
            if activity.role:
                user_list = frappe.db.sql_list(
                    """
					SELECT
						DISTINCT(has_role.parent)
					FROM
						`tabHas Role` has_role
							LEFT JOIN `tabUser` user
								ON has_role.parent = user.name
					WHERE
						has_role.parenttype = 'User'
							AND user.enabled = 1
							AND has_role.role = %s
				""",
                    activity.role,
                )
                users = unique(users + user_list)

                if "Administrator" in users:
                    users.remove("Administrator")

            # assign the task the users
            if users:
                self.assign_task_to_users(task, users)
コード例 #6
0
ファイル: routes.py プロジェクト: hafeez3000/title_links
def build_for_autosuggest(res):
    results = []
    for r in res:
        out = {
            'value': r[0],
            "description": ",".join(unique(cstr(d) for d in r)[1:-1]),
            "title": r[-1]
        }
        results.append(out)
    return results
コード例 #7
0
ファイル: search.py プロジェクト: rvpasari/frappe
def build_for_autosuggest(res, doctype):
    meta = frappe.get_meta(doctype)
    results = []
    for r in res:
        r = list(r)
        if not (meta.title_field and meta.show_title_field_in_link
                ) or doctype in (frappe.get_hooks().standard_queries or {}):
            out = {
                "value": r[0],
                "description": ", ".join(unique(cstr(d) for d in r[1:] if d))
            }
        else:
            out = {
                "value": r[0],
                "label": r[1],
                "description": ", ".join(unique(cstr(d) for d in r[2:] if d))
            }

        results.append(out)
    return results
コード例 #8
0
ファイル: delivery_trip.py プロジェクト: Bloomstack/erpnext
def update_delivery_trip_status(payment_amount, sales_invoice):
    delivery_stops = frappe.get_all("Delivery Stop",
                                    filters={
                                        "sales_invoice": sales_invoice,
                                        "docstatus": 1
                                    },
                                    fields=["parent", "name"])

    delivery_trips = unique([stop.parent for stop in delivery_stops])
    delivery_stops = unique([stop.name for stop in delivery_stops])

    for trip in delivery_trips:
        trip_doc = frappe.get_doc("Delivery Trip", trip)
        for stop in trip_doc.delivery_stops:
            if stop.name in delivery_stops:
                frappe.db.set_value("Delivery Stop", stop.name, "paid_amount",
                                    payment_amount)
                frappe.db.set_value("Delivery Stop", stop.name, "visited", 1)
                if stop.delivery_note:
                    frappe.db.set_value("Delivery Note", stop.delivery_note,
                                        "status", "Completed")
コード例 #9
0
ファイル: api.py プロジェクト: finbyz/techievolve
def build_for_autosuggest(res):
	results = []
	description = []
	for r in res:
		for idx, value in enumerate(r):
			if idx == 0:
				out = {"value": value}
			elif str(value).find("<img") != -1:
				out.update({"image": value})
			else:
				description.append(value)
			out.update({"description": ", ".join(unique(cstr(d) for d in description if d))})
		results.append(out)
	return results
コード例 #10
0
    def set_per_picked(self):
        """
		Set Percentage Picked(per_picked)in Sales Order on the basis of Pick List created.
		"""
        all_orders = [d.sales_order for d in self.locations]
        for order in unique(all_orders):
            picked_qty = sum(d.picked_qty for d in self.locations
                             if d.sales_order == order and d.picked_qty)
            ordered_qty = sum(d.qty for d in self.locations
                              if d.sales_order == order and d.qty)
            per_picked = (picked_qty / ordered_qty) * 100

            frappe.db.set_value("Sales Order",
                                self.locations[0].sales_order,
                                "per_picked",
                                per_picked,
                                update_modified=False)
コード例 #11
0
ファイル: tag.py プロジェクト: Alchez/frappe
	def update(self, dn, tl):
		"""updates the _user_tag column in the table"""

		if not tl:
			tags = ''
		else:
			tl = unique(filter(lambda x: x, tl))
			tags = ',' + ','.join(tl)
		try:
			frappe.db.sql("update `tab%s` set _user_tags=%s where name=%s" % \
				(self.dt,'%s','%s'), (tags , dn))
			doc= frappe.get_doc(self.dt, dn)
			update_tags(doc, tags)
		except Exception as e:
			if frappe.db.is_column_missing(e):
				if not tags:
					# no tags, nothing to do
					return

				self.setup()
				self.update(dn, tl)
			else: raise