@@ -4,11 +4,11 @@ from frappe import _ | |||||
from frappe.utils import now_datetime, getdate, flt, cint, get_fullname | from frappe.utils import now_datetime, getdate, flt, cint, get_fullname | ||||
from frappe.installer import update_site_config | from frappe.installer import update_site_config | ||||
from frappe.utils.data import formatdate | from frappe.utils.data import formatdate | ||||
from frappe.utils.user import get_enabled_system_users, get_system_managers | |||||
from frappe.utils.user import get_enabled_system_users | |||||
import os, subprocess, urlparse, urllib | import os, subprocess, urlparse, urllib | ||||
class SiteExpiredError(frappe.ValidationError): | class SiteExpiredError(frappe.ValidationError): | ||||
pass | |||||
http_status_code = 417 | |||||
EXPIRY_WARNING_DAYS = 10 | EXPIRY_WARNING_DAYS = 10 | ||||
@@ -28,9 +28,10 @@ | |||||
</a> | </a> | ||||
</div> | </div> | ||||
{% endif %} | {% endif %} | ||||
{%- if allow_print and not is_list -%} | |||||
{%- if allow_print and not is_list and not _login_required -%} | |||||
<div class='text-right'> | <div class='text-right'> | ||||
<a class='text-muted small' href='/print?doctype={{ doc.doctype}}&name={{ doc.name }}' target="_blank"> | |||||
<a class='text-muted small' href='/print?doctype={{ doc.doctype}}&name={{ doc.name }} | |||||
{%- if print_format -%}&format={{ print_format }}{%- endif -%}' target="_blank"> | |||||
<i class='icon icon-print'></i> {{ _("Print") }}</a> | <i class='icon icon-print'></i> {{ _("Print") }}</a> | ||||
</div> | </div> | ||||
{%- endif -%} | {%- endif -%} | ||||
@@ -43,7 +44,7 @@ | |||||
{% endif %} | {% endif %} | ||||
</div> | </div> | ||||
<div class="form-message alert alert-warning hide"></div> | <div class="form-message alert alert-warning hide"></div> | ||||
{% if login_required and frappe.user=="Guest" %} | |||||
{% if _login_required %} | |||||
<div class="login-required"> | <div class="login-required"> | ||||
<div class="text-muted"> | <div class="text-muted"> | ||||
{{ _("Please sign-up or login to begin") }} | {{ _("Please sign-up or login to begin") }} | ||||
@@ -5,6 +5,9 @@ | |||||
<div>{{ frappe.render_template(df.options, {"doc": doc}) or "" }}</div> | <div>{{ frappe.render_template(df.options, {"doc": doc}) or "" }}</div> | ||||
{%- elif df.fieldtype in ("Text", "Text Editor", "Code") -%} | {%- elif df.fieldtype in ("Text", "Text Editor", "Code") -%} | ||||
{{ render_text_field(df, doc) }} | {{ render_text_field(df, doc) }} | ||||
{%- elif df.fieldtype in ("Image", "Attach Image", "Attach") | |||||
and (guess_mimetype(doc[df.fieldname])[0] or "").startswith("image/") -%} | |||||
{{ render_image(df, doc) }} | |||||
{%- else -%} | {%- else -%} | ||||
{{ render_field_with_label(df, doc) }} | {{ render_field_with_label(df, doc) }} | ||||
{%- endif -%} | {%- endif -%} | ||||
@@ -26,7 +29,7 @@ | |||||
<tr> | <tr> | ||||
<th style="width: 40px" class="table-sr">Sr</th> | <th style="width: 40px" class="table-sr">Sr</th> | ||||
{% for tdf in visible_columns %} | {% for tdf in visible_columns %} | ||||
<th style="width: {{ get_width(tdf) }}px;" class="{{ get_align_class(tdf.fieldtype) }}" {{ fieldmeta(df) }}> | |||||
<th style="width: {{ get_width(tdf) }};" class="{{ get_align_class(tdf.fieldtype) }}" {{ fieldmeta(df) }}> | |||||
{{ _(tdf.label) }}</th> | {{ _(tdf.label) }}</th> | ||||
{% endfor %} | {% endfor %} | ||||
</tr> | </tr> | ||||
@@ -37,7 +40,7 @@ | |||||
<td class="table-sr">{{ d.idx }}</td> | <td class="table-sr">{{ d.idx }}</td> | ||||
{% for tdf in visible_columns %} | {% for tdf in visible_columns %} | ||||
<td class="{{ get_align_class(tdf.fieldtype) }}" {{ fieldmeta(df) }}> | <td class="{{ get_align_class(tdf.fieldtype) }}" {{ fieldmeta(df) }}> | ||||
<div class="value">{{ print_value(tdf, d, table_meta, doc) }}</div></td> | |||||
<div class="value">{{ print_value(tdf, d, doc) }}</div></td> | |||||
{% endfor %} | {% endfor %} | ||||
</tr> | </tr> | ||||
{% endfor %} | {% endfor %} | ||||
@@ -82,17 +85,25 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}" | |||||
{%- endif -%} | {%- endif -%} | ||||
{%- endmacro -%} | {%- endmacro -%} | ||||
{%- macro print_value(df, doc, meta, parent_doc=None) -%} | |||||
{%- macro render_image(df, doc) -%} | |||||
{%- if df.label %}<label>{{ _(df.label) }}</label>{%- endif %} | |||||
{{ print_value(df, doc) }} | |||||
{% endmacro %} | |||||
{%- macro print_value(df, doc, parent_doc=None) -%} | |||||
{% if doc.print_templates and | {% if doc.print_templates and | ||||
doc.print_templates.get(df.fieldname) %} | doc.print_templates.get(df.fieldname) %} | ||||
{% include doc.print_templates[df.fieldname] %} | {% include doc.print_templates[df.fieldname] %} | ||||
{% elif df.fieldtype=="Check" %} | {% elif df.fieldtype=="Check" %} | ||||
<i class="{{ 'icon-check' if doc[df.fieldname] else 'icon-check-empty' }}"></i> | <i class="{{ 'icon-check' if doc[df.fieldname] else 'icon-check-empty' }}"></i> | ||||
{% elif df.fieldtype=="Image" %} | {% elif df.fieldtype=="Image" %} | ||||
<img src="{{ doc[doc.meta.get_field(df.fieldname).options] }}" class="img-responsive"> | |||||
<img src="{{ doc[doc.meta.get_field(df.fieldname).options] }}" | |||||
class="img-responsive" | |||||
{%- if df.print_width %} style="width: {{ get_width(df) }};"{% endif %}> | |||||
{% elif df.fieldtype in ("Attach", "Attach Image") and doc[df.fieldname] | {% elif df.fieldtype in ("Attach", "Attach Image") and doc[df.fieldname] | ||||
and (guess_mimetype(doc[df.fieldname])[0] or "").startswith("image/") %} | and (guess_mimetype(doc[df.fieldname])[0] or "").startswith("image/") %} | ||||
<img src="{{ doc[df.fieldname] }}" class="img-responsive"> | |||||
<img src="{{ doc[df.fieldname] }}" class="img-responsive" | |||||
{%- if df.print_width %} style="width: {{ get_width(df) }};"{% endif %}> | |||||
{% elif df.fieldtype=="HTML" %} | {% elif df.fieldtype=="HTML" %} | ||||
{{ frappe.render_template(df.options, {"doc":doc}) }} | {{ frappe.render_template(df.options, {"doc":doc}) }} | ||||
{% else %} | {% else %} | ||||
@@ -101,9 +112,9 @@ data-fieldname="{{ df.fieldname }}" data-fieldtype="{{ df.fieldtype }}" | |||||
{%- endmacro %} | {%- endmacro %} | ||||
{% macro get_width(df) -%} | {% macro get_width(df) -%} | ||||
{%- if df.print_width -%}{{ (df.print_width|str).replace("px", "") }} | |||||
{%- elif df.fieldtype in ("Int", "Check", "Float", "Currency") -%}{{ 80 }} | |||||
{%- else -%}{{ 150 }}{% endif -%} | |||||
{%- if df.print_width -%}{{ (df.print_width|str).replace("px", "") }}px | |||||
{%- elif df.fieldtype in ("Int", "Check", "Float", "Currency") -%}{{ 80 }}px | |||||
{%- else -%}{{ 150 }}px{% endif -%} | |||||
{%- endmacro %} | {%- endmacro %} | ||||
{% macro get_align_class(fieldtype) %} | {% macro get_align_class(fieldtype) %} | ||||
@@ -79,7 +79,6 @@ def enqueue_events(site, queued_jobs): | |||||
last = frappe.db.get_value('System Settings', 'System Settings', 'scheduler_last_event') | last = frappe.db.get_value('System Settings', 'System Settings', 'scheduler_last_event') | ||||
# set scheduler last event | # set scheduler last event | ||||
frappe.db.begin() | |||||
frappe.db.set_value('System Settings', 'System Settings', | frappe.db.set_value('System Settings', 'System Settings', | ||||
'scheduler_last_event', nowtime.strftime(DATETIME_FORMAT), | 'scheduler_last_event', nowtime.strftime(DATETIME_FORMAT), | ||||
update_modified=False) | update_modified=False) | ||||
@@ -321,6 +321,34 @@ | |||||
"set_only_once": 0, | "set_only_once": 0, | ||||
"unique": 0 | "unique": 0 | ||||
}, | }, | ||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"depends_on": "allow_print", | |||||
"fieldname": "print_format", | |||||
"fieldtype": "Link", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"label": "Print Format", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Print Format", | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | { | ||||
"allow_on_submit": 0, | "allow_on_submit": 0, | ||||
"bold": 0, | "bold": 0, | ||||
@@ -941,7 +969,7 @@ | |||||
"issingle": 0, | "issingle": 0, | ||||
"istable": 0, | "istable": 0, | ||||
"max_attachments": 0, | "max_attachments": 0, | ||||
"modified": "2016-10-10 05:03:19.428894", | |||||
"modified": "2016-10-12 04:33:14.728373", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Website", | "module": "Website", | ||||
"name": "Web Form", | "name": "Web Form", | ||||
@@ -107,6 +107,9 @@ def get_context(context): | |||||
self.set_web_form_module() | self.set_web_form_module() | ||||
logged_in = frappe.session.user != "Guest" | logged_in = frappe.session.user != "Guest" | ||||
self._login_required = self.login_required | |||||
if logged_in and self.login_required: | |||||
self._login_required = False | |||||
doc, delimeter = make_route_string(frappe.form_dict) | doc, delimeter = make_route_string(frappe.form_dict) | ||||
context.doc = doc | context.doc = doc | ||||
@@ -124,7 +127,7 @@ def get_context(context): | |||||
if self.is_standard: | if self.is_standard: | ||||
self.use_meta_fields() | self.use_meta_fields() | ||||
if self.login_required and logged_in: | |||||
if not self._login_required: | |||||
if self.allow_edit: | if self.allow_edit: | ||||
if self.allow_multiple: | if self.allow_multiple: | ||||
if not frappe.form_dict.name and not frappe.form_dict.new: | if not frappe.form_dict.name and not frappe.form_dict.new: | ||||