Преглед на файлове

rewrite use of dict.iteritems (#3498)

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility

* dict.iteritems to six.iteritems(dict) for python3 compatibility
version-14
tundebabzy преди 8 години
committed by Rushabh Mehta
родител
ревизия
bbde2ec4cf
променени са 31 файла, в които са добавени 94 реда и са изтрити 41 реда
  1. +2
    -1
      frappe/__init__.py
  2. +2
    -1
      frappe/app.py
  3. +4
    -1
      frappe/boot.py
  4. +5
    -3
      frappe/build.py
  5. +3
    -1
      frappe/client.py
  6. +3
    -1
      frappe/contacts/doctype/address/address.py
  7. +3
    -1
      frappe/contacts/doctype/contact/contact.py
  8. +3
    -1
      frappe/core/doctype/report/report.py
  9. +3
    -1
      frappe/database.py
  10. +3
    -1
      frappe/desk/doctype/desktop_icon/desktop_icon.py
  11. +2
    -1
      frappe/desk/doctype/kanban_board/kanban_board.py
  12. +3
    -1
      frappe/desk/form/meta.py
  13. +3
    -1
      frappe/email/email_body.py
  14. +3
    -1
      frappe/email/receive.py
  15. +2
    -1
      frappe/frappeclient.py
  16. +4
    -4
      frappe/model/base_document.py
  17. +4
    -1
      frappe/model/db_query.py
  18. +3
    -2
      frappe/model/document.py
  19. +2
    -1
      frappe/model/utils/link_count.py
  20. +3
    -1
      frappe/model/utils/user_settings.py
  21. +4
    -2
      frappe/patches/v4_1/file_manager_fix.py
  22. +3
    -1
      frappe/patches/v8_0/rename_listsettings_to_usersettings.py
  23. +3
    -1
      frappe/translate.py
  24. +2
    -1
      frappe/utils/data.py
  25. +2
    -1
      frappe/utils/doctor.py
  26. +3
    -1
      frappe/utils/redis_wrapper.py
  27. +4
    -2
      frappe/utils/setup_docs.py
  28. +4
    -2
      frappe/website/doctype/web_form/web_form.py
  29. +3
    -1
      frappe/website/render.py
  30. +3
    -1
      frappe/website/utils.py
  31. +3
    -2
      frappe/www/sitemap.py

+ 2
- 1
frappe/__init__.py Целия файл

@@ -6,6 +6,7 @@ globals attached to frappe module
"""
from __future__ import unicode_literals, print_function

from six import iteritems
from werkzeug.local import Local, release_local
import os, sys, importlib, inspect, json

@@ -757,7 +758,7 @@ def get_doc_hooks():
if not hasattr(local, 'doc_events_hooks'):
hooks = get_hooks('doc_events', {})
out = {}
for key, value in hooks.iteritems():
for key, value in iteritems(hooks):
if isinstance(key, tuple):
for doctype in key:
append_hook(out, doctype, value)


+ 2
- 1
frappe/app.py Целия файл

@@ -5,6 +5,7 @@ from __future__ import unicode_literals

import os
import MySQLdb
from six import iteritems

from werkzeug.wrappers import Request
from werkzeug.local import LocalManager
@@ -115,7 +116,7 @@ def init_request(request):

def make_form_dict(request):
frappe.local.form_dict = frappe._dict({ k:v[0] if isinstance(v, (list, tuple)) else v \
for k, v in (request.form or request.args).iteritems() })
for k, v in iteritems(request.form or request.args) })

if "_" in frappe.local.form_dict:
# _ is passed by $.ajax so that the request is not cached by the browser. So, remove _ from form_dict


+ 4
- 1
frappe/boot.py Целия файл

@@ -2,6 +2,9 @@
# MIT License. See license.txt

from __future__ import unicode_literals

from six import iteritems

"""
bootstrap client session
"""
@@ -179,7 +182,7 @@ def load_translations(bootinfo):
messages[name] = frappe._(name)

# only untranslated
messages = {k:v for k, v in messages.iteritems() if k!=v}
messages = {k:v for k, v in iteritems(messages) if k!=v}

bootinfo["__messages"] = messages



+ 5
- 3
frappe/build.py Целия файл

@@ -5,6 +5,8 @@ from __future__ import unicode_literals, print_function
from frappe.utils.minify import JavascriptMinify
import subprocess

from six import iteritems

"""
Build the `public` folders and setup languages
"""
@@ -87,7 +89,7 @@ def make_asset_dirs(make_copy=False):
def build(no_compress=False, verbose=False):
assets_path = os.path.join(frappe.local.sites_path, "assets")

for target, sources in get_build_maps().iteritems():
for target, sources in iteritems(get_build_maps()):
pack(os.path.join(assets_path, target), sources, no_compress, verbose)

def get_build_maps():
@@ -100,7 +102,7 @@ def get_build_maps():
if os.path.exists(path):
with open(path) as f:
try:
for target, sources in json.loads(f.read()).iteritems():
for target, sources in iteritems(json.loads(f.read())):
# update app path
source_paths = []
for source in sources:
@@ -182,7 +184,7 @@ def scrub_html_template(content):
return content.replace("'", "\'")

def files_dirty():
for target, sources in get_build_maps().iteritems():
for target, sources in iteritems(get_build_maps()):
for f in sources:
if ':' in f: f, suffix = f.split(':')
if not os.path.exists(f) or os.path.isdir(f): continue


+ 3
- 1
frappe/client.py Целия файл

@@ -8,6 +8,8 @@ import frappe.model
import frappe.utils
import json, os

from six import iteritems

'''
Handle RESTful requests that are mapped to the `/api/resource` route.

@@ -228,7 +230,7 @@ def bulk_update(docs):
failed_docs = []
for doc in docs:
try:
ddoc = {key: val for key, val in doc.iteritems() if key not in ['doctype', 'docname']}
ddoc = {key: val for key, val in iteritems(doc) if key not in ['doctype', 'docname']}
doctype = doc['doctype']
docname = doc['docname']
doc = frappe.get_doc(doctype, docname)


+ 3
- 1
frappe/contacts/doctype/address/address.py Целия файл

@@ -13,6 +13,8 @@ from jinja2 import TemplateSyntaxError
from frappe.utils.user import is_website_user
from frappe.model.naming import make_autoname
from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links
from six import iteritems


class Address(Document):
def __setup__(self):
@@ -191,7 +193,7 @@ def address_query(doctype, txt, searchfield, start, page_len, filters):
link_name = filters.pop('link_name')

condition = ""
for fieldname, value in filters.iteritems():
for fieldname, value in iteritems(filters):
condition += " and {field}={value}".format(
field=fieldname,
value=value


+ 3
- 1
frappe/contacts/doctype/contact/contact.py Целия файл

@@ -7,6 +7,8 @@ from frappe.utils import cstr, has_gravatar
from frappe import _
from frappe.model.document import Document
from frappe.core.doctype.dynamic_link.dynamic_link import deduplicate_dynamic_links
from six import iteritems


class Contact(Document):
def autoname(self):
@@ -118,7 +120,7 @@ def contact_query(doctype, txt, searchfield, start, page_len, filters):
link_name = filters.pop('link_name')

condition = ""
for fieldname, value in filters.iteritems():
for fieldname, value in iteritems(filters):
condition += " and {field}={value}".format(
field=fieldname,
value=value


+ 3
- 1
frappe/core/doctype/report/report.py Целия файл

@@ -12,6 +12,8 @@ from frappe.modules.export_file import export_to_files
from frappe.modules import make_boilerplate
from frappe.core.doctype.page.page import delete_custom_role
from frappe.core.doctype.custom_role.custom_role import get_custom_allowed_roles
from six import iteritems


class Report(Document):
def validate(self):
@@ -123,7 +125,7 @@ class Report(Document):
_filters = params.get('filters') or []

if filters:
for key, value in filters.iteritems():
for key, value in iteritems(filters):
condition, _value = '=', value
if isinstance(value, (list, tuple)):
condition, _value = value


+ 3
- 1
frappe/database.py Целия файл

@@ -20,6 +20,8 @@ from frappe.utils import now, get_datetime, cstr
from frappe import _
from types import StringType, UnicodeType
from frappe.utils.global_search import sync_global_search
from six import iteritems


class Database:
"""
@@ -655,7 +657,7 @@ class Database:
where field in ({0}) and
doctype=%s'''.format(', '.join(['%s']*len(keys))),
keys + [dt], debug=debug)
for key, value in to_update.iteritems():
for key, value in iteritems(to_update):
self.sql('''insert into tabSingles(doctype, field, value) values (%s, %s, %s)''',
(dt, key, value), debug=debug)



+ 3
- 1
frappe/desk/doctype/desktop_icon/desktop_icon.py Целия файл

@@ -9,6 +9,8 @@ from frappe import _
import json
import random
from frappe.model.document import Document
from six import iteritems


class DesktopIcon(Document):
def validate(self):
@@ -323,7 +325,7 @@ def sync_from_app(app):

if isinstance(modules, dict):
modules_list = []
for m, desktop_icon in modules.iteritems():
for m, desktop_icon in iteritems(modules):
desktop_icon['module_name'] = m
modules_list.append(desktop_icon)
else:


+ 2
- 1
frappe/desk/doctype/kanban_board/kanban_board.py Целия файл

@@ -7,6 +7,7 @@ import frappe
import json
from frappe import _
from frappe.model.document import Document
from six import iteritems


class KanbanBoard(Document):
@@ -91,7 +92,7 @@ def update_order(board_name, order):
order_dict = json.loads(order)

updated_cards = []
for col_name, cards in order_dict.iteritems():
for col_name, cards in iteritems(order_dict):
order_list = []
for card in cards:
column = frappe.get_value(


+ 3
- 1
frappe/desk/form/meta.py Целия файл

@@ -14,6 +14,8 @@ from frappe.model.utils import render_include
from frappe.build import scrub_html_template

######
from six import iteritems


def get_meta(doctype, cached=True):
if cached and not frappe.conf.developer_mode:
@@ -153,7 +155,7 @@ class FormMeta(Meta):
app = module.__name__.split(".")[0]
templates = {}
if hasattr(module, "form_grid_templates"):
for key, path in module.form_grid_templates.iteritems():
for key, path in iteritems(module.form_grid_templates):
templates[key] = get_html_format(frappe.get_app_path(app, path))

self.set("__form_grid_templates", templates)


+ 3
- 1
frappe/email/email_body.py Целия файл

@@ -9,6 +9,8 @@ from frappe.utils import (get_url, scrub_urls, strip, expand_relative_urls, cint
split_emails, to_markdown, markdown, encode, random_string)
import email.utils
from frappe.utils import parse_addr
from six import iteritems


def get_email(recipients, sender='', msg='', subject='[No Subject]',
text_content = None, footer=None, print_html=None, formatted=None, attachments=None,
@@ -209,7 +211,7 @@ class EMail:
}

# reset headers as values may be changed.
for key, val in headers.iteritems():
for key, val in iteritems(headers):
self.set_header(key, val)

# call hook to enable apps to modify msg_root before sending


+ 3
- 1
frappe/email/receive.py Целия файл

@@ -2,6 +2,8 @@
# MIT License. See license.txt

from __future__ import unicode_literals

from six import iteritems
from six.moves import range
import time, _socket, poplib, imaplib, email, email.utils, datetime, chardet, re, hashlib
from email_reply_parser import EmailReplyParser
@@ -343,7 +345,7 @@ class EmailServer:
return

self.imap.select("Inbox")
for uid, operation in uid_list.iteritems():
for uid, operation in iteritems(uid_list):
if not uid: continue

op = "+FLAGS" if operation == "Read" else "-FLAGS"


+ 2
- 1
frappe/frappeclient.py Целия файл

@@ -2,6 +2,7 @@ from __future__ import print_function
import requests
import json
import frappe
from six import iteritems

'''
FrappeClient is a library that helps you connect with other frappe systems
@@ -270,7 +271,7 @@ class FrappeClient(object):

def preprocess(self, params):
"""convert dicts, lists to json"""
for key, value in params.iteritems():
for key, value in iteritems(params):
if isinstance(value, (dict, list)):
params[key] = json.dumps(value)



+ 4
- 4
frappe/model/base_document.py Целия файл

@@ -2,7 +2,7 @@
# MIT License. See license.txt

from __future__ import unicode_literals
from six import reraise as raise_
from six import reraise as raise_, iteritems
import frappe, sys
from frappe import _
from frappe.utils import (cint, flt, now, cstr, strip_html, getdate, get_datetime, to_timedelta,
@@ -72,7 +72,7 @@ class BaseDocument(object):
if key in d:
self.set(key, d.get(key))

for key, value in d.iteritems():
for key, value in iteritems(d):
self.set(key, value)

return self
@@ -83,7 +83,7 @@ class BaseDocument(object):

if "doctype" in d:
self.set("doctype", d.get("doctype"))
for key, value in d.iteritems():
for key, value in iteritems(d):
# dont_update_if_missing is a list of fieldnames, for which, you don't want to set default value
if (self.get(key) is None) and (value is not None) and (key not in self.dont_update_if_missing):
self.set(key, value)
@@ -565,7 +565,7 @@ class BaseDocument(object):
if frappe.flags.in_install:
return

for fieldname, value in self.get_valid_dict().iteritems():
for fieldname, value in iteritems(self.get_valid_dict()):
df = self.meta.get_field(fieldname)
if df and df.fieldtype in type_map and type_map[df.fieldtype][0]=="varchar":
max_length = cint(df.get("length")) or cint(varchar_len)


+ 4
- 1
frappe/model/db_query.py Целия файл

@@ -2,6 +2,9 @@
# MIT License. See license.txt

from __future__ import unicode_literals

from six import iteritems

"""build query for doclistview and return results"""

import frappe, json, copy
@@ -171,7 +174,7 @@ class DatabaseQuery(object):
if isinstance(filters, dict):
fdict = filters
filters = []
for key, value in fdict.iteritems():
for key, value in iteritems(fdict):
filters.append(make_filter_tuple(self.doctype, key, value))
setattr(self, filter_name, filters)



+ 3
- 2
frappe/model/document.py Целия файл

@@ -10,6 +10,7 @@ from frappe.utils import flt, cstr, now, get_datetime_str, file_lock
from frappe.utils.background_jobs import enqueue
from frappe.model.base_document import BaseDocument, get_controller
from frappe.model.naming import set_new_name
from six import iteritems
from werkzeug.exceptions import NotFound, Forbidden
import hashlib, json
from frappe.model import optional_fields
@@ -344,7 +345,7 @@ class Document(BaseDocument):
def get_values():
values = self.as_dict()
# format values
for key, value in values.iteritems():
for key, value in iteritems(values):
if value==None:
values[key] = ""
return values
@@ -361,7 +362,7 @@ class Document(BaseDocument):
def update_single(self, d):
"""Updates values for Single type Document in `tabSingles`."""
frappe.db.sql("""delete from tabSingles where doctype=%s""", self.doctype)
for field, value in d.iteritems():
for field, value in iteritems(d):
if field != "doctype":
frappe.db.sql("""insert into tabSingles(doctype, field, value)
values (%s, %s, %s)""", (self.doctype, field, value))


+ 2
- 1
frappe/model/utils/link_count.py Целия файл

@@ -4,6 +4,7 @@
from __future__ import unicode_literals

import frappe
from six import iteritems

ignore_doctypes = ("DocType", "Print Format", "Role", "Module Def", "Communication",
"ToDo")
@@ -26,7 +27,7 @@ def update_link_count():
link_count = frappe.cache().get_value('_link_count')

if link_count:
for key, count in link_count.iteritems():
for key, count in iteritems(link_count):
if key[0] not in ignore_doctypes:
try:
frappe.db.sql('update `tab{0}` set idx = idx + {1} where name=%s'.format(key[0], count),


+ 3
- 1
frappe/model/utils/user_settings.py Целия файл

@@ -2,6 +2,8 @@
# such as page_limit, filters, last_view

import frappe, json
from six import iteritems


def get_user_settings(doctype, for_update=False):
user_settings = frappe.cache().hget('_user_settings',
@@ -36,7 +38,7 @@ def update_user_settings(doctype, user_settings, for_update=False):

def sync_user_settings():
'''Sync from cache to database (called asynchronously via the browser)'''
for key, data in frappe.cache().hgetall('_user_settings').iteritems():
for key, data in iteritems(frappe.cache().hgetall('_user_settings')):
doctype, user = key.split('::')
frappe.db.sql('''insert into __UserSettings (user, doctype, data) values (%s, %s, %s)
on duplicate key update data=%s''', (user, doctype, data, data))


+ 4
- 2
frappe/patches/v4_1/file_manager_fix.py Целия файл

@@ -19,6 +19,8 @@ from frappe.utils import get_files_path, get_site_path
# a backup from a time before version 3 migration
#
# * Patch remaining unpatched File records.
from six import iteritems


def execute():
frappe.db.auto_commit_on_many_writes = True
@@ -49,7 +51,7 @@ def get_replaced_files():
old_files = dict(frappe.db.sql("select name, file_name from `tabFile` where ifnull(content_hash, '')=''"))
invfiles = invert_dict(new_files)

for nname, nfilename in new_files.iteritems():
for nname, nfilename in iteritems(new_files):
if 'files/' + nfilename in old_files.values():
ret.append((nfilename, invfiles[nfilename]))
return ret
@@ -82,7 +84,7 @@ def rename_replacing_files():

def invert_dict(ddict):
ret = {}
for k,v in ddict.iteritems():
for k,v in iteritems(ddict):
if not ret.get(v):
ret[v] = [k]
else:


+ 3
- 1
frappe/patches/v8_0/rename_listsettings_to_usersettings.py Целия файл

@@ -1,6 +1,8 @@
from frappe.installer import create_user_settings_table
from frappe.model.utils.user_settings import update_user_settings
import frappe, json
from six import iteritems


def execute():
if frappe.db.table_exists("__ListSettings"):
@@ -32,7 +34,7 @@ def execute():

for user in frappe.db.get_all('User', {'user_type': 'System User'}):
defaults = frappe.defaults.get_defaults_for(user.name)
for key, value in defaults.iteritems():
for key, value in iteritems(defaults):
if key.startswith('_list_settings:'):
doctype = key.replace('_list_settings:', '')
columns = ['`tab{1}`.`{0}`'.format(*c) for c in json.loads(value)]


+ 3
- 1
frappe/translate.py Целия файл

@@ -3,6 +3,8 @@

from __future__ import unicode_literals, print_function

from six import iteritems

"""
frappe.translate
~~~~~~~~~~~~~~~~
@@ -120,7 +122,7 @@ def get_dict(fortype, name=None):
message_dict.update(get_dict_from_hooks(fortype, name))

# remove untranslated
message_dict = {k:v for k, v in message_dict.iteritems() if k!=v}
message_dict = {k:v for k, v in iteritems(message_dict) if k!=v}

translation_assets[asset_key] = message_dict



+ 2
- 1
frappe/utils/data.py Целия файл

@@ -13,6 +13,7 @@ from dateutil import parser
from num2words import num2words
import HTMLParser
from html2text import html2text
from six import iteritems

DATE_FORMAT = "%Y-%m-%d"
TIME_FORMAT = "%H:%M:%S.%f"
@@ -686,7 +687,7 @@ operator_map = {
def evaluate_filters(doc, filters):
'''Returns true if doc matches filters'''
if isinstance(filters, dict):
for key, value in filters.iteritems():
for key, value in iteritems(filters):
f = get_filter(None, {key:value})
if not compare(doc.get(f.fieldname), f.operator, f.value):
return False


+ 2
- 1
frappe/utils/doctor.py Целия файл

@@ -4,6 +4,7 @@ from collections import defaultdict
from rq import Worker, Connection
from frappe.utils.background_jobs import get_redis_conn, get_queue, get_queue_list
from frappe.utils.scheduler import is_scheduler_disabled
from six import iteritems


def get_workers():
@@ -118,7 +119,7 @@ def doctor(site=None):
print("Queue:", queue)
print("Number of Jobs: ", job_count[queue])
print("Methods:")
for method, count in jobs_per_queue[queue].iteritems():
for method, count in iteritems(jobs_per_queue[queue]):
print("{0} : {1}".format(method, count))
print("------------")



+ 3
- 1
frappe/utils/redis_wrapper.py Целия файл

@@ -5,6 +5,8 @@ from __future__ import unicode_literals
import redis, frappe, re
import cPickle as pickle
from frappe.utils import cstr
from six import iteritems


class RedisWrapper(redis.Redis):
"""Redis client that will automatically prefix conf.db_name"""
@@ -148,7 +150,7 @@ class RedisWrapper(redis.Redis):

def hgetall(self, name):
return {key: pickle.loads(value) for key, value in
super(redis.Redis, self).hgetall(self.make_key(name)).iteritems()}
iteritems(super(redis.Redis, self).hgetall(self.make_key(name)))}

def hget(self, name, key, generator=None, shared=False):
_name = self.make_key(name, shared=shared)


+ 4
- 2
frappe/utils/setup_docs.py Целия файл

@@ -10,6 +10,8 @@ from __future__ import unicode_literals, print_function
import os, json, frappe, shutil, re
from frappe.website.context import get_context
from frappe.utils import markdown
from six import iteritems


class setup_docs(object):
def __init__(self, app):
@@ -294,7 +296,7 @@ class setup_docs(object):
return '{% raw %}' + matchobj.group(0) + '{% endraw %}'

cnt = 0
for path, context in pages.iteritems():
for path, context in iteritems(pages):
print("Writing {0}".format(path))

# set this for get_context / website libs
@@ -420,7 +422,7 @@ class setup_docs(object):
"images/up.png": "img/up.png"
}

for source, target in copy_files.iteritems():
for source, target in iteritems(copy_files):
source_path = frappe.get_app_path("frappe", "public", source)
if os.path.isdir(source_path):
if not os.path.exists(os.path.join(assets_path, target)):


+ 4
- 2
frappe/website/doctype/web_form/web_form.py Целия файл

@@ -13,6 +13,8 @@ from frappe.utils.file_manager import get_max_file_size
from frappe.modules.utils import export_module_json, get_doc_module
from urllib import urlencode
from frappe.integrations.utils import get_payment_gateway_controller
from six import iteritems


class WebForm(WebsiteGenerator):
website = frappe._dict(
@@ -206,7 +208,7 @@ def get_context(context):
context.params_from_form_dict = ''

params = {}
for key, value in frappe.form_dict.iteritems():
for key, value in iteritems(frappe.form_dict):
if frappe.get_meta(self.doc_type).get_field(key):
params[key] = value

@@ -365,7 +367,7 @@ def accept(web_form, data, for_payment=False):
doc = frappe.new_doc(data.doctype)

# set values
for fieldname, value in data.iteritems():
for fieldname, value in iteritems(data):
if value and isinstance(value, dict):
try:
if "__file_attachment" in value:


+ 3
- 1
frappe/website/render.py Целия файл

@@ -7,6 +7,8 @@ from frappe import _
import frappe.sessions
from frappe.utils import cstr
import mimetypes, json

from six import iteritems
from werkzeug.wrappers import Response
from werkzeug.routing import Map, Rule, NotFound

@@ -78,7 +80,7 @@ def build_response(path, data, http_status_code, headers=None):
response.headers[b"X-From-Cache"] = frappe.local.response.from_cache or False

if headers:
for key, val in headers.iteritems():
for key, val in iteritems(headers):
response.headers[bytes(key)] = val.encode("utf-8")

return response


+ 3
- 1
frappe/website/utils.py Целия файл

@@ -3,6 +3,8 @@

from __future__ import unicode_literals
import frappe, re, os
from six import iteritems


def delete_page_cache(path):
cache = frappe.cache()
@@ -190,7 +192,7 @@ def get_full_index(route=None, app=None):
pages = get_pages(app=app)

# make children map
for route, page_info in pages.iteritems():
for route, page_info in iteritems(pages):
parent_route = os.path.dirname(route)
children_map.setdefault(parent_route, []).append(page_info)



+ 3
- 2
frappe/www/sitemap.py Целия файл

@@ -7,6 +7,7 @@ import urllib
import frappe
from frappe.utils import get_request_site_address, get_datetime, nowdate
from frappe.website.router import get_pages, get_all_page_context_from_doctypes
from six import iteritems

no_cache = 1
no_sitemap = 1
@@ -16,14 +17,14 @@ def get_context(context):
"""generate the sitemap XML"""
host = get_request_site_address()
links = []
for route, page in get_pages().iteritems():
for route, page in iteritems(get_pages()):
if not page.no_sitemap:
links.append({
"loc": urllib.basejoin(host, urllib.quote(page.name.encode("utf-8"))),
"lastmod": nowdate()
})

for route, data in get_all_page_context_from_doctypes().iteritems():
for route, data in iteritems(get_all_page_context_from_doctypes()):
links.append({
"loc": urllib.basejoin(host, urllib.quote((route or "").encode("utf-8"))),
"lastmod": get_datetime(data.get("modified")).strftime("%Y-%m-%d")


Зареждане…
Отказ
Запис