Merge branch 'master' into fix-moment

This commit is contained in:
Faris Ansari
2018-03-15 13:12:43 +05:30
committed by GitHub
2140 changed files with 48478 additions and 12743 deletions

4
.gitignore vendored
View File

@@ -3,4 +3,6 @@
*.egg-info *.egg-info
*.swp *.swp
tags tags
foundation/docs/current foundation/docs/current
__pycache__/
*.pyc

View File

@@ -37,6 +37,7 @@ class Bounty(WebsiteGenerator):
context.comment_list = get_comment_list(self.doctype, self.name) context.comment_list = get_comment_list(self.doctype, self.name)
context.can_edit = can_edit context.can_edit = can_edit
def validate(self): def validate(self):
from frappe.utils.user import get_user_fullname from frappe.utils.user import get_user_fullname
@@ -70,17 +71,14 @@ def get_list_context(context):
context.introduction = ''' context.introduction = '''
<div style="margin-bottom: 20px;"> <div style="margin-bottom: 20px;">
<a href="new-bounty" class="btn btn-primary"> <a href="new-bounty" class="btn btn-primary">
Start a new Bounty</a> Start a new bounty</a>
</div>''' </div>'''
context.list_footer = ''' context.list_footer = '''
<p><a class='text-muted small' <p><a class='text-muted small'
href="/bounties-faq">Bounty FAQ</a></p> href="/bounties-faq">Bounty FAQ</a></p>
''' '''
context.fmt_money = fmt_money context.fmt_money = fmt_money
context.get_paid_backers = get_paid_backers
def get_paid_backers(backers): def get_paid_backers(backers):
if backers: return [backer for backer in backers if backer.paid]
return [backer for backer in backers if backer.paid]
else:
return 0

View File

@@ -107,7 +107,7 @@
<p> <p>
<h6 class="text-muted uppercase">About this feature</h6> <h6 class="text-muted uppercase">About this feature</h6>
<p>{{doc.description}}</p> <p>{{doc.description}}</p>
<p class='text-muted'> Bounty created by {{ doc.owner }} </p> <p class="text-muted">Created by {{doc.owner}} </p>
</p> </p>
<p> <p>
<p><a href="/bounties-faq" class='text-muted'>Bounties FAQ</a></p> <p><a href="/bounties-faq" class='text-muted'>Bounties FAQ</a></p>

View File

@@ -13,19 +13,18 @@
<p> <p>
<span class="label">{{ fmt_money(doc.goal, currency="USD") }}</span> <span class="label">{{ fmt_money(doc.goal, currency="USD") }}</span>
{% if comments %} {% if comments %}
<span class="label">{{ comments }} <i <span class="label">{{ comments }} <i
class='octicon octicon-comment-discussion'></i></span> class='octicon octicon-comment-discussion'></i></span>
{% endif %} {% endif %}
{% set paid_backers = get_paid_backers(doc.bounty_backer) %} {% if paid_backers|len > 0 %}
{% if paid_backers and paid_backers|len > 0 %} <span class="label">
<span class="label"> {{ paid_backers|len }}
{{ paid_backers|len }} {% if paid_backers|len > 1 %}
{% if paid_backers|len > 1 %} Backers
Backers {% else %}
{% else %} Backer
Backer {% endif %}
{% endif %} </span>
</span>
{% endif %} {% endif %}
</p> </p>
<p>{{ html2text(doc.description[:200]) }}{% if doc.description|len > 200 %}...{% endif %}</p> <p>{{ html2text(doc.description[:200]) }}{% if doc.description|len > 200 %}...{% endif %}</p>

View File

@@ -1,337 +0,0 @@
{
"allow_copy": 0,
"allow_guest_to_view": 1,
"allow_import": 0,
"allow_rename": 0,
"autoname": "field:title",
"beta": 0,
"creation": "2017-05-08 17:00:17.610142",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "title",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Title",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "chapter_head",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Chapter Head",
"length": 0,
"no_copy": 0,
"options": "User",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "introduction",
"fieldtype": "Text Editor",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Introduction",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "meetup_embed_html",
"fieldtype": "Code",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 1,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Meetup Embed HTML",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "published",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Published",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "route",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Route",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "region",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Region",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "address",
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Address",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "members",
"fieldtype": "Table",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Members",
"length": 0,
"no_copy": 0,
"options": "Chapter Member",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"has_web_view": 1,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_published_field": "published",
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-08-02 13:04:00.723298",
"modified_by": "Administrator",
"module": "ERPNext Foundation",
"name": "Chapter",
"name_case": "Title Case",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"route": "chapters",
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
}

View File

@@ -1,35 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017, EOSSF and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.website.website_generator import WebsiteGenerator
from frappe.model.document import Document
from frappe import _
class Chapter(WebsiteGenerator):
def get_context(self, context):
context.no_cache = True
def validate(self):
chapter_head = self.chapter_head
chapter = frappe.get_all('Chapter', filters={'published': True}, fields=['chapter_head'])
# if chapter_head in [d.chapter_head for d in chapter]:
# frappe.throw(_('You are not allow to create more than one Chapter'))
def enable(self):
chapter = frappe.get_doc('Chapter', frappe.form_dict.name)
chapter.append('members', dict(enable=self.value))
chapter.save(ignore_permissions=1)
frappe.db.commit()
def get_list_context(context):
context.allow_guest = True
context.no_cache = True
context.title = 'ERPNext Chapters'
context.no_breadcrumbs = True
context.order_by = 'creation desc'
context.introduction = '<p>All ERPNext Chapters</p>'

View File

@@ -1,67 +0,0 @@
{% extends "templates/web.html" %}
{% block page_content %}
<h1>{{ title }}</h1>
<h3>Details</h3>
<p>{{ introduction }}</p>
{% if meetup_embed_html %}
{{ meetup_embed_html }}
{% endif %}
<h3>List of Members</h3>
{% if members %}
<table class="table table-bordered small" style="max-width: 500px;">
<tr>
<th width="15%" ></th>
<th>Member Details</th>
</tr>
{% for user in members %}
<tr>
<td>{{ loop.index }}</td>
<td>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-6">{{ frappe.db.get_value('User', user.user, 'full_name') }}</div>
<div class="col-lg-6 col-md-6 col-sm-6 text-right">
{% if user.website_url %}
<a href="{{ user.website_url }}">{{ user.website_url or '' }}</a>
{% endif %}
</div>
<div class="col-lg-12">
{% if user.introduction %}
{{ user.introduction }}
{% endif %}
</div>
</div>
</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>No member yet.</p>
{% endif %}
<h3>Chapter Head</h3>
<table class="table table-bordered small" style="max-width: 500px;">
<tr>
<td style='width: 15%'>Name</td>
<td>{{ frappe.db.get_value('User', chapter_head, 'full_name') }}</td>
</tr>
<tr>
<td>Email</td>
<td>{{ frappe.db.get_value('User', chapter_head, 'email') or '' }}</td>
</tr>
<tr>
<td>Phone</td>
<td>{{ frappe.db.get_value('User', chapter_head, 'phone') or '' }}</td>
</tr>
</table>
<h3>Address</h3>
<p>{{ address }}</p>
<p style="margin: 20px 0 30px;"><a href="/join-chapter?name={{ name }}" class='btn btn-primary'>Join this Chapter</a></p>
<p style="margin: 20px 0 30px;"><a href="/leave-chapter?name={{ name }}" class=''>Leave this Chapter</a></p>
<p class='text-muted'>If you would like to start a new chapter, email us at <a href='mailto:foundation@erpnext.org'>foundation@erpnext.org</a></p>
{% endblock %}
<!-- this is a sample default web page template -->

View File

@@ -1,17 +0,0 @@
<div style="margin-bottom: 30px; max-width: 600px" class="with-border clickable">
<a href={{ route }}>
<h3>{{ doc.title }}</h3>
<p>
<span class="label">{{ frappe.db.get_value('User', chapter_head, 'full_name') }}</span>
<span class="label">
{% if members %}
Members: {{ members|length }}
{% else %}
Members: 0
{% endif %}
</span>
</p>
<p>{{ html2text(doc.introduction[:200]) }}{% if introduction|len > 200 %}...{% endif %}</p>
</a>
</div>
<!-- this is a sample default list template -->

View File

@@ -1,162 +0,0 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
"creation": "2017-05-08 17:01:23.626064",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "user",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "User",
"length": 0,
"no_copy": 0,
"options": "User",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "introduction",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Introduction",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "website_url",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Website URL",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "enabled",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Enabled",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 1,
"max_attachments": 0,
"modified": "2017-05-22 16:29:01.536405",
"modified_by": "Administrator",
"module": "ERPNext Foundation",
"name": "Chapter Member",
"name_case": "",
"owner": "Administrator",
"permissions": [],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
}

View File

@@ -1,14 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017, EOSSF and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
class ChapterMember(Document):
def get_context(self, context):
context.no_cache = True

View File

@@ -1,12 +0,0 @@
// Copyright (c) 2017, EOSSF and contributors
// For license information, please see license.txt
frappe.ui.form.on('Chapter Message', {
onload: function(frm){
console.log("here" + frappe.session.user)
chapter_head = frappe.session.user
frappe.db.get_value('Chapter', {chapter_head: chapter_head}, 'name', function(data) {
frm.set_value('chapter', data.name);
})
},
});

View File

@@ -1,153 +0,0 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"beta": 0,
"creation": "2017-05-11 14:22:40.165630",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "subject",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Subject",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "message",
"fieldtype": "Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": " Message",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "chapter",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Chapter",
"length": 0,
"no_copy": 0,
"options": "",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-05-12 11:10:12.066924",
"modified_by": "Administrator",
"module": "ERPNext Foundation",
"name": "Chapter Message",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
}

View File

@@ -1,43 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017, EOSSF and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe import _
class ChapterMessage(Document):
def get_context(self, context):
context.no_cache = True
def validate(self):
chapter = frappe.get_doc('Chapter', self.chapter)
if frappe.session.user != chapter.chapter_head:
frappe.throw(_('You are not athourize to send message for this Chapter.'))
def on_update(self):
chapter = frappe.get_doc('Chapter', self.chapter)
recipients = [d.user for d in chapter.members]
message = self.message
message += "Chapter Title: " + self.chapter
# chapter_title = self.chapter
frappe.sendmail(recipients = recipients,
message = self.message,
subject = self.subject)
# reference_doctype=self.doctype, reference_name=self.name)
def get_members_emails(chapterTitle):
members_list = frappe.get_all('User', fields=['email'],
filters={'chapter.title': chapterTitle})
out = []
for e in members_list:
if e.email:
# don't add if holiday
out.append(e.email)
print out
return out

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017, EOSSF and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
import unittest
class TestChapterMessage(unittest.TestCase):
pass

View File

@@ -1,7 +1,7 @@
// Copyright (c) 2017, EOSSF and contributors // Copyright (c) 2017, EOSSF and contributors
// For license information, please see license.txt // For license information, please see license.txt
frappe.ui.form.on('Chapter', { frappe.ui.form.on('Foundation Fellowship', {
refresh: function(frm) { refresh: function(frm) {
} }

View File

@@ -0,0 +1,560 @@
{
"allow_copy": 0,
"allow_guest_to_view": 1,
"allow_import": 0,
"allow_rename": 0,
"autoname": "field:title",
"beta": 0,
"creation": "2017-10-27 05:03:24.894001",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "title",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Title",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "country",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Country",
"length": 0,
"no_copy": 0,
"options": "Country",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "email",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Email",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "phone",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Phone",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "website_url",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Website",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "address",
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Address",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_8",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "image",
"fieldtype": "Attach Image",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Image",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "section_break_10",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "introduction",
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Introduction",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "details",
"fieldtype": "Text Editor",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 1,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Details",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "section_break_13",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "discuss_id",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Discuss ID",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "github_id",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "GitHub ID",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "route",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Route",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "show_in_website",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Show in Website",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
}
],
"has_web_view": 1,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_field": "image",
"image_view": 0,
"in_create": 0,
"is_published_field": "show_in_website",
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2018-03-01 17:08:43.568397",
"modified_by": "Administrator",
"module": "ERPNext Foundation",
"name": "Foundation Fellowship",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"route": "foundation-fellow",
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
}

View File

@@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2017, EOSSF and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.website.website_generator import WebsiteGenerator
class FoundationFellowship(WebsiteGenerator):
website = frappe._dict(
condition_field = "show_in_website"
)
def validate(self):
if not self.route:
self.route = 'foundation-fellow/' + self.scrub(self.name)
def get_context(self, context):
context.no_cache = True
context.parents = [dict(label='View All Foundation Fellows',
route='foundation-fellow', title='View All foundation fellows')]
def get_list_context(context):
context.allow_guest = True
context.no_cache = True
context.no_breadcrumbs = True
context.order_by = 'creation desc'
context.introduction = '<p>Following are the Foundation Fellows</p>'

View File

@@ -0,0 +1,63 @@
{% extends "templates/web.html" %}
{% from "foundation/templates/includes/macros.html" import media %}
{% block page_content %}
<h1 class="media-heading">{{ title }}</h1>
<section>
<div class="media">
<div class="media-left" style='min-width: 80px;'>
<a href="#">
<img class="media-object"
src="{{ image }}"
style="max-width: 80px; ">
</a>
</div>
<div class="media-body">
{{ introduction }}
<table class='table table-bordered small'
style='max-width: 400px; margin-bottom: 0px; margin-top: 20px'>
<tr>
<td style='width: 38.2%'>Country</td>
<td>{{ country }}</td>
</tr>
<tr>
<td>Address</td>
<td>{{ (address or '').replace('\n', '<br>') }}</td>
</tr>
</tr>
<td>Phone</td>
<td>{{ phone }}</td>
</tr>
</tr>
<td>Email</td>
<td><a href="mailto:{{ email }}" target="_blank">
{{ email }}</a></td>
</tr>
</tr>
<td>Disscuss Id</td>
<td>{{ discuss_id }}</td>
</tr>
</tr>
<td>Github Id</td>
<td>{{ github_id }}</td>
</tr>
{% if website_url %}
</tr>
<td>Website</td>
<td><a href="{{ website_url }}">{{ website_url }}</a></td>
</tr>
{% endif %}
</table>
</div>
</div>
</section>
<section>
{{ details }}
</section>
<section>
<p><a class='btn-primary btn' href="mailto:{{ email }}">Contact {{ title }}</a></p>
</section>
{% endblock %}

View File

@@ -0,0 +1,16 @@
<div class="media max-width-medium clickable" style="cursor: pointer;" onclick="location.href='{{ doc.route }}'">
<div class="media-left">
<a href="{{ link or "#" }}">
<img class="media-object"
src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}"
style="{% if image and not '/' in image %}opacity: 0.4{% endif %}">
</a>
</div>
<div class="media-body">
{% if title %}<h4 class="media-heading">{{ doc.title }}</h4>{% endif %}
<p>
<span class='label'>{{ frappe.format_date(doc.creation) }}</span>
<span class='label'>{{ doc.country }}</span>
</p>
</div>
</div>

View File

@@ -0,0 +1,21 @@
<article>
<p>A Foundation member has to propose name. Foundation Fellow Committee (Foundation Governance Council till the committee is formed) will decide on whether the person qualifies.</p>
<p>A Fellowship is a honorary position and may come with certain benefits as decided by the Foundation Fellow Committee.</p>
<p>It can be for contributions for which the person got paid, directly by the Foundation, or by the ERPNext ecosystem, stakeholders, service providers, users or user organizations.</p>
<p>Fellowship can be revoked by the Fellowship Committee for any reason.</p>
<h3>Minimum 3 months of contribution on ERPNext.</h3>
<ul>
<li><span>Localising ERPNext to a country's requirements</span></li>
<li><span>Enhancing existing modules</span></li>
<li><span>Creating new modules</span></li>
<li><span>Extending ERPNext to new industries, verticals</span></li>
<li><span>Growing the ERPNext userbase in a country, region.</span></li>
</ul>
<h3>Typical reasons (not a complete listing) for revoking Fellowship are:</h3>
<ul>
<li><span>Contributions were plagiarized from another ERPNext contributor</span></li>
<li><span>Fellow indulges in criminal or antisocial behavior</span></li>
<li><span>Fellow starts working against ERPNext interests and starts actively denouncing ERPNext in public and/or social forums.</span></li>
</ul>
<p>Following are the community driven Foundation Fellows:</p>
</article>

View File

@@ -2,15 +2,15 @@
// rename this file from _test_[name] to test_[name] to activate // rename this file from _test_[name] to test_[name] to activate
// and remove above this line // and remove above this line
QUnit.test("test: Chapter", function (assert) { QUnit.test("test: Foundation Fellowship", function (assert) {
let done = assert.async(); let done = assert.async();
// number of asserts // number of asserts
assert.expect(1); assert.expect(1);
frappe.run_serially('Chapter', [ frappe.run_serially([
// insert a new Chapter // insert a new Foundation Fellowship
() => frappe.tests.make([ () => frappe.tests.make('Foundation Fellowship', [
// values to be set // values to be set
{key: 'value'} {key: 'value'}
]), ]),

View File

@@ -6,5 +6,5 @@ from __future__ import unicode_literals
import frappe import frappe
import unittest import unittest
class TestChapter(unittest.TestCase): class TestFoundationFellowship(unittest.TestCase):
pass pass

View File

@@ -1,22 +0,0 @@
// Copyright (c) 2016, EOSSF and contributors
// For license information, please see license.txt
frappe.ui.form.on('Member', {
refresh: function(frm) {
frappe.call({
method:"frappe.client.get_value",
args:{
'doctype':"Membership",
'filters':{'member': frm.doc.name},
'fieldname':[
'to_date'
]
},
callback: function (data) {
frappe.model.set_value(frm.doctype,frm.docname, "expires_on", data.message.to_date);
}
});
}
});

View File

@@ -1,237 +0,0 @@
{
"allow_copy": 0,
"allow_import": 0,
"allow_rename": 0,
"autoname": "field:email",
"beta": 0,
"creation": "2017-02-24 11:47:56.865726",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "member_name",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Member Name",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "membership_type",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Membership Type",
"length": 0,
"no_copy": 0,
"options": "Gold\nSilver\nIndividual",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "email",
"fieldtype": "Data",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Email",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "image",
"fieldtype": "Attach Image",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Image",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "address",
"fieldtype": "Small Text",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Address",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "expires_on",
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Expires On",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"in_dialog": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-03-02 11:36:12.723569",
"modified_by": "Administrator",
"module": "ERPNext Foundation",
"name": "Member",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
}

View File

@@ -1,10 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015, EOSSF and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
class Member(Document):
pass

View File

@@ -1,12 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015, EOSSF and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
import unittest
# test_records = frappe.get_test_records('Member')
class TestMember(unittest.TestCase):
pass

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2016, EOSSF and contributors
// For license information, please see license.txt
frappe.ui.form.on('Membership', {
refresh: function(frm) {
}
});

View File

@@ -1,269 +0,0 @@
{
"allow_copy": 0,
"allow_guest_to_view": 0,
"allow_import": 0,
"allow_rename": 0,
"autoname": "M-.YY.-.####",
"beta": 0,
"creation": "2017-02-24 11:56:55.208964",
"custom": 0,
"docstatus": 0,
"doctype": "DocType",
"document_type": "",
"editable_grid": 1,
"engine": "InnoDB",
"fields": [
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "member",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Member",
"length": 0,
"no_copy": 0,
"options": "Member",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "membership_type",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Membership Type",
"length": 0,
"no_copy": 0,
"options": "Gold\nSilver\nIndividual",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "from_date",
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "From",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "to_date",
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "To",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "paid",
"fieldtype": "Check",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Paid",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "currency",
"fieldtype": "Select",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Currency",
"length": 0,
"no_copy": 0,
"options": "USD\nINR",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fieldname": "amount",
"fieldtype": "Float",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Amount",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
}
],
"has_web_view": 0,
"hide_heading": 0,
"hide_toolbar": 0,
"idx": 0,
"image_view": 0,
"in_create": 0,
"is_submittable": 0,
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2017-03-14 18:44:13.286524",
"modified_by": "Administrator",
"module": "ERPNext Foundation",
"name": "Membership",
"name_case": "",
"owner": "Administrator",
"permissions": [
{
"amend": 0,
"apply_user_permissions": 0,
"cancel": 0,
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"if_owner": 0,
"import": 0,
"permlevel": 0,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"set_user_permissions": 0,
"share": 1,
"submit": 0,
"write": 1
}
],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_seen": 0
}

View File

@@ -1,63 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015, EOSSF and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
from frappe.utils import add_days, add_years, nowdate, getdate
from frappe import _
import foundation
class Membership(Document):
def validate(self):
member_name = frappe.get_value('Member', dict(email=frappe.session.user))
if not member_name:
user = frappe.get_doc('User', frappe.session.user)
member = frappe.get_doc(dict(
doctype='Member',
email=frappe.session.user,
member_name=user.get_fullname()
)).insert(ignore_permissions=True)
member_name = member.name
if self.get("__islocal"):
self.member = member_name
# get last membership (if active)
last_membership = foundation.get_last_membership()
if last_membership:
# if last membership does not expire in 30 days, then do not allow to renew
if getdate(add_days(last_membership.to_date, -30)) > getdate(nowdate()):
frappe.throw(_('You can only renew if your membership expires within 30 days'))
self.from_date = add_days(last_membership.to_date, 1)
else:
self.from_date = nowdate()
self.to_date = add_years(self.from_date, 1)
def on_payment_authorized(self, status_changed_to=None):
if status_changed_to in ("Completed", "Authorized"):
self.load_from_db()
self.db_set('paid', 1)
self.link_member_with_service_provider()
def link_member_with_service_provider(self):
service_provider = frappe.db.get_value("Service Provider", dict(owner=frappe.session.user))
if service_provider:
frappe.db.set_value("Service Provider", service_provider, "member", frappe.session.user,
update_modified=False)
else:
# create new service provider for the member
doc = frappe.get_doc({
"doctype": "Service Provider",
"email": frappe.session.user,
"title": frappe.db.get_value("Member", self.member, "member_name"),
"member": self.member,
"show_in_website": 1
}).insert(ignore_mandatory=True, ignore_permissions = True)

View File

@@ -1,34 +0,0 @@
<div class="web-list-item membership-list-item">
<div class="row">
<div class="col-sm-3 col-xs-6">
#
</div>
<div class="col-sm-3 hidden-xs">
Membership
</div>
<div class="col-sm-3 col-xs-6">
Expires On
</div>
<div class="col-sm-3 hidden-xs">
Amount
</div>
</div>
</div>
<div class="web-list-item membership-list-item">
<div class="row">
<div class="col-sm-3 col-xs-6">
<a href="/{{ pathname }}?name={{ doc.name }}">
{{ doc.name }}
</a>
</div>
<div class="col-sm-3 hidden-xs">
{{ doc.membership_type }}
</div>
<div class="col-sm-3 col-xs-6">
{{ frappe.utils.global_date_format(doc.to_date) }}
</div>
<div class="col-sm-3 hidden-xs">
{{ doc.amount }}
</div>
</div>
</div>

View File

@@ -1,12 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2015, EOSSF and Contributors
# See license.txt
from __future__ import unicode_literals
import frappe
import unittest
# test_records = frappe.get_test_records('Membership')
class TestMembership(unittest.TestCase):
pass

View File

@@ -13,6 +13,7 @@
"engine": "InnoDB", "engine": "InnoDB",
"fields": [ "fields": [
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -42,6 +43,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -71,6 +73,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -87,7 +90,7 @@
"label": "Status", "label": "Status",
"length": 0, "length": 0,
"no_copy": 0, "no_copy": 0,
"options": "Open\nCompleted\nExpired\nWithdrawn", "options": "Open\nCompleted\nDeveloper Hired\nExpired\nWithdrawn",
"permlevel": 0, "permlevel": 0,
"precision": "", "precision": "",
"print_hide": 0, "print_hide": 0,
@@ -101,6 +104,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -130,6 +134,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -160,6 +165,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -190,6 +196,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -220,6 +227,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -250,6 +258,7 @@
"unique": 0 "unique": 0
}, },
{ {
"allow_bulk_edit": 0,
"allow_on_submit": 0, "allow_on_submit": 0,
"bold": 0, "bold": 0,
"collapsible": 0, "collapsible": 0,
@@ -290,7 +299,7 @@
"issingle": 0, "issingle": 0,
"istable": 0, "istable": 0,
"max_attachments": 0, "max_attachments": 0,
"modified": "2017-03-22 15:30:54.620681", "modified": "2017-10-25 05:24:04.271224",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "Portal Job", "name": "Portal Job",

View File

@@ -23,6 +23,10 @@
<td>Date</td> <td>Date</td>
<td>{{ frappe.format_date(creation) }}</td> <td>{{ frappe.format_date(creation) }}</td>
</tr> </tr>
<tr>
<td>Status</td>
<td>{{ status }}</td>
</tr>
</table> </table>
<h3>Details</h3> <h3>Details</h3>
<p>{{ description }}</p> <p>{{ description }}</p>

View File

@@ -6,6 +6,7 @@
<span class='label'>{{ frappe.format_date(doc.creation) }}</span> <span class='label'>{{ frappe.format_date(doc.creation) }}</span>
<span class='label'>{{ doc.country }}</span> <span class='label'>{{ doc.country }}</span>
<span class='label'>{{ doc.job_type }}</span> <span class='label'>{{ doc.job_type }}</span>
<span class='label'>{{ doc.status }}</span>
</p> </p>
<p>{{ html2text(doc.description)[:200] }}{% if doc.description|len > 200 %}...{% endif %}</p> <p>{{ html2text(doc.description)[:200] }}{% if doc.description|len > 200 %}...{% endif %}</p>
</a> </a>

View File

@@ -5,9 +5,10 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe import frappe
from frappe.website.website_generator import WebsiteGenerator from frappe.website.website_generator import WebsiteGenerator
from frappe.utils import get_datetime
class ServiceProvider(WebsiteGenerator): class ServiceProvider(WebsiteGenerator):
_website = frappe._dict( website = frappe._dict(
condition_field = "show_in_website", condition_field = "show_in_website",
) )
def validate(self): def validate(self):
@@ -21,4 +22,42 @@ class ServiceProvider(WebsiteGenerator):
if self.member: if self.member:
context.membership_type = frappe.get_value('Member', self.member, 'membership_type') context.membership_type = frappe.get_value('Member', self.member, 'membership_type')
if context.website and not context.website.startswith('http'): if context.website and not context.website.startswith('http'):
context.website = 'http://' + context.website context.website = 'http://' + context.website
if not context.image:
if context.membership_type == "Gold":
context.image = "/assets/foundation/img/gold.png"
elif context.membership_type == "Silver":
context.image = "/assets/foundation/img/silver.png"
else:
context.image = "/assets/foundation/img/default-membership-logo.png"
def send_alert_to_inactive_service_providers():
for service_provider in frappe.get_all("Service Provider", fields=['email', 'title']):
if get_last_login_diff(service_provider.email) == 80:
send_reminder(service_provider)
def send_reminder(service_provider_details):
message = frappe.render_template("foundation/templates/emails/inactivity_reminder.md", service_provider_details)
frappe.sendmail(recipients=service_provider_details.email, subject="About account inactivity", message=message)
def unpublish_service_provider():
for service_provider in frappe.get_all("Service Provider", fields=['email', 'name','title']):
if get_last_login_diff(service_provider.email) == 90:
frappe.db.set_value('Service Provider', service_provider.name, 'show_in_website', 0, update_modified=False)
def publish_service_provider():
"""
If Service provider is unpublished and login then automatically enabled name in service provider listing
"""
for service_provider in frappe.get_all("Service Provider", fields=['email','name', 'title', 'show_in_website']):
if get_last_login_diff(service_provider.email) == 0 and service_provider.show_in_website == 0:
frappe.db.set_value('Service Provider', service_provider.name, 'show_in_website', 1, update_modified=False)
def get_last_login_diff(user):
"""
Returns difference between todays date and last login date
"""
last_login = frappe.db.get_value("User", user, ["last_login"])
for x in xrange(1,10):
print((get_datetime() - get_datetime(last_login)).days, user)
return (get_datetime() - get_datetime(last_login)).days

View File

@@ -1,25 +1,22 @@
{% extends "templates/web.html" %} {% extends "templates/web.html" %}
{% from "foundation/templates/includes/macros.html" import media %} {% from "foundation/templates/includes/macros.html" import media %}
{% block page_content %} {% block page_content %}
<h1 class="media-heading">{{ title }}</h1> <h1 class="media-heading">{{ title }}</h1>
{% if membership_type %} {% if membership_type %}
<p><span class=label>{{ membership_type }} Member<span></p> <p><span class=label>{{ membership_type }} Member<span></p>
{% endif %} {% endif %}
<section> <section>
<div class="media" style="margin: 45px 0px; "> <div class="media">
<div class="media-left" style='min-width: 80px;'> <div class="media-left">
<a href="#"> <a href="#">
<img class="media-object" <img class="media-object"
src="{{ image }}" src="{{ image }}">
style="max-width: 80px; ">
</a> </a>
</div> </div>
<div class="media-body"> <div class="media-body">
{{ introduction }} {{ introduction }}
<table class='table table-bordered small' <table class='table table-bordered small'>
style='max-width: 400px; margin-bottom: 0px; margin-top: 20px'>
<tr> <tr>
<td style='width: 38.2%'>Country</td> <td style='width: 38.2%'>Country</td>
<td>{{ country }}</td> <td>{{ country }}</td>
@@ -37,10 +34,12 @@
<td><a href="mailto:{{ email }}" target="_blank"> <td><a href="mailto:{{ email }}" target="_blank">
{{ email }}</a></td> {{ email }}</a></td>
</tr> </tr>
{% if website_url %}
</tr> </tr>
<td>Website</td> <td>Website</td>
<td><a href="{{ website }}" target="_blank">{{ website }}</a></td> <td><a href="{{ website_url }}" target="_blank">{{ website_url }}</a></td>
</tr> </tr>
{% endif %}
</table> </table>
</div> </div>
@@ -52,5 +51,4 @@
<section> <section>
<p><a class='btn-primary btn' href="mailto:{{ email }}">Contact {{ title }}</a></p> <p><a class='btn-primary btn' href="mailto:{{ email }}">Contact {{ title }}</a></p>
</section> </section>
{% endblock %} {% endblock %}

View File

@@ -1,4 +1,5 @@
{ {
"_liked_by": "[\"Administrator\"]",
"accept_payment": 0, "accept_payment": 0,
"allow_comments": 0, "allow_comments": 0,
"allow_delete": 0, "allow_delete": 0,
@@ -13,10 +14,11 @@
"docstatus": 0, "docstatus": 0,
"doctype": "Web Form", "doctype": "Web Form",
"idx": 0, "idx": 0,
"introduction_text": "",
"is_standard": 1, "is_standard": 1,
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2017-03-06 15:50:21.725600", "modified": "2017-10-25 05:59:11.262965",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "add-edit-app", "name": "add-edit-app",
@@ -89,6 +91,16 @@
"max_value": 0, "max_value": 0,
"read_only": 0, "read_only": 0,
"reqd": 0 "reqd": 0
},
{
"fieldname": "published",
"fieldtype": "Check",
"hidden": 0,
"label": "Show on Website",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 0
} }
] ]
} }

View File

@@ -17,7 +17,7 @@
"is_standard": 1, "is_standard": 1,
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2017-08-31 16:58:13.787406", "modified": "2017-10-25 05:36:04.935016",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "jobs", "name": "jobs",
@@ -58,7 +58,7 @@
"label": "Status", "label": "Status",
"max_length": 0, "max_length": 0,
"max_value": 0, "max_value": 0,
"options": "Open\nCompleted\nExpired\nWithdrawn", "options": "Open\nCompleted\nDeveloper Hired\nExpired\nWithdrawn",
"read_only": 0, "read_only": 0,
"reqd": 0 "reqd": 0
}, },

View File

@@ -15,10 +15,11 @@
"docstatus": 0, "docstatus": 0,
"doctype": "Web Form", "doctype": "Web Form",
"idx": 0, "idx": 0,
"introduction_text": "",
"is_standard": 1, "is_standard": 1,
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2017-03-14 16:31:47.735437", "modified": "2018-01-08 15:53:09.381486",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "memberships", "name": "memberships",
@@ -35,12 +36,12 @@
"web_form_fields": [ "web_form_fields": [
{ {
"fieldname": "membership_type", "fieldname": "membership_type",
"fieldtype": "Select", "fieldtype": "Link",
"hidden": 0, "hidden": 0,
"label": "Membership Type", "label": "Membership Type",
"max_length": 0, "max_length": 0,
"max_value": 0, "max_value": 0,
"options": "Gold\nSilver\nIndividual", "options": "Membership Type",
"read_only": 0, "read_only": 0,
"reqd": 1 "reqd": 1
}, },

View File

@@ -8,7 +8,7 @@ def get_context(context):
pass pass
def get_list_context(context): def get_list_context(context):
context.row_template = 'erpnext_foundation/doctype/membership/templates/membership_list.html' context.row_template = 'non_profit/doctype/membership/templates/membership_list.html'
context.get_list = get_site_list context.get_list = get_site_list
def get_site_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by=None): def get_site_list(doctype, txt, filters, limit_start, limit_page_length=20, order_by=None):

View File

@@ -15,10 +15,11 @@
"docstatus": 0, "docstatus": 0,
"doctype": "Web Form", "doctype": "Web Form",
"idx": 0, "idx": 0,
"introduction_text": "",
"is_standard": 1, "is_standard": 1,
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2017-03-14 18:38:07.785349", "modified": "2018-01-08 15:53:23.345945",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "memberships-usd", "name": "memberships-usd",
@@ -35,12 +36,12 @@
"web_form_fields": [ "web_form_fields": [
{ {
"fieldname": "membership_type", "fieldname": "membership_type",
"fieldtype": "Select", "fieldtype": "Link",
"hidden": 0, "hidden": 0,
"label": "Membership Type", "label": "Membership Type",
"max_length": 0, "max_length": 0,
"max_value": 0, "max_value": 0,
"options": "Gold\nSilver\nIndividual", "options": "Membership Type",
"read_only": 0, "read_only": 0,
"reqd": 1 "reqd": 1
}, },

View File

@@ -17,7 +17,7 @@
"is_standard": 1, "is_standard": 1,
"login_required": 1, "login_required": 1,
"max_attachment_size": 0, "max_attachment_size": 0,
"modified": "2017-02-27 16:48:13.115907", "modified": "2018-01-10 12:04:04.245162",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "ERPNext Foundation", "module": "ERPNext Foundation",
"name": "service-provider", "name": "service-provider",
@@ -121,6 +121,16 @@
"max_value": 0, "max_value": 0,
"read_only": 0, "read_only": 0,
"reqd": 0 "reqd": 0
},
{
"fieldname": "website",
"fieldtype": "Data",
"hidden": 0,
"label": "Website URL",
"max_length": 0,
"max_value": 0,
"read_only": 0,
"reqd": 0
} }
] ]
} }

View File

@@ -36,23 +36,22 @@ app_license = "MIT"
# application home page (will override Website Settings) # application home page (will override Website Settings)
home_page = "index" home_page = "index"
template_apps = ['foundation', 'frappe_theme', 'erpnext', 'frappe'] template_apps = ['foundation', 'erpnext', 'frappe']
website_context = { website_context = {
# "navbar_search": 1, # "navbar_search": 1,
"brand_html": "<img class='navbar-icon' src='/assets/foundation/img/erpnext-logo.jpg' />ERPNext.org", "brand_html": "<img class='navbar-icon' src='/assets/foundation/img/erpnext-logo.svg' alt='Oensource ERP Software'/>ERPNext.org",
"copyright": "ERPNext Open Source Software Foundation",
"footer_address": "<br>ERPNext is and will always be 100% Open Source",
"top_bar_items": [ "top_bar_items": [
{"label": "Docs", "url": "/docs", "right": 1}, {"label": "Foundation", "child_items":[
{"label": "Services", "url": "/service-providers", "right": 1}, {"label": "Chapter", "url": "/chapters","right": 1},
{"label": "Jobs", "url": "/erpnext-jobs", "right": 1}, {"label": "Foundation Fellow", "url": "/foundation-fellow","right": 1}
{"label": "Chapters", "url": "/chapters", "right": 1}, ], "right":1},
{"label": "Bounties", "url": "/bounties", "right": 1}, {"label": "Services", "child_items":[
{"label": '<span class="indicator blue">Conference</span>', "url": "/conf/2017", "right": 1}, {"label": "Service Providers", "url": "/service-providers","right": 1},
{"label": "About", "url": "/about", "right": 1}, {"label": "Freelancer Jobs", "url": "/erpnext-jobs", "right": 1},
], "right":1},
], ],
"hide_login": 1, "hide_login": 0,
"favicon": "/assets/frappe_theme/img/favicon.ico" "favicon": "/assets/foundation/img/favicon.ico"
} }
# website user home page (by Role) # website user home page (by Role)
# role_home_page = { # role_home_page = {
@@ -70,6 +69,7 @@ website_context = {
portal_menu_items = [ portal_menu_items = [
{'label': 'My Profile', 'route': '/service-provider-settings'}, {'label': 'My Profile', 'route': '/service-provider-settings'},
{'label': 'Module Leader', 'route': '/module-leader-settings'},
{'label': 'Membership', 'route': '/members/details'}, {'label': 'Membership', 'route': '/members/details'},
{'label': 'Conference Talks', 'route': '/conference-talk-proposal'}, {'label': 'Conference Talks', 'route': '/conference-talk-proposal'},
{'label': 'Jobs', 'route': '/my-jobs'}, {'label': 'Jobs', 'route': '/my-jobs'},
@@ -116,23 +116,25 @@ portal_menu_items = [
# Scheduled Tasks # Scheduled Tasks
# --------------- # ---------------
# scheduler_events = { scheduler_events = {
# "all": [ # "all": [
# "foundation.tasks.all" # "foundation.tasks.all"
# ], # ],
# "daily": [ "daily": [
# "foundation.tasks.daily" "foundation.erpnext_foundation.doctype.service_provider.service_provider.send_alert_to_inactive_service_providers",
# ], "foundation.erpnext_foundation.doctype.service_provider.service_provider.unpublish_service_provider",
# "hourly": [ "foundation.erpnext_foundation.doctype.service_provider.service_provider.publish_service_provider",
# "foundation.tasks.hourly" ],
# ], # "hourly": [
# "weekly": [ # "foundation.tasks.hourly"
# "foundation.tasks.weekly" # ],
# ] # "weekly": [
# "monthly": [ # "foundation.tasks.weekly"
# "foundation.tasks.monthly" # ]
# ] # "monthly": [
# } # "foundation.tasks.monthly"
# ]
}
# Testing # Testing
# ------- # -------
@@ -145,4 +147,3 @@ portal_menu_items = [
# override_whitelisted_methods = { # override_whitelisted_methods = {
# "frappe.desk.doctype.event.event.get_events": "foundation.event.get_events" # "frappe.desk.doctype.event.event.get_events": "foundation.event.get_events"
# } # }

View File

@@ -1 +1,3 @@
foundation.patches.v0_0.update_erpnext_job_route foundation.patches.v0_0.update_erpnext_job_route
foundation.patches.v0_0.change_website_to_website_url
foundation.patches.v0_0.service_providers_website_to_website_url

View File

@@ -0,0 +1,6 @@
import frappe
def execute():
frappe.db.sql('''
ALTER TABLE `tabFoundation Fellowship` CHANGE `website` `website_url` varchar(140);
''')

View File

@@ -0,0 +1,8 @@
import frappe
def execute():
frappe.reload_doc("erpnext_foundation", "doctype", "service_provider")
frappe.db.sql('''
update `tabService Provider`
set website_url = website
''')

View File

@@ -0,0 +1,5 @@
{
"foundation/css/erpnext-org-theme.css": [
"public/less/erpnext-org-theme.less"
]
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,367 @@
/*!
* this reset is a copy of bootstrap's reboot.css which is inturn a fork of normalise*
*
*
* Bootstrap Reboot v4.0.0-beta.3 (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-ms-overflow-style: scrollbar;
-webkit-tap-highlight-color: transparent;
line-height: 1.62;
font-size: 14px;
}
@media screen and (min-width: 767px) {
html {
font-size: 16px;
}
}
@-ms-viewport {
width: device-width;
}
article,
aside,
dialog,
figcaption,
figure,
footer,
header,
hgroup,
main,
nav,
section {
display: block;
}
body {
margin: 0;
font-weight: 400;
text-align: left;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica", "Arial", "Noto", "Oxygen-Sans", "Noto Sans", "Ubuntu", "Cantarell", sans-serif, "Apple Color Emoji", "Noto Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
color: #36414c;
font-feature-settings: "kern" 1;
font-kerning: normal;
text-rendering: optimizeLegibility;
}
[ tabindex = "-1" ]:focus {
outline: 0;
}
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-bottom: 1rem;
margin-top: 0;
font-weight: 500;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[ title ],
abbr[ data-original-title ] {
text-decoration: underline;
-webkit-text-decoration: underline dotted;
cursor: help;
border-bottom: 0;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
dfn {
font-style: italic;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
text-decoration: none;
background-color: transparent;
-webkit-text-decoration-skip: objects;
}
a:hover {
text-decoration: underline;
}
a:not([ href ]):not([ tabindex ]) {
text-decoration: none;
}
a:not([ href ]):not([ tabindex ]):focus,
a:not([ href ]):not([ tabindex ]):hover {
text-decoration: none;
}
a:not([ href ]):not([ tabindex ]):focus {
outline: 0;
}
pre,
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
border-style: none;
max-width: 100%;
border-radius: 0.25em;
}
svg:not(:root) {
overflow: hidden;
}
a,
area,
button,
[ role = "button" ],
input:not([ type = "range" ]),
label,
select,
summary,
textarea {
-ms-touch-action: manipulation;
touch-action: manipulation;
}
table {
border-collapse: collapse;
}
caption {
padding-top: 0.75rem;
padding-bottom: 0.75rem;
color: #6c757d;
text-align: left;
caption-side: bottom;
}
th {
text-align: inherit;
}
label {
display: inline-block;
margin-bottom: 0.5rem;
}
button {
border-radius: 0;
}
button:focus {
outline: none;
outline: 5px auto -webkit-focus-ring-color;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html [type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
padding: 0;
border-style: none;
}
input[type="radio"],
input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
max-width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: 1.5rem;
line-height: inherit;
color: inherit;
white-space: normal;
}
progress {
vertical-align: baseline;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
outline-offset: -2px;
-webkit-appearance: none;
}
[type="search"]::-webkit-search-cancel-button,
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
summary {
display: list-item;
cursor: pointer;
}
template {
display: none;
}
[hidden] {
display: none !important;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

View File

@@ -1,125 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="199.90601mm"
height="25.419046mm"
viewBox="0 0 708.32837 90.067487"
id="svg4241"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="mnt_logo.svg">
<defs
id="defs4243" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="230.22122"
inkscape:cy="-255.58374"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-top="-0.8"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1317"
inkscape:window-height="744"
inkscape:window-x="49"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata4246">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-17.264423,-11.603008)">
<g
transform="matrix(2.1678617,0,0,2.1678617,-199.24183,-1037.6959)"
id="g4221-3"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<g
id="g4813"
transform="matrix(0.95383105,0,0,0.95383105,12.153569,23.275819)">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:31.10012436px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00cb6f;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="190.9724"
y="516.14307"
id="text4237-3-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4239-6-7"
x="190.9724"
y="516.14307"
style="font-weight:bold;fill:#00cb6f;fill-opacity:1">MN Technique</tspan></text>
<path
style="fill:#00cb6f;fill-opacity:1;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 113.60466,482.79083 -8.60807,0 11.38486,43.04035 8.60807,0 z"
id="rect3336-3-6-7-3-2-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 104.35793,482.45761 8.60807,0 -11.38487,43.04034 -8.608072,0 z"
id="rect3336-3-5-5-6-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#00cb6f;fill-opacity:1;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 136.92975,482.79083 -8.60807,0 11.38487,43.04035 8.60807,0 z"
id="rect3336-3-6-3-6-1-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 127.68302,482.45761 8.60807,0 -11.38487,43.04034 -8.60807,0 z"
id="rect3336-3-56-2-8-6"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#00cb6f;fill-opacity:1;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 160.25484,482.79083 -8.60806,0 11.38486,43.04035 8.60807,0 z"
id="rect3336-3-6-2-9-7-2"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 151.00811,482.45761 8.60807,0 -11.38487,43.04034 -8.60806,0 z"
id="rect3336-3-9-1-9-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#00cb6f;stroke-width:1.55500627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 174.45816,482.56868 8.60807,0 -11.38487,43.04035 -8.60807,0 z"
id="rect3336-3-5-1-2-2-1"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
<title>erp-icon</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="erp-icon" fill-rule="nonzero">
<path d="M512,448 C512,483.2 483.2,512 448,512 L64,512 C28.8,512 0,483.2 0,448 L0,64 C0,28.8 28.8,0 64,0 L448,0 C483.2,0 512,28.8 512,64 L512,448 Z" id="Shape" fill="#458A49"></path>
<path d="M150.483,371.684 L150.483,141.15 C150.483,125.983 160.017,116.017 174.316,116.017 L336.816,116.017 C350.682,116.017 357.616,122.95 357.616,134.65 L357.616,137.25 C357.616,149.383 350.682,155.883 336.816,155.883 L195.116,155.883 L195.116,234.317 L304.75,234.317 C319.05,234.317 325.55,240.383 325.55,252.084 L325.55,253.384 C325.55,265.517 318.616,272.017 304.75,272.017 L195.117,272.017 L195.117,356.951 L339.417,356.951 C353.284,356.951 359.784,363.017 359.784,374.718 L359.784,376.885 C359.784,389.451 353.284,396.385 339.417,396.385 L174.317,396.385 C160.017,396.384 150.483,386.851 150.483,371.684 Z" id="Shape" fill="#FFFFFF"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -1,36 +1,94 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <svg
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> xmlns:dc="http://purl.org/dc/elements/1.1/"
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" xmlns:cc="http://creativecommons.org/ns#"
width="503.223px" height="86.323px" viewBox="0 0 503.223 86.323" enable-background="new 0 0 503.223 86.323" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xml:space="preserve"> xmlns:svg="http://www.w3.org/2000/svg"
<g> xmlns="http://www.w3.org/2000/svg"
<path fill="#213B4D" d="M0,74.103V11.18C0,4.42,3.77,0.52,10.01,0.52h46.932c5.98,0,8.84,2.99,8.84,8.061v0.65 id="svg5271"
c0,5.33-2.86,8.06-8.84,8.06H19.24v16.641h27.562c6.24,0,8.84,2.73,8.84,7.41v0.521c0,5.07-2.73,7.8-8.84,7.8H19.24v18.331h38.352 version="1.1"
c5.98,0,8.84,2.6,8.84,7.54v0.78c0,5.2-2.86,8.32-8.84,8.32H10.01C3.77,84.633,0,80.862,0,74.103z"/> viewBox="0 0 87.312531 87.312515"
<path fill="#213B4D" d="M119.081,77.353L101.14,54.731h-7.28v21.711c0,5.46-2.86,8.71-8.32,8.71h-2.73c-5.2,0-8.06-3.77-8.06-10.53 height="330.00006"
V11.18c0-6.76,3.77-10.66,10.01-10.66h24.831c21.841,0,33.151,9.101,33.151,26.261c0,13.521-7.67,22.621-21.841,24.961 width="330.00012">
l21.841,26.392c0.78,0.91-2.86,7.02-11.05,7.02C126.23,85.152,123.11,82.812,119.081,77.353z M93.6,40.691h14.69 <defs
c10.271,0,15.21-4.811,15.21-12.61c0-8.19-5.2-12.61-15.601-12.61H93.6V40.691z"/> id="defs5265" />
<path fill="#213B4D" d="M151.707,76.442V11.18c0-6.76,3.771-10.66,10.011-10.66h21.971c22.231,0,34.581,9.881,34.581,28.471 <metadata
c0,18.721-11.83,28.342-34.581,28.342h-12.74v19.11c0,5.46-2.86,8.71-8.32,8.71h-2.86 id="metadata5268">
C154.697,85.152,151.707,82.163,151.707,76.442z M170.688,42.901h12.741c10.53,0,16.12-4.94,16.12-13.78 <rdf:RDF>
c0-8.841-5.59-13.65-16.25-13.65h-12.61V42.901z"/> <cc:Work
<path fill="#213B4D" d="M243.876,76.442V9.49c0-6.11,3.12-9.49,8.32-9.49h2.34c5.07,0,6.76,1.689,9.75,5.46l36.401,50.052V8.71 rdf:about="">
c0-5.72,2.73-8.71,8.189-8.71h1.82c5.33,0,8.061,2.99,8.061,8.71v66.952c0,6.24-3.119,9.49-8.189,9.49h-1.561 <dc:format>image/svg+xml</dc:format>
c-5.07,0-6.5-1.3-9.23-4.68l-37.832-52.002v47.972c0,5.721-2.73,8.71-8.32,8.71h-1.82 <dc:type
C246.606,85.152,243.876,82.163,243.876,76.442z"/> rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<path fill="#213B4D" d="M326.553,53.432c0-19.371,13.91-33.671,33.152-33.671c18.721,0,31.59,13.13,31.59,31.721v1.3 <dc:title></dc:title>
c-0.129,3.25-1.039,5.07-4.42,5.07h-43.811c1.299,9.49,8.58,15.081,18.46,15.081c9.62,0,14.95-4.29,17.94-9.36 <cc:license
c0.131-0.26,8.84,0.91,8.84,8.19c0,6.89-9.75,14.561-27.43,14.561C340.204,86.323,326.553,73.452,326.553,53.432z M343.065,47.191 rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
h31.201c-0.391-8.84-5.98-14.69-14.821-14.69C350.864,32.501,344.364,38.611,343.065,47.191z"/> </cc:Work>
<path fill="#213B4D" d="M453.825,79.303c0.65,0.91-4.03,6.11-10.531,6.11c-4.16,0-7.539-2.21-9.88-6.631l-10.79-16.9l-10.66,16.9 <cc:License
c-2.34,4.29-5.851,6.631-10.141,6.631c-6.11,0-10.92-5.33-10.271-6.11l19.241-26.261l-19.111-26.521 rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
c-0.52-0.91,4.16-6.11,10.141-6.11c4.29,0,7.801,1.95,10.27,6.631l10.791,16.9l10.791-16.9c2.6-4.811,6.369-6.631,10.01-6.631 <cc:permits
c6.24,0,11.051,5.2,10.4,6.11l-19.371,26.521L453.825,79.303z"/> rdf:resource="http://creativecommons.org/ns#Reproduction" />
<path fill="#213B4D" d="M455.122,29.121v-1.17c0-4.421,2.471-6.761,7.67-6.761h3.121V13.13c0-5.979,3.119-8.84,8.32-8.84h1.56 <cc:permits
c4.94,0,8.19,2.08,8.19,8.84v8.061h11.051c5.199,0,7.41,2.21,7.41,6.5v1.04c0,4.42-2.34,6.761-7.541,6.761h-11.311v27.041 rdf:resource="http://creativecommons.org/ns#Distribution" />
c0,6.24,2.08,9.36,7.021,9.36c3.77,0,6.24-1.82,8.189-4.29c0.26-0.391,4.42,2.08,4.42,7.149c0,6.371-6.369,11.571-16.77,11.571 <cc:requires
c-14.041,0-20.541-7.411-20.541-21.711V35.491h-3.121C457.592,35.491,455.122,33.281,455.122,29.121z"/> rdf:resource="http://creativecommons.org/ns#Notice" />
</g> <cc:requires
</svg> rdf:resource="http://creativecommons.org/ns#Attribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
<cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" />
</cc:License>
</rdf:RDF>
</metadata>
<g
transform="translate(-50.081839,-105.93303)"
id="layer1">
<g
transform="translate(-1596.0827,-463.42076)"
id="g1446-4-5">
<g
style="stroke-width:1.0000006"
transform="matrix(0.9999989,0,0,0.99999981,279.19167,438.7826)"
id="g1422-7-2">
<g
style="stroke-width:1.0000006"
id="g1418-4-6"
transform="translate(-25.731002,-0.1322636)">
<g
style="stroke-width:1.0000006"
transform="translate(-95.250002)"
id="g1416-4-9">
<path
style="opacity:1;vector-effect:none;fill:#7574ff;fill-opacity:1;stroke:none;stroke-width:3.96875262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="m 1501.1846,130.70348 h 60.8542 c 7.329,0 13.2292,5.9002 13.2292,13.22916 v 60.85419 c 0,7.32896 -5.9002,13.22917 -13.2292,13.22917 h -60.8542 c -7.3289,0 -13.2292,-5.90021 -13.2292,-13.22917 v -60.85419 c 0,-7.32896 5.9003,-13.22916 13.2292,-13.22916 z"
id="path1414-3-4" />
</g>
</g>
<g
id="g1420-0-4"
transform="matrix(1.0131472,0,0,1.0131472,-144.01349,-2.2905938)"
style="stroke-width:0.98702425" />
</g>
<path
id="circle1424-7-6"
transform="matrix(0.26458333,0,0,0.26458333,1646.1645,569.35379)"
d="M 164.92578 228.00977 A 412.60453 412.60453 0 0 0 0 262.94922 L 0 280 C 0 307.70001 22.30022 330 50 330 L 280 330 C 307.69978 330 330 307.70001 330 280 L 330 262.70508 A 412.60453 412.60453 0 0 0 164.92578 228.00977 z "
clip-path="none"
style="opacity:1;vector-effect:none;fill:#6564f9;fill-opacity:1;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<g
style="fill:#4a15c6;fill-opacity:1"
transform="translate(2.8144523,0.84784259)"
id="g1434-8-0" />
<g
id="g1444-6-7"
transform="translate(3.8727857,-0.32524952)">
<path
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
d="m 3738.9473,951.78516 c -1.0388,0 -2.0511,0.10552 -3.0293,0.30468 -0.9783,0.19916 -1.9225,0.49258 -2.8203,0.8711 -0.449,0.18926 -0.8854,0.40047 -1.3106,0.63086 -0.8503,0.46076 -1.6504,1.00091 -2.3906,1.61132 -3.3312,2.74687 -5.4492,6.90766 -5.4492,11.58204 v 0.91406 133.17378 0.9122 c 0,8.31 6.69,15 15,15 h 104.9082 c 8.31,0 15,-6.69 15,-15 v -0.9122 c 0,-8.31 -6.69,-15 -15,-15 h -88.9942 v -37.3613 h 66.1699 c 8.31,0 15,-6.69 15,-15 v -0.9121 c 0,-8.31 -6.69,-15 -15,-15 h -66.1699 v -34.90038 h 88.9942 c 8.31,0 15,-6.69 15,-15 v -0.91406 c 0,-8.31 -6.69,-15 -15,-15 z"
transform="matrix(0.26458334,0,0,0.26458334,682.80626,339.68051)"
id="rect1436-8-4" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -1,16 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="222px" height="168px" viewBox="0 0 222 168" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch --> xmlns:dc="http://purl.org/dc/elements/1.1/"
<title>Group</title> xmlns:cc="http://creativecommons.org/ns#"
<desc>Created with Sketch.</desc> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
<defs></defs> xmlns:svg="http://www.w3.org/2000/svg"
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> xmlns="http://www.w3.org/2000/svg"
<g id="Group" fill-rule="nonzero"> id="svg16"
<path d="M39.838,4.703 L85.685,50.55" id="Shape" fill="#FF783D"></path> style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996"
<path d="M116.07,167.331 C114.972,167.331 113.892,166.904 113.083,166.099 L37.699,91.15 C36.899,90.355 36.45,89.273 36.45,88.145 L36.45,4.703 C36.45,2.364 38.346,0.468 40.683,0.468 C43.023,0.468 44.919,2.364 44.919,4.703 L44.919,86.385 L111.833,152.913 L111.833,102.073 C111.833,99.735 113.729,97.839 116.067,97.839 C118.407,97.839 120.303,99.735 120.303,102.073 L120.303,163.095 C120.303,164.806 119.274,166.349 117.694,167.006 C117.17,167.225 116.617,167.331 116.07,167.331 Z" id="Shape" fill="#000000"></path> xml:space="preserve"
<path d="M40.684,46.206 L5.109,46.206 C3.423,46.206 1.897,45.208 1.225,43.662 C0.552,42.115 0.862,40.317 2.01,39.085 L27.506,11.723 L36.738,1.816 C38.333,0.105 41.013,0.009 42.724,1.604 C44.435,3.199 44.529,5.878 42.935,7.59 L14.844,37.736 L40.684,37.736 C43.024,37.736 44.92,39.632 44.92,41.972 C44.92,44.311 43.023,46.206 40.684,46.206 Z" id="Shape" fill="#000000"></path> version="1.1"
<path d="M85.685,54.784 C84.588,54.784 83.492,54.362 82.663,53.516 L37.663,7.669 C36.024,5.999 36.05,3.317 37.719,1.68 C39.389,0.041 42.07,0.067 43.708,1.736 L88.708,47.584 C90.347,49.253 90.321,51.934 88.652,53.572 C87.826,54.381 86.756,54.784 85.685,54.784 Z" id="Shape" fill="#000000"></path> viewBox="0 0 233.10893 184.52928"
<path d="M82.015,133.274 C80.802,133.274 79.599,132.756 78.761,131.752 C77.262,129.956 77.504,127.285 79.299,125.787 L205.176,20.796 L127.873,20.796 L43.229,91.397 C41.433,92.895 38.762,92.655 37.263,90.857 C35.765,89.062 36.007,86.39 37.803,84.892 L123.626,13.309 C124.388,12.675 125.347,12.327 126.338,12.327 L216.863,12.327 C218.645,12.327 220.238,13.444 220.844,15.12 C221.451,16.796 220.944,18.673 219.574,19.814 L84.726,132.292 C83.934,132.953 82.971,133.274 82.015,133.274 Z" id="Shape" fill="#000000"></path> height="184.52928"
</g> width="233.10893"><metadata
</g> id="metadata22"><rdf:RDF><cc:Work
</svg> rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><defs
id="defs20" /><path
style="fill:#29344a;fill-opacity:1;stroke:none;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 32.996565,1.9352345e-4 C 32.920595,-0.00190648 32.848004,0.01370352 32.773387,0.01707352 c -0.17861,-0.01013 -0.360732,-0.0068 -0.544372,0.02026 -0.613757,0.08981 -1.242875,0.401518 -1.814563,1.00325498 L 30.016615,1.5709865 0.53497063,40.895016 c -1.327318,1.789981 -0.08137,4.651792 2.59622497,4.349742 L 35.168988,40.67518 42.012044,88.660303 c 0.131003,0.97745 0.647283,1.71644 1.331268,2.17401 0.05571,0.52506 0.274499,1.05866 0.718863,1.53193 l 49.558917,50.417347 c 0.32211,0.31941 0.69614,0.52989 1.08699,0.65779 l 39.526398,40.21036 c 2.00898,1.88759 5.24535,0.54029 5.24485,-2.23509 l 0.65951,-80.71558 92.10383,-90.694028 c 1.85795,-1.7675625 0.48302,-4.6583425 -1.81807,-4.5835565 l -99.81928,-0.807829 c -1.05771,-0.0068 -1.66614,0.53897 -1.90703,0.76944 L 61.387877,71.666093 84.005562,41.49695 c 1.20682,-1.653272 0.51345,-3.515475 -0.6281,-4.375909 L 34.753728,0.60263852 c -0.587859,-0.401348 -1.188043,-0.585901 -1.756994,-0.60193899655 z"
id="path846" /></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -1,13 +1,43 @@
<?xml version="1.0" standalone="no"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg
<svg width="100%" height="100%" viewBox="0 0 260 260" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"> xmlns:dc="http://purl.org/dc/elements/1.1/"
<g> xmlns:cc="http://creativecommons.org/ns#"
<g> xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
<path d="M65.838,51.703L111.685,97.55" style="fill:rgb(255,120,61);fill-rule:nonzero;"/> xmlns:svg="http://www.w3.org/2000/svg"
<path d="M142.07,214.331C140.972,214.331 139.892,213.904 139.083,213.099L63.699,138.15C62.899,137.355 62.45,136.273 62.45,135.145L62.45,51.703C62.45,49.364 64.346,47.468 66.683,47.468C69.023,47.468 70.919,49.364 70.919,51.703L70.919,133.385L137.833,199.913L137.833,149.073C137.833,146.735 139.729,144.839 142.067,144.839C144.407,144.839 146.303,146.735 146.303,149.073L146.303,210.095C146.303,211.806 145.274,213.349 143.694,214.006C143.17,214.225 142.617,214.331 142.07,214.331Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/> xmlns="http://www.w3.org/2000/svg"
<path d="M66.684,93.206L31.109,93.206C29.423,93.206 27.897,92.208 27.225,90.662C26.552,89.115 26.862,87.317 28.01,86.085L53.506,58.723L62.738,48.816C64.333,47.105 67.013,47.009 68.724,48.604C70.435,50.199 70.529,52.878 68.935,54.59L40.844,84.736L66.684,84.736C69.024,84.736 70.92,86.632 70.92,88.972C70.92,91.311 69.023,93.206 66.684,93.206Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/> id="svg16"
<path d="M111.685,101.784C110.588,101.784 109.492,101.362 108.663,100.516L63.663,54.669C62.024,52.999 62.05,50.317 63.719,48.68C65.389,47.041 68.07,47.067 69.708,48.736L114.708,94.584C116.347,96.253 116.321,98.934 114.652,100.572C113.826,101.381 112.756,101.784 111.685,101.784Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/> style="clip-rule:evenodd;fill-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41420996"
<path d="M108.015,180.274C106.802,180.274 105.599,179.756 104.761,178.752C103.262,176.956 103.504,174.285 105.299,172.787L231.176,67.796L153.873,67.796L69.229,138.397C67.433,139.895 64.762,139.655 63.263,137.857C61.765,136.062 62.007,133.39 63.803,131.892L149.626,60.309C150.388,59.675 151.347,59.327 152.338,59.327L242.863,59.327C244.645,59.327 246.238,60.444 246.844,62.12C247.451,63.796 246.944,65.673 245.574,66.814L110.726,179.292C109.934,179.953 108.971,180.274 108.015,180.274Z" style="fill:rgb(141,153,166);fill-rule:nonzero;"/> xml:space="preserve"
</g> version="1.1"
</g> viewBox="0 0 260 260"
</svg> height="1"
width="1"><metadata
id="metadata22"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><cc:license
rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Notice" /><cc:requires
rdf:resource="http://creativecommons.org/ns#Attribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /><cc:requires
rdf:resource="http://creativecommons.org/ns#ShareAlike" /></cc:License></rdf:RDF></metadata><defs
id="defs20" /><g
id="g14"><g
id="g12"><path
id="path2"
style="fill:#ff783d;fill-rule:nonzero"
d="M 65.838,51.703 111.685,97.55" /><path
id="path4"
style="fill:#8d99a6;fill-rule:nonzero"
d="m 142.07,214.331 c -1.098,0 -2.178,-0.427 -2.987,-1.232 L 63.699,138.15 c -0.8,-0.795 -1.249,-1.877 -1.249,-3.005 V 51.703 c 0,-2.339 1.896,-4.235 4.233,-4.235 2.34,0 4.236,1.896 4.236,4.235 v 81.682 l 66.914,66.528 v -50.84 c 0,-2.338 1.896,-4.234 4.234,-4.234 2.34,0 4.236,1.896 4.236,4.234 v 61.022 c 0,1.711 -1.029,3.254 -2.609,3.911 -0.524,0.219 -1.077,0.325 -1.624,0.325 z" /><path
id="path6"
style="fill:#8d99a6;fill-rule:nonzero"
d="M 66.684,93.206 H 31.109 c -1.686,0 -3.212,-0.998 -3.884,-2.544 -0.673,-1.547 -0.363,-3.345 0.785,-4.577 l 25.496,-27.362 9.232,-9.907 c 1.595,-1.711 4.275,-1.807 5.986,-0.212 1.711,1.595 1.805,4.274 0.211,5.986 L 40.844,84.736 h 25.84 c 2.34,0 4.236,1.896 4.236,4.236 0,2.339 -1.897,4.234 -4.236,4.234 z" /><path
id="path8"
style="fill:#8d99a6;fill-rule:nonzero"
d="m 111.685,101.784 c -1.097,0 -2.193,-0.422 -3.022,-1.268 l -45,-45.847 c -1.639,-1.67 -1.613,-4.352 0.056,-5.989 1.67,-1.639 4.351,-1.613 5.989,0.056 l 45,45.848 c 1.639,1.669 1.613,4.35 -0.056,5.988 -0.826,0.809 -1.896,1.212 -2.967,1.212 z" /><path
id="path10"
style="fill:#8d99a6;fill-rule:nonzero"
d="m 108.015,180.274 c -1.213,0 -2.416,-0.518 -3.254,-1.522 -1.499,-1.796 -1.257,-4.467 0.538,-5.965 L 231.176,67.796 h -77.303 l -84.644,70.601 c -1.796,1.498 -4.467,1.258 -5.966,-0.54 -1.498,-1.795 -1.256,-4.467 0.54,-5.965 l 85.823,-71.583 c 0.762,-0.634 1.721,-0.982 2.712,-0.982 h 90.525 c 1.782,0 3.375,1.117 3.981,2.793 0.607,1.676 0.1,3.553 -1.27,4.694 L 110.726,179.292 c -0.792,0.661 -1.755,0.982 -2.711,0.982 z" /></g></g></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,191 @@
/*utilities*/
.align-items-center {
align-items: center;
}
.hide,
.hidden {
display: none;
visibility: hidden;
}
.top-zero {
margin-top: 0;
}
.bottom-zero {
margin-bottom: 0;
}
.top-spacer {
margin-top: 2.5rem;
}
.bottom-spacer {
margin-bottom: 2.5rem;
}
.top-spacer-4 {
margin-top: 4rem;
}
.bottom-spacer-4 {
margin-bottom: 4rem;
}
.gray-bg {
background-color: @light-bg;
}
.dark-bg {
background-color: @text-dark;
}
.left-aligned,
.text-left {
text-align: left;
}
.right-aligned {
text-align: right;
}
.text-center {
text-align: center;
}
.text-muted {
color: @text-muted;
}
.text-light {
color: @text-light;
}
.text-white {
color: #fff;
}
.text-normal {
font-size: 1rem;
}
.text-medium {
font-size: 1.5rem;
}
.text-small {
font-size: 0.5rem;
}
.centered {
margin-left: auto;
margin-right: auto;
}
.bold {
font-weight: bold;
}
.list-unstyled {
padding: 0;
li {
list-style: none;
}
}
.list-circle {
list-style: circle;
}
.bullet {
&::before {
content: "\2022";
display: inline-block;
width: 1em;
font-size: 1.25rem;
}
}
.half-width {
max-width: 50%;
}
.border {
border: @border;
}
.border-top {
border-top: @border;
}
.saturate {
filter: grayscale(100%);
&:hover {
filter: grayscale(0%);
}
}
/* colors */
.green-bullet {
&::before {
color: @indicator-green;
}
}
/* components */
.grid-of-four,
.grid-of-three {
grid-gap: 2.5rem;
display: grid;
}
.grid-of-four {
grid-template-columns: repeat(1, 1fr);
@media screen and (min-width: @screen-palm) {
grid-template-columns: repeat(2, 1fr);
}
@media screen and (min-width: @screen-xs) {
grid-template-columns: repeat(3, 1fr);
}
@media screen and (min-width: @screen-sm) {
grid-template-columns: repeat(4, 1fr);
}
}
.grid-of-three {
grid-template-columns: repeat(1, 1fr);
@media screen and (min-width: @screen-palm) {
grid-template-columns: repeat(2, 1fr);
}
@media screen and (min-width: @screen-xs) {
grid-template-columns: repeat(3, 1fr);
}
}
.columns {
display: flex;
justify-content: space-between;
flex-direction: column;
@media screen and (min-width: @screen-xs) {
flex-direction: row;
}
}
.column {
margin-bottom: 1rem;
@media screen and (min-width: @screen-xs) {
margin: 0;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,88 @@
@import "../../../../frappe/frappe/public/less/variables.less";
.indicator,
.indicator-right {
background: none;
font-size: 12px;
vertical-align: middle;
font-weight: bold;
color: #6c7680;
}
.indicator::before,
.indicator-right::after {
content: "";
display: inline-block;
height: 8px;
width: 8px;
border-radius: 8px;
}
.indicator::before {
margin: 0 4px 0 0;
}
.indicator-right::after {
margin: 0 0 0 4px;
}
.indicator.grey::before,
.indicator-right.grey::after {
background: @btn-bg;
}
.indicator.blue::before,
.indicator-right.blue::after {
background: @indicator-blue;
}
.indicator.red::before,
.indicator-right.red::after {
background: @indicator-red;
}
.indicator.green::before,
.indicator-right.green::after {
background: @indicator-green;
}
.indicator.orange::before,
.indicator-right.orange::after {
background: @indicator-orange;
}
.indicator.purple::before,
.indicator-right.purple::after {
background: @indicator-purple;
}
.indicator.darkgrey::before,
.indicator-right.darkgrey::after {
background: @indicator-darkgrey;
}
.indicator.black::before,
.indicator-right.black::after {
background: @text-color;
}
.indicator.yellow::before,
.indicator-right.yellow::after {
background: @indicator-yellow;
}
.indicator.light-blue::before,
.indicator-right.light-blue::after {
background: @indicator-light-blue;
}
.indicator.lightblue::before,
.indicator-right.lightblue::after {
background: @indicator-light-blue;
}
.modal-header .indicator {
float: left;
margin-top: 7.5px;
margin-right: 3px;
}

View File

@@ -0,0 +1,12 @@
@import "../../../../frappe/frappe/public/less/variables.less";
@brand-primary: #7575ff;
@screen-sm-min: 768px;
@screen-xs-max: (@screen-sm-min - 1);
@button-primary-hover: darken(desaturate(@brand-primary, 50%), 15%);
@button-secondary-hover: lighten(@light-bg, 15%);
@primary-link-color: lighten(@brand-primary, 5%);
@border: 1px solid @border-color;
@transition: 0.3s ease-out;
@screen-palm: 500px;
@dark-border-color: darken(@border-color, 60%);

View File

@@ -0,0 +1,69 @@
<!DOCTYPE html>
<!-- Built on Frappe. https://frappe.io/ -->
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %} {{ title | striptags }} {% endblock %}</title>
<meta name="generator" content="frappe">
{% block favicon %}
<link rel="shortcut icon"
href="{{ (favicon or "/assets/frappe/images/favicon.png") | abs_url }}"
type="image/x-icon">
<link rel="icon"
href="{{ (favicon or "/assets/frappe/images/favicon.png") | abs_url }}"
type="image/x-icon">
{% endblock %}
{%- block head -%}
{% block meta_block %}{% endblock %}
<link href="/assets/foundation/css/erpnext-org-theme.css" rel="stylesheet">
{% if path != '' %}
<link type="text/css" rel="stylesheet" href="/assets/frappe/css/hljs.css">
<link type="text/css" rel="stylesheet" href="/assets/frappe/css/font-awesome.css">
<link type="text/css" rel="stylesheet" href="/assets/frappe/css/octicons/octicons.css">
{% endif %}
{% if path == 'contact' %}
<link type="text/css" rel="stylesheet" href="/assets/foundation/css/bootstrap-for-webform.css">
{% endif %}
{%- endblock -%}
{%- block head_include %}{{ head_include or "" }}{% endblock -%}
{%- block style %}{%- endblock -%}
<script>
window.frappe = {};
frappe.ready_events = [];
frappe.ready = function(fn) {
frappe.ready_events.push(fn);
}
window.dev_server = {{ dev_server }};
</script>
</head>
<body data-path="{{ path }}">
<div class="wrapper">
{%- block navbar -%}{% include "templates/includes/navbar/navbar.html" %}{%- endblock -%}
{% block content %}
{{ content }}
{% endblock %}
{%- block footer -%}{% include "templates/includes/footer/footer.html" %}{%- endblock -%}
</div>
{% block base_scripts %}
<!-- js should be loaded in body! -->
<script type="text/javascript"
src="/assets/frappe/js/lib/jquery/jquery.min.js"></script>
<script type="text/javascript"
src="/assets/js/frappe-web.min.js"></script>
{% endblock %}
{%- if js_globals is defined %}
<script>
{%- for key, value in js_globals.iteritems() %}
window.{{ key }} = "{{ value[0] }}";
{%- endfor -%}
</script>
{% endif -%}
{%- for link in web_include_js %}
<script type="text/javascript" src="{{ link|abs_url }}"></script>
{%- endfor -%}
{%- block script %}{%- endblock %}
<!-- csrf_token -->
{%- block body_include %}{{ body_include or "" }}{% endblock -%}
</body>
</html>

View File

@@ -0,0 +1,8 @@
Hi {{ title }},
This is a Service Provider listing deactivation alert,
You have not login since last 80 days if you are not login in next 10 days
erpnext.org will be removed your name from a service provider listing.
Thanks,
ERPNext Foundation

View File

@@ -1,152 +0,0 @@
@import url('https://fonts.googleapis.com/css?family=Rubik');
body {
font-family: 'Rubik', sans-serif;
font-size: 15px;
color: #161c23;
text-rendering: optimizeLegibility !important;
line-height: 1.5em;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
section {
padding: 10px 0px;
}
section:last-child {
padding-bottom: 60px;
}
section p, section li, section .media-body {
font-size: 15px;
line-height: 1.6em;
}
h1 {
font-size: 32px;
}
.page_content {
min-height: 400px;
}
.conf-hero {
padding: 90px 0px;
}
.label {
font-weight: normal;
background-color: #d1d8dd;
font-size: 13px;
padding: 3px 7px;
margin-right: 10px;
}
.web-footer {
padding-top: 0px;
}
.footer-bottom-line .text-muted {
font-size: 15px;
color: #161c23 !important;
}
.row-full{
width: 100vw;
position: relative;
margin-left: -50vw;
margin-top: 0px;
left: 50%;
}
.with-border {
border: 1px solid #d1d8dd;
border-radius: 3px;
padding: 15px;
margin-bottom: 30px;
}
.with-border h3 {
margin-top: 0px;
}
a {
color: #5E64FF;
}
.clickable a {
color: #161c23;
}
.with-border.clickable:hover {
border-color: #36414C;
background-color: #fafbfc;
}
.with-border a, .with-border a:hover {
text-decoration: none;
}
.web-footer {
background-color: #fafbfc;
border-top: 4px solid #d1d8dd;
padding-bottom: 0px;
padding-top: 20px;
}
@media (max-width: 767px) {
.web-footer {
padding-left: 15px;
}
}
.footer-group-label, .navbar-brand {
color: #161c23 !important;
}
.web-footer .col-sm-6:first-child {
width: 60%;
}
.web-footer .col-sm-6:last-child {
width: 40%;
}
/*#website-post-login {
display: none !important;
}
*/
.silver-member {
padding: 0px 15px;
min-height: 205px;
}
.page-breadcrumbs .breadcrumb {
margin-bottom: 10px;
font-size: 15px;
/*color: #8D99A6;*/
}
.full-name {
display: none;
}
.sponsor {
height: 200px;
margin-top: 30px;
text-align: center;
vertical-align: center;
border: 1px solid #d1d8dd;
border-radius: 3px;
padding: 20px;
}
.sponsor .lead {
margin-top: 60px;
}
.sponsor img {
max-width: 150px;
}

View File

@@ -1,46 +0,0 @@
<ul class="list-unstyled footer-list">
<li>
<a href="/members">Memberships</a>
</li>
<li>
<a href="https://erpnext.com">ERPNext.com</a>
</li>
<li>
<a href="https://frappe.io">Frappé</a>
</li>
<li>
<a href="https://frappe.io/blog">Blog</a>
</li>
<li>
<a href="https://discuss.erpnext.com">Forum</a>
</li>
<li>
<a href="https://github.com/frappe">GitHub</a>
</li>
<li>
<a href="/about">About</a>
</li>
<li>
<a href="/contact">Contact</a>
</li>
</ul>
<div class="social">
<p>Find us on
<a class="underline" href="https://twitter.com/erpnext"
target="_blank">Twitter</a>,
<a class="underline" href="https://www.facebook.com/ERPNext/"
target="_blank">Facebook</a>,
<a class="underline" href="https://medium.com/frappé-thoughts/"
target="_blank">Medium</a>
</p>
</div>
<div class="copyright">
<p>
&copy;<span id="year"></span> ERPNext Open Source Software Foundation.
Content licensed under
<a class="underline" href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank">
CC-BY-SA 3.0</a>. Read the <a href="/terms" class="underline">terms of use</a>.
</p>
</div>

View File

@@ -0,0 +1,147 @@
<footer class="dark-bg">
<div class="footer">
<div class="container">
<div class="columns text-left clearfix">
<div class="column">
<h3 class="footer-title text-white">Industries</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="secondary-link" href="/docs/user/manual/en/manufacturing">Manufacturing</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/stock">Distribution</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/projects">Services</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/accounts/point-of-sale-pos-invoice">Retail</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/education">Education</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/healthcare">Healthcare</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/agriculture">Agriculture</a>
</li>
<li>
<a class="secondary-link" href="/docs/user/manual/en/non_profit">Non Profit</a>
</li>
</ul>
</div>
<div class="column">
<h3 class="footer-title text-white">Foundation</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="secondary-link" href="/about">About</a>
</li>
<li>
<a class="secondary-link" href="/blog">Blog</a>
</li>
<li>
<a class="secondary-link" href="/members">Memberships</a>
</li>
<li>
<a class="secondary-link" href="/foundation-fellow">Fellow</a>
</li>
<li>
<a class="secondary-link" href="/bounties">Bounties</a>
</li>
<li>
<a class="secondary-link" href="/conf">Conferences</a>
</li>
<li>
<a class="secondary-link" href="/contact">Contact</a>
</li>
<li>
<a class="secondary-link" href="/login">Member Login</a>
</li>
</ul>
</div>
<div class="column">
<h3 class="footer-title text-white">Community</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="secondary-link" href="/chapters">Chapters</a>
</li>
<li>
<a class="secondary-link" href="https://discuss.erpnext.com" target="_blank" >Forum</a>
</li>
<li>
<a class="secondary-link" href="/service-providers">Service Providers</a>
</li>
<li>
<a class="secondary-link" href="/erpnext-jobs">ERPNext Jobs</a>
</li>
<li>
<a class="secondary-link" href="/apps">Apps</a>
</li>
<li>
<a class="secondary-link" href="https://gitter.im/frappe/erpnext" target="_blank" >Chat (Gitter)</a>
</li>
<li>
<a class="secondary-link" href="https://github.com/frappe/erpnext" target="_blank" >GitHub</a>
</li>
<li>
<a class="secondary-link" href="https://erpnext.com" target="_blank" >ERPNext.com</a>
</li>
</ul>
</div>
<div class="column">
<h3 class="footer-title text-white">Documentation</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="secondary-link" href="/docs/user/manual">Manual</a>
</li>
<li>
<a class="secondary-link" href="https://www.youtube.com/c/erpnext" target="_blank" >Video Tutorials</a>
</li>
<li>
<a class="secondary-link" href="/docs/current">ERPNext Model & API</a>
</li>
</ul>
<!--<h3 class="footer-title text-white top-spacer">Localisation</h3>
<ul class="list-unstyled footer-list">
<li>
<a class="secondary-link" href="https://erpnext.com/uae-ksa-vat" target="_blank">UAE/KSA VAT</a>
</li>
<li>
<a class="secondary-link" href="https://erpnext.com/india-gst" target="_blank">GST For India</a>
</li>
</ul>-->
</div>
</div>
<div class="footer-end dark-bg text-muted">
<div class="container">
<div class="align-iten-center columns">
<div class="column">
<p><img class="footer-icon" src="/assets/foundation/img/erpnext-logo.svg" alt="ERPnext Icon">
&copy; <span id="year"></span> ERPNext Open Source Software Foundation.</p>
</div>
<div class="column">
<p>Find us on
<a class="secondary-link" href="https://twitter.com/erpnext" target="_blank">Twitter</a>,
<a class="secondary-link" href="https://www.facebook.com/ERPNext/" target="_blank">Facebook</a> &
<a class="secondary-link" href="https://medium.com/frappé-thoughts/" target="_blank">Medium</a>
</p>
</div>
<div class="column">
<p>Content licensed under <a class="secondary-link" href="https://creativecommons.org/licenses/by-sa/3.0/" target="_blank"> CC-BY-SA 3.0</a> | <a href="/terms" class="secondary-link">Terms of use</a>.
</p>
</div>
</div>
</div>
</div>
<script type="text/javascript">
frappe.ready(function(){
var d = new Date();
var currentYear = d.getFullYear();
$("#year").text(currentYear);
});
</script>
</div>
</div>
</footer>

View File

@@ -1,12 +1,12 @@
{% macro media(title, content, image, link) %} {% macro media(title, content, image, link) %}
<div class="media with-border {% if link %}clickable{% endif %}" <div class="media centered {% if link %}clickable{% endif %}"
{% if link %}style="cursor: pointer;"{% endif %} {% if link %}style="cursor: pointer;"{% endif %}
{% if link %}onclick="location.href='{{ link }}'"{% endif %}> {% if link %}onclick="location.href='{{ link }}'"{% endif %}>
<div class="media-left"> <div class="media-left">
<a href="{{ link or "#" }}"> <a href="{{ link or "#" }}">
<img class="media-object" <img class="media-object"
src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}" src="{% if image %}{% if not '/' in image %}/assets/foundation/img/{% endif %}{{ image }}{% else %}/assets/foundation/img/frappe-bird-grey.svg{% endif %}"
style="width: 64px; height: 64px; max-width: 64px; {% if image and not '/' in image %}opacity: 0.4{% endif %}"> style="{% if image and not '/' in image %}opacity: 0.4{% endif %}">
</a> </a>
</div> </div>
<div class="media-body"> <div class="media-body">

View File

@@ -0,0 +1,24 @@
<nav class="navbar navbar-default navbar-main" role="navigation">
<div class="container">
<div class="navbar-header">
<div class="left">
<a class="navbar-brand" href="{{ url_prefix }}{{ home_page or "/"}}">
<span>{{ brand_html or (frappe.get_hooks("brand_html") or ["Home"])[0] }}</span>
</a>
</div>
<div class="right">
<ul class="menu list-unstyled">
<li class="menu-items">
<a href="/service-providers" class="menu-links">Services</a>
</li>
<li class="menu-items">
<a href="/blog" class="menu-links">Blog</a>
</li>
<li class="menu-items">
<a href="/about" class="menu-links">About</a>
</li>
</ul>
</div>
</div>
</div>
</nav>

View File

@@ -1,52 +1,42 @@
<section> <section class="sponsor">
<div> <div class="grid-of-three">
<div class='row'> <div class="box text-center top-spacer" >
<div class="col-sm-4"> <a href="https://frappe.io/" class="no-decoration" target="_blank">
<div class='sponsor' style='padding-top: 20px'> <img src="/assets/foundation/img/frappe-bird-black.svg" alt="Frappe"/>
<p class='lead'>Your Company</p> </a>
</div>
</div> </div>
<div class="box text-center top-spacer" >
<div class="col-sm-4"> <a href="https://mntechnique.com/" class="no-decoration" target="_blank">
<div class='sponsor' > <img src="/assets/foundation/img/conf/sponsors/mnt-logo.png" alt="MNT"/>
<a href="https://frappe.io/" class="no-decoration" target="_blank"> </a>
<img src="/assets/foundation/img/frappe-bird-thin.png" alt="Frappé"
style="margin-top: 20px;"/>
</a>
</div>
</div> </div>
<div class="box text-center top-spacer" >
<div class="col-sm-4"> <a href="http://fogliasana.com/" class="no-decoration" target="_blank">
<div class='sponsor' > <img src="/assets/foundation/img/conf/sponsors/shs-logo.png" alt="SHS"/>
<a href="https://mntechnique.com/" class="no-decoration" target="_blank"> </a>
<img src="/assets/foundation/img/conf/mnt-logo.png" alt="Frappé" </div>
style="margin-top: 20px;"/> <div class="box text-center top-spacer" >
</a> <a href="https://www.cloude8.com/" class="no-decoration" target="_blank">
</div> <img src="/assets/foundation/img/conf/sponsors/cloude8.png" alt="Cloude8"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="https://digithinkit.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/digithinkit.png" alt="DigiThinkIT"/>
</a>
</div>
<div class="box text-center top-spacer" >
<a href="http://www.indictranstech.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/sponsors/indictrans.png">
</div> </div>
</div> </div>
<div class='row'>
<div class="col-sm-4">
<div class='sponsor' >
<a href="https://fogliasana.com/" class="no-decoration" target="_blank">
<img src="/assets/foundation/img/conf/shs-logo.png" alt="Frappé"
style="margin-top: 20px;"/>
</a>
</div>
</div>
</div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div style="margin-top: 40px;"> <div style="margin-top: 40px;">
<p>Become a patron for the conference and get associated with a global community<br> <p>Become a patron for the conference and get associated with a global community<br>
of tens of thousands of users and developers. Sponsors also get 5 complimentary passes for the full conference!</p> of tens of thousands of users and developers. Sponsors also get 5 complimentary passes for the full conference!</p>
<a href="mailto:foundation@erpnext.org" class="btn btn-primary">Become A Sponsor</a> <a href="mailto:foundation@erpnext.org" style="color:white" class="btn btn-primary disabled">Become A Sponsor</a>
</div> </div>
</div> </div>
</div> </div>
</section>
</div>
</section>

Some files were not shown because too many files have changed in this diff Show More