text:
<file_sep># ReadArticle
Nice article reading experience

branch_name: refs/heads/main

repo_language: Markdown


text:
<repo_name>saeedghx68/govarab<file_sep>/govarab/myapp/migrations/0003_auto_20170602_2325.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-02 18:55
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0002_auto_20170602_2318'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='catalog',
            name='title',
        ),
        migrations.AlterField(
            model_name='catalog',
            name='file',
            field=models.FileField(upload_to=b'catalog/', verbose_name='file'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0008_auto_20170609_1414.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-09 09:44
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0007_articles'),
    ]

    operations = [
        migrations.AlterModelOptions(
            name='articles',
            options={'ordering': ['created_at'], 'verbose_name': 'article', 'verbose_name_plural': 'articles'},
        ),
        migrations.RenameField(
            model_name='articles',
            old_name='updated_at',
            new_name='created_at',
        ),
        migrations.AddField(
            model_name='articles',
            name='text_ar',
            field=models.TextField(null=True, verbose_name='\u0645\u062a\u0646'),
        ),
        migrations.AddField(
            model_name='articles',
            name='text_en',
            field=models.TextField(null=True, verbose_name='\u0645\u062a\u0646'),
        ),
        migrations.AddField(
            model_name='articles',
            name='text_fa',
            field=models.TextField(null=True, verbose_name='\u0645\u062a\u0646'),
        ),
        migrations.AddField(
            model_name='articles',
            name='title_ar',
            field=models.CharField(default=b'', max_length=100, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AddField(
            model_name='articles',
            name='title_en',
            field=models.CharField(default=b'', max_length=100, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AddField(
            model_name='articles',
            name='title_fa',
            field=models.CharField(default=b'', max_length=100, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0002_auto_20170602_2318.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-02 18:48
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Catalog',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(default=b'', max_length=100, verbose_name='\u0639\u0646\u0648\u0627\u0646')),
                ('file', models.FileField(upload_to=b'catalog/', verbose_name='\u0641\u0627\u06cc\u0644')),
            ],
            options={
                'verbose_name': 'catalog',
                'verbose_name_plural': 'catalog',
            },
        ),
        migrations.AlterField(
            model_name='product',
            name='big_img',
            field=models.ImageField(default=b'images/products/defaults.jpg', upload_to=b'images/products/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u0628\u0632\u0631\u06af'),
        ),
        migrations.AlterField(
            model_name='product',
            name='small_img',
            field=models.ImageField(default=b'images/products/defaults.jpg', help_text=b'size(500px * 334px)', upload_to=b'images/products/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648\u0686\u06a9'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0010_auto_20170609_1807.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-09 13:37
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0009_auto_20170609_1417'),
    ]

    operations = [
        migrations.AlterModelOptions(
            name='productimage',
            options={'ordering': ['created_at'], 'verbose_name': '\u062a\u0635\u0648\u06cc\u0631 \u0645\u062d\u0635\u0648\u0644', 'verbose_name_plural': '\u062a\u0635\u0648\u06cc\u0631 \u0645\u062d\u0635\u0648\u0644'},
        ),
        migrations.AlterModelOptions(
            name='slidesimages',
            options={'verbose_name': '\u062a\u0635\u0648\u06cc\u0631 \u0628\u0632\u0631\u06af', 'verbose_name_plural': 'Slides Images'},
        ),
        migrations.AddField(
            model_name='team',
            name='email',
            field=models.EmailField(default='', max_length=254, verbose_name='email'),
            preserve_default=False,
        ),
        migrations.AddField(
            model_name='team',
            name='file',
            field=models.FileField(default='', upload_to=b'resume/', verbose_name='CV'),
            preserve_default=False,
        ),
        migrations.AlterField(
            model_name='productimage',
            name='product',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='myapp.Product', verbose_name='\u0645\u062d\u0635\u0648\u0644'),
        ),
    ]
<file_sep>/govarab/config/urls.py
"""govarab URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/1.10/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  url(r'^$', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  url(r'^$', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.conf.urls import url, include
    2. Add a URL to urlpatterns:  url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url, include
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from myapp.views import *

urlpatterns = [
    # it will enable the set language redirect view
    url(r'^i18n/', include('django.conf.urls.i18n')),
]

urlpatterns += i18n_patterns(
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', home, name='home'),
    url(r'^product-details/(?P<product_id>\w+)/$', product_details, name='product_details'),
    url(r'^articles/$', articles, name='articles'),
    url(r'^articles/(?P<article_id>\w+)/$', article_single, name='article_single'),
)
<file_sep>/README.md
# Django Govarab website
## Installation

Desc
```python
pip install virtualenv
virualenv env
```

And then execute:

```python
source env/bin/activate
cd govarab
pip install -r req.txt
django manage.py runserver
```
<file_sep>/govarab/myapp/migrations/0013_auto_20170610_2322.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-10 18:52
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0012_dealership'),
    ]

    operations = [
        migrations.AlterModelOptions(
            name='article',
            options={'ordering': ['created_at'], 'verbose_name': '\u0645\u0642\u0627\u0644\u0647', 'verbose_name_plural': '\u0645\u0642\u0627\u0644\u0627\u062a'},
        ),
        migrations.AlterModelOptions(
            name='dealership',
            options={'ordering': ['name'], 'verbose_name': '\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc', 'verbose_name_plural': '\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0647\u0627'},
        ),
        migrations.AlterField(
            model_name='article',
            name='link',
            field=models.URLField(verbose_name='\u0644\u06cc\u0646\u06a9 \u0645\u0646\u0628\u0639'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='address',
            field=models.CharField(max_length=300, verbose_name='\u0622\u062f\u0631\u0633'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='address_ar',
            field=models.CharField(max_length=300, null=True, verbose_name='\u0622\u062f\u0631\u0633'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='address_en',
            field=models.CharField(max_length=300, null=True, verbose_name='\u0622\u062f\u0631\u0633'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='address_fa',
            field=models.CharField(max_length=300, null=True, verbose_name='\u0622\u062f\u0631\u0633'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='tel',
            field=models.CharField(max_length=14, verbose_name='\u062a\u0644\u0641\u0646'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='type',
            field=models.CharField(choices=[('\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0641\u0631\u0648\u0634', '\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0641\u0631\u0648\u0634'), ('\u0639\u0627\u0645\u0644\u06cc\u0646 \u0641\u0631\u0648\u0634', '\u0639\u0627\u0645\u0644\u06cc\u0646 \u0641\u0631\u0648\u0634')], max_length=30, verbose_name='\u0646\u0648\u0639'),
        ),
        migrations.AlterField(
            model_name='team',
            name='email',
            field=models.EmailField(max_length=254, verbose_name='\u0627\u06cc\u0645\u06cc\u0644'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0005_slidesimages.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-09 08:21
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0004_auto_20170602_2334'),
    ]

    operations = [
        migrations.CreateModel(
            name='SlidesImages',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('img', models.ImageField(default=b'images/slides/defaults.jpg', upload_to=b'images/slides/', verbose_name='\u0639\u06a9\u0633')),
            ],
            options={
                'verbose_name': 'SlidesImages',
                'verbose_name_plural': 'SlidesImages',
            },
        ),
    ]
<file_sep>/govarab/myapp/migrations/0001_initial.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-02 15:46
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion

class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='FAQ',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('question', models.TextField(verbose_name='\u067e\u0631\u0633\u0634')),
                ('question_fa', models.TextField(null=True, verbose_name='\u067e\u0631\u0633\u0634')),
                ('question_ar', models.TextField(null=True, verbose_name='\u067e\u0631\u0633\u0634')),
                ('question_en', models.TextField(null=True, verbose_name='\u067e\u0631\u0633\u0634')),
                ('answer', models.TextField(verbose_name='\u067e\u0627\u0633\u062e')),
                ('answer_fa', models.TextField(null=True, verbose_name='\u067e\u0627\u0633\u062e')),
                ('answer_ar', models.TextField(null=True, verbose_name='\u067e\u0627\u0633\u062e')),
                ('answer_en', models.TextField(null=True, verbose_name='\u067e\u0627\u0633\u062e')),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'ordering': ['updated_at'],
                'verbose_name': '\u0633\u0624\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644',
                'verbose_name_plural': '\u0633\u0624\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644',
            },
        ),
        migrations.CreateModel(
            name='Gallery',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('small_img', models.ImageField(default=b'images/gallery/defaults.jpg', upload_to=b'images/gallery/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648\u0686\u06a9')),
                ('large_img', models.ImageField(default=b'images/gallery/defaults.jpg', upload_to=b'images/gallery/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u0628\u0632\u0631\u06af')),
                ('alt', models.CharField(default=b'', max_length=100, verbose_name='\u0639\u0646\u0648\u0627\u0646')),
                ('alt_fa', models.CharField(default=b'', max_length=100, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646')),
                ('alt_ar', models.CharField(default=b'', max_length=100, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646')),
                ('alt_en', models.CharField(default=b'', max_length=100, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'ordering': ['created_at'],
                'verbose_name': '\u06af\u0627\u0644\u0631\u06cc',
                'verbose_name_plural': '\u06af\u0627\u0644\u0631\u06cc',
            },
        ),
        migrations.CreateModel(
            name='Product',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, verbose_name='\u0646\u0627\u0645 \u0645\u062d\u0635\u0648\u0644')),
                ('name_fa', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645 \u0645\u062d\u0635\u0648\u0644')),
                ('name_ar', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645 \u0645\u062d\u0635\u0648\u0644')),
                ('name_en', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645 \u0645\u062d\u0635\u0648\u0644')),
                ('small_img', models.ImageField(default=b'images/products/defaults.jpg', help_text=b'size(370px * 294px)', upload_to=b'images/products/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648\u0686\u06a9')),
                ('big_img', models.ImageField(default=b'images/products/defaults.jpg', help_text=b'size(570px * 453px)', upload_to=b'images/products/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u0628\u0632\u0631\u06af')),
                ('description', models.TextField(default=b'', verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('description_fa', models.TextField(default=b'', null=True, verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('description_ar', models.TextField(default=b'', null=True, verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('description_en', models.TextField(default=b'', null=True, verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'verbose_name': '\u0645\u062d\u0635\u0648\u0644',
                'verbose_name_plural': '\u0645\u062d\u0635\u0648\u0644\u0627\u062a',
            },
        ),
        migrations.CreateModel(
            name='ProductCategory',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, verbose_name='\u0646\u0627\u0645 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc')),
                ('name_fa', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc')),
                ('name_ar', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc')),
                ('name_en', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645 \u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc')),
            ],
            options={
                'verbose_name': '\u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u062d\u0635\u0648\u0644\u0627\u062a',
                'verbose_name_plural': '\u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u062d\u0635\u0648\u0644\u0627\u062a',
            },
        ),
        migrations.CreateModel(
            name='Slogan',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('text', models.CharField(max_length=1200, verbose_name='\u0645\u062a\u0646')),
                ('text_fa', models.CharField(max_length=1200, null=True, verbose_name='\u0645\u062a\u0646')),
                ('text_ar', models.CharField(max_length=1200, null=True, verbose_name='\u0645\u062a\u0646')),
                ('text_en', models.CharField(max_length=1200, null=True, verbose_name='\u0645\u062a\u0646')),
                ('priority', models.IntegerField(verbose_name='\u062a\u0631\u062a\u06cc\u0628 \u0686\u06cc\u062f\u0645\u0627\u0646')),
            ],
            options={
                'verbose_name': '\u0634\u0639\u0627\u0631 \u062a\u0628\u0644\u06cc\u063a\u0627\u062a\u06cc',
                'verbose_name_plural': '\u0634\u0639\u0627\u0631 \u062a\u0628\u0644\u06cc\u063a\u0627\u062a\u06cc',
            },
        ),
        migrations.CreateModel(
            name='Team',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=500, verbose_name='\u0646\u0627\u0645')),
                ('name_fa', models.CharField(max_length=500, null=True, verbose_name='\u0646\u0627\u0645')),
                ('name_ar', models.CharField(max_length=500, null=True, verbose_name='\u0646\u0627\u0645')),
                ('name_en', models.CharField(max_length=500, null=True, verbose_name='\u0646\u0627\u0645')),
                ('post', models.CharField(default=b'', max_length=500, verbose_name='\u0633\u0645\u062a')),
                ('post_fa', models.CharField(default=b'', max_length=500, null=True, verbose_name='\u0633\u0645\u062a')),
                ('post_ar', models.CharField(default=b'', max_length=500, null=True, verbose_name='\u0633\u0645\u062a')),
                ('post_en', models.CharField(default=b'', max_length=500, null=True, verbose_name='\u0633\u0645\u062a')),
                ('image', models.ImageField(blank=True, help_text=b'size(260*311)', null=True, upload_to=b'images/team/', verbose_name='\u0639\u06a9\u0633')),
                ('priority', models.IntegerField(default=1, verbose_name='\u062a\u0631\u062a\u06cc\u0628 \u0686\u06cc\u062f\u0645\u0627\u0646')),
            ],
            options={
                'verbose_name': '\u062a\u06cc\u0645 \u0641\u0646\u06cc',
                'verbose_name_plural': '\u062a\u06cc\u0645 \u0641\u0646\u06cc',
            },
        ),
        migrations.AddField(
            model_name='product',
            name='category',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='productCat', to='myapp.ProductCategory', verbose_name='\u062f\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0645\u062d\u0635\u0648\u0644'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0004_auto_20170602_2334.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-02 19:04
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0003_auto_20170602_2325'),
    ]

    operations = [
        migrations.AlterModelOptions(
            name='catalog',
            options={'verbose_name': '\u06a9\u0627\u062a\u0627\u0644\u0648\u06af', 'verbose_name_plural': '\u06a9\u0627\u062a\u0627\u0644\u0648\u06af'},
        ),
        migrations.AddField(
            model_name='catalog',
            name='title',
            field=models.CharField(default=b'', max_length=100, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AlterField(
            model_name='catalog',
            name='file',
            field=models.FileField(upload_to=b'catalog/', verbose_name='\u0641\u0627\u06cc\u0644'),
        ),
    ]
<file_sep>/govarab/myapp/models.py
# -*- coding: utf-8 -*-
from django.db import models
from django.utils.translation import ugettext_lazy as _

# from easymode.i18n.decorators import I18n

class Gallery(models.Model):
    small_img = models.ImageField(default='images/gallery/defaults.jpg', upload_to='images/gallery/',
                                  verbose_name=_('small image'))
    large_img = models.ImageField(default='images/gallery/defaults.jpg', upload_to='images/gallery/',
                                  verbose_name=_('large image'))
    alt = models.CharField(default='', max_length=100, verbose_name=_('title'))
    created_at = models.DateTimeField(auto_now_add=True)

    def as_json(self):
        return {
            'id': self.id - 1,
            'imgs': str(self.small_img),
            'imgl': str(self.large_img),
            'alt': self.alt,
        }

    def __unicode__(self):
        return self.alt

    class Meta:
        ordering = ['created_at']
        verbose_name = _('Gallery')
        verbose_name_plural = _('Gallery')

# #*****************End of gallery model********************

class SlidesImages(models.Model):
    img = models.ImageField(default='images/slides/defaults.jpg', upload_to='images/slides/',
                                  verbose_name=_('image'))

    def __unicode__(self):
        return str(self.img)

    class Meta:
        verbose_name = _('Slides image')
        verbose_name_plural = _('Slides Images')

# #*****************End of gallery model********************

class ProductCategory(models.Model):
    name = models.CharField(max_length=100, verbose_name=_('category name'))

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name = _('Product Category')
        verbose_name_plural = _('Product Category')

# #******************End of Product Category ********************

class Product(models.Model):
    name = models.CharField(max_length=100, verbose_name=_('product name'))
    category = models.ForeignKey(ProductCategory, verbose_name=_('product category'), related_name='productCat')
    description = models.TextField(verbose_name=_('description'), default="")
    updated_at = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name = _('Product')
        verbose_name_plural = _('Products')

# #******************End of Product ********************

class ProductImage(models.Model):
    product = models.ForeignKey(Product, verbose_name=_('product'), related_name='images')
    small_img = models.ImageField(upload_to='images/products/', verbose_name=_('small image'),
                                  help_text='size(500px * 334px)', default='images/products/defaults.jpg')
    big_img = models.ImageField(upload_to='images/products/', verbose_name=_('large image'),
                                default='images/products/defaults.jpg')
    created_at = models.DateTimeField(auto_now_add=True)

    def __unicode__(self):
        return self.product.name

    class Meta:
        ordering = ['created_at']
        verbose_name = _('Product Image')
        verbose_name_plural = _('Products Images')
# #******************End of Product ********************

class FAQ(models.Model):
    question = models.TextField(verbose_name=_('question'))
    answer = models.TextField(verbose_name=_('answer'))
    updated_at = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.question

    class Meta:
        ordering = ['updated_at']
        verbose_name = _('FAQ')
        verbose_name_plural = _('FAQs')

# #******************End of Product Category ********************

# @I18n('post')
class Team(models.Model):
    name = models.CharField(max_length=500, verbose_name=_('name'))
    post = models.CharField(max_length=500, verbose_name=_('post'), default="")
    file = models.FileField(upload_to='resume/', max_length=100, verbose_name=_('CV'))
    email = models.EmailField(verbose_name=_('email'))
    image = models.ImageField(blank=True, null=True, upload_to='images/team/', verbose_name=_('image'),
                              help_text='size(260*311)')
    priority = models.IntegerField(default=1, verbose_name=_('priority'))

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name = _('Team')
        verbose_name_plural = _('Team')

# #******************End of Product Category ********************
class Slogan(models.Model):
    text = models.CharField(max_length=1200, verbose_name=_('text'))
    priority = models.IntegerField(verbose_name=_('priority'))

    def __unicode__(self):
        return self.text

    class Meta:
        verbose_name = _('Slogan')
        verbose_name_plural = _('Slogan')

# ******************End of Product Category ********************

class Catalog(models.Model):
    title = models.CharField(default='', max_length=100, verbose_name=_('title'))
    file = models.FileField(upload_to='catalog/', max_length=100, verbose_name=_('file'))

    def __unicode__(self):
        return self.title

    class Meta:
        verbose_name = _('catalog')
        verbose_name_plural = _('catalog')
# ******************End of catalog ********************

class Article(models.Model):
    title = models.CharField(default='', max_length=300, verbose_name=_('title'))
    text = models.TextField(verbose_name=_('text'))
    image = models.ImageField(blank=True, null=True, upload_to='images/articles/', verbose_name=_('image'))
    link = models.URLField(verbose_name=_('Reference link'))
    reference_title = models.CharField(default='', max_length=300, verbose_name=_('Reference title'))
    created_at = models.DateTimeField(auto_now=True)

    def __unicode__(self):
        return self.title

    class Meta:
        ordering = ['created_at']
        verbose_name = _('article')
        verbose_name_plural = _('articles')
# ******************End of articles ********************

class Dealership(models.Model):
    TYPE = (
        ('1', _('Resellers')),
        ('2', _('Representatives')),
    )
    name = models.CharField(max_length=100, verbose_name=_('name'))
    tel = models.CharField(max_length=14, verbose_name=_('phone'))
    address = models.CharField(max_length=300, verbose_name=_('address'))
    lat = models.FloatField(_('Latitude'), blank=True, null=True)
    lon = models.FloatField(_('Longitude'), blank=True, null=True)
    description = models.TextField(verbose_name=_('description'))
    type = models.CharField(max_length=30, choices=TYPE, verbose_name=_('type'))

    def __unicode__(self):
        return self.name

    class Meta:
        ordering = ['name']
        verbose_name = _('dealership')
        verbose_name_plural = _('dealerships')
# ******************End of dealership ********************
<file_sep>/govarab/static/js/tabs/sky-tabs-ie8.js
$(function()
{
	$('.sky-tabs > input:checked').each(function()
	{
		$(this).next().addClass('active');
		$(this).siblings('ul').find('.' + $(this).attr('class')).show();
	});

	$('.sky-tabs > label').on('click', function()
	{
		$(this).addClass('active').siblings().removeClass('active');
		$(this).siblings('ul').find('.' + $(this).prev().attr('class')).show().siblings().hide();
	});
});

/* share URL: http://www.20script.ir */<file_sep>/govarab/myapp/migrations/0006_auto_20170609_1309.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-09 08:39
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0005_slidesimages'),
    ]

    operations = [
        migrations.CreateModel(
            name='ProductImage',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('small_img', models.ImageField(default=b'images/products/defaults.jpg', help_text=b'size(500px * 334px)', upload_to=b'images/products/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u06a9\u0648\u0686\u06a9')),
                ('big_img', models.ImageField(default=b'images/products/defaults.jpg', upload_to=b'images/products/', verbose_name='\u062a\u0635\u0648\u06cc\u0631 \u0628\u0632\u0631\u06af')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
            ],
            options={
                'ordering': ['created_at'],
                'verbose_name': 'Product Image',
                'verbose_name_plural': 'Products Images',
            },
        ),
        migrations.AlterModelOptions(
            name='slidesimages',
            options={'verbose_name': 'Slides image', 'verbose_name_plural': 'Slides Images'},
        ),
        migrations.RemoveField(
            model_name='product',
            name='big_img',
        ),
        migrations.RemoveField(
            model_name='product',
            name='small_img',
        ),
        migrations.AddField(
            model_name='productimage',
            name='product',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='myapp.Product', verbose_name='product'),
        ),
    ]
<file_sep>/govarab/static/js/custom.js

/*-----------------------------------
 Quick Mobile Detection
 -----------------------------------*/

 var isMobile = {
    Android: function() {
      "use strict";
      return navigator.userAgent.match(/Android/i);
    },
    BlackBerry: function() {
      "use strict";
      return navigator.userAgent.match(/BlackBerry/i);
    },
    iOS: function() {
      "use strict";
      return navigator.userAgent.match(/iPhone|iPad|iPod/i);
    },
    Opera: function() {
      "use strict";
      return navigator.userAgent.match(/Opera Mini/i);
    },
    Windows: function() {
      "use strict";
      return navigator.userAgent.match(/IEMobile/i);
    },
    any: function() {
      "use strict";
      return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows());
    }
};

/*-----------------------------------
 Page PreLoader
 -----------------------------------*/

$(window).load(function() {
  "use strict";
  $(".loader").delay(800).fadeOut();
  $("#preloader").delay(1200).fadeOut("slow");
});

 /*-----------------------------------
 Home Section Text Slider
 -----------------------------------*/

 $(window).load(function(){
  "use strict";
  $('.header-text').flexslider({
  animation: "slide",
	selector: ".text-slider .text-slides",
  slideshowSpeed: 5000,
	controlNav: false,
	directionNav: false ,
	direction: "vertical",
      start: function(slider){
       $('body').removeClass('loader');
      }
  });
 });

 /*-----------------------------------
 Full Screen Home Section Slider
 -----------------------------------*/

$(window).load(function(){
  "use strict";
  $('#slides').superslides({
    animation: 'fade',
    play: 7000,
    animation_speed: 3000
  });
});

/*-----------------------------------
Slow Zoom Header Image
-----------------------------------*/

$(window).load(function(){
  "use strict";
  $(".zoom-container").find('img').addClass("zoom-in"); // add class
  var tid = setTimeout(zoomLoop, 90000); // set timer

  function zoomLoop() {
    "use strict";
    $(".zoom-container img").fadeOut(2000, function() { // fade out
      $(".zoom-container").find('img').removeClass("zoom-in");
    });
    $(".zoom-container img").fadeIn(1500, function() { // fade in
      $(".zoom-container").find('img').addClass("zoom-in");
    });
    tid = setTimeout(zoomLoop, 90000); // reset timer
  }
});

/*-----------------------------------
Full Screen Headers
 -----------------------------------*/

$(function(){
"use strict";
  $('.alt-header').css({'height':($(window).height())+'px'});
  $(window).resize(function(){
    $('.alt-header').css({'height':($(window).height())+'px'});
  });
});

/*-----------------------------------
Navigation Scroll Page
-----------------------------------*/

$(function() {
  "use strict";
  $('.scroll').bind('click', function(event) {
    var $anchor = $(this);
    var headerH = $('#navigation').outerHeight();
    $('html, body').stop().animate({
      scrollTop : $($anchor.attr('href')).offset().top - headerH + "px"
    }, 1200, 'easeInOutExpo');

    event.preventDefault();
  });
});

/*-----------------------------------
Menu for mobile devices
-----------------------------------*/

$('.mobile-nav-button').click(function() {
  "use strict";
  $(".nav-menu").slideToggle("8000");
 });
$('.nav a').click(function () {
  "use strict";
  if ($(window).width() < 960) {
      $(".nav-menu").slideToggle("2000")}
});

/*-----------------------------------
Slider for Testimonials
-----------------------------------*/

$(window).load(function(){
  "use strict";
  $('.container').flexslider({
  animation: "fade",
  selector: ".testimonial-slider .t-slide",
  controlNav: false,
  directionNav: true ,
  slideshowSpeed: 8000
    });
});

/*-----------------------------------
Parallax Sections (disabled on mobile)
-----------------------------------*/

$(document).ready(function(){
  "use strict";
  if(!isMobile.any()) {
    $('.parallax1').parallax("50%", 0.5);
    $('.parallax2').parallax("50%", 0.5);
    $('.parallax3').parallax("50%", 0.5);
    $('.parallax4').parallax("50%", 0.5);
    $('.parallax5').parallax("50%", 0.5);
    $('.parallax6').parallax("50%", 0.5);
  }
});

/*-----------------------------------
Fit Videos
-----------------------------------*/

$(window).load(function(){
  "use strict";
  $(".fit-vids").fitVids();
 });

/*-----------------------------------
Isotope Portfolio
-----------------------------------*/

$(window).load(function() {
  "use strict";

  var $container = $('.portfolio-items');

  $container.isotope({
    resizable: false,
    itemSelector : '.item'
  });

  var $optionSets = $('#options .option-set'),
      $optionLinks = $optionSets.find('a');

  $optionLinks.click(function(){
    var $this = $(this);
    if ( $this.hasClass('selected') ) {
      return false;
    }
    var $optionSet = $this.parents('.option-set');
    $optionSet.find('.selected').removeClass('selected');
    $this.addClass('selected');

    var options = {},
        key = $optionSet.attr('data-option-key'),
        value = $this.attr('data-option-value');
    value = value === 'false' ? false : value;
    options[ key ] = value;
    if ( key === 'layoutMode' && typeof changeLayoutMode === 'function' ) {
      changeLayoutMode( $this, options )
    } else {
      $container.isotope( options );
    }
    return false;
  });

  // Project Expander
  var loader = $('.item-expander');

  $('.expander').on('click', function(e){
    e.preventDefault();
    e.stopPropagation();
    var url = $(this).attr('href');

    loader.slideUp(function(){
      $.get(url, function(data){
        var portfolioContainer = $('#portfolio-container');
        var topPosition = portfolioContainer.offset().top;
        var bottomPosition = topPosition + portfolioContainer.height();
        $('html,body').delay(600).animate({ scrollTop: topPosition }, 800);
        var container = $('#item-expander>div', loader);

        container.html(data);
         $(".fit-vids").fitVids();
        $('.project').flexslider({
              animation: "fade",
          selector: ".project-slides .slide",
          controlNav: true,
          directionNav: true ,
          slideshowSpeed: 5000,
            });

      //   container.fitVids();
        loader.slideDown(function(){
          if(typeof keepVideoRatio == 'function'){
            keepVideoRatio('.project-video > iframe');
          }
        }).delay(1000).animate({opacity:1}, 200);
      });
    });
  });

    $('.close', loader).on('click', function(){
      loader.delay(300).slideUp(function(){
        var container = $('#item-expander>div', loader);
        container.html('');
        $(this).css({opacity:0});

      });
      var portfolioContainer = $('#portfolio-container');
        var topPosition = portfolioContainer.offset().top;
        $('html,body').delay(0).animate({ scrollTop: bottomPosition - 50}, 500);
    });

});

/*-----------------------------------
PrettyPhoto
-----------------------------------*/

$(document).ready(function(){
  "use strict";
    $("a[data-rel^='prettyPhoto']").prettyPhoto({
        deeplinking: false,
        social_tools: false
    });
  });

/*-----------------------------------
Animated Elements
-----------------------------------*/

$(document).ready(function($) {
  "use strict";
  $('.animated').appear(function() {
      var elem = $(this);
      var animate = elem.data('animate');
      if ( !elem.hasClass('visible') ) {
        var animateDelay = elem.data('animate-delay');
          if ( animateDelay ) {
              setTimeout(function(){
                  elem.addClass( animate + " visible" );
              }, animateDelay);
          } else {
              elem.addClass( animate + " visible" );
          }
      }
  });
});

/*-----------------------------------
Counter
-----------------------------------*/

$(function() {
  "use strict";
  $(".count").appear(function(){
  $('.count').each(function(){
      var count = $(this).attr('data-to');
  $(this).find('.count-number').delay(6000).countTo({
        from: 50,
        to: count,
        speed: 3000,
        refreshInterval: 50,
      });
    });
  });
});

/*-----------------------------------
Tooltips
-----------------------------------*/

$(document).ready(function() {
  "use strict";
  $(".tipped").tipper({
    direction: "top"
  });
});

/*-----------------------------------
Accordion
-----------------------------------*/

$(document).ready(function() {
  "use strict";

  //Accordion button
  $('div.accordion-button').click(function() {
    $('div.accordion-content').slideUp('normal');
    if ( $('div.accordion-button i').hasClass('fa-arrow-circle-o-down') ) {
      $('div.accordion-button i').removeClass('fa-arrow-circle-o-down').addClass('fa-arrow-circle-o-right');
    }
    $(this).find('i').toggleClass('fa-arrow-circle-o-right').toggleClass('fa-arrow-circle-o-down');
    $(this).next().slideDown('normal');

  });

  //initial state
  $("div.accordion-content").hide();
  $('div.accordion-content.active').slideDown('normal');

});

/*-----------------------------------
Skill Bar
-----------------------------------*/

$(document).ready(function(){
  "use strict";
  $('.skillbar').appear(function() {
    $(this).find('.skillbar-bar').animate({
      width:$(this).attr('data-percent')
    },3000);
  });
});

/*-----------------------------------
Close Button for Alert Boxes
-----------------------------------*/

$('.close-alert').click(
  function(){
    "use strict";
    $(this).closest('.alert').fadeOut(1000);
  });

/*-----------------------------------
Contact Form
-----------------------------------*/

$(document).ready(function ($) {
  "use strict";

  $('#submit').click(function(){

    $('.error').hide();

    var name = $('input#name').val();
    var email = $('input#email').val();
    var phone = $('input#phone').val();
    var email_compare = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; // compare to email input
    var phone_compare = /^[0-9-+]+$/; // compare to phone input

    if (name == "" || name == " ") {
      $('#error-name').fadeIn('slow');
      return false;

    } else if (email == "" || email == " ") {
      $('#error-email').fadeIn('slow');
      return false;

    } else if (!email_compare.test(email)) {
      $('#error-valid-email').fadeIn('slow');
      return false;

    } else if (!phone_compare.test(phone)) {
      $('#error-valid-phone').fadeIn('slow');
      return false;
    }

    var data_string = $('#contact-us').serialize();

    $.ajax({
      type: "POST",
      url: $('#contact-us').attr('action'),
      data: data_string,
      timeout: 6000,
      error: function(request,error) {
        if (error == "timeout") {
          $('#error-timedout').slideDown('slow');
        }
        else {
          $('#error-state').slideDown('slow');
        }
      },
      success: function() {
        $('#email-success').slideDown('slow');
        $("#contact-us").trigger('reset');
      }
    });

    return false;
  });
});

$(document).ready(function() {
    if($('#question').outerHeight() >= 400) {
        $('.accordion').addClass('importantRule');
    }
});

 /*-----------------------------------
Google Map
----------------------------------

$(document).ready(function() {
  "use strict";

  // Map Coordinates
  var latlng = new google.maps.LatLng(30.307992, -97.752033);

  // Map Options
  var myOptions = {
    zoom: 15,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    disableDefaultUI: true,
    scrollwheel: false,
  };

  var map = new google.maps.Map(document.getElementById('google-map'), myOptions);

  // Marker Image
  var image = 'images/marker.png';

  //  Start Marker
  var myLatlng = new google.maps.LatLng(34.918398, 50.821748);

  // Marker Text
   var contentString = '<div id="map-tooltip"><h5>Our Office Location</h5><p>Come see us!</p></div>';

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: 'Hello World!',
      icon: image
    });

  var infowindow = new google.maps.InfoWindow({
    content: contentString
    });

   google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
    });

   // End Marker

})
*/
<file_sep>/govarab/myapp/views.py
# coding=utf-8
from django.shortcuts import render, render_to_response
from django.utils.translation import ugettext_lazy as _
from config import settings
from myapp.models import *
from django.utils import translation
user_language = 'fa'
translation.activate(user_language)

def home(request):
    request.session[translation.LANGUAGE_SESSION_KEY] = user_language
    c = {}
    c['LANGUAGES'] = settings.LANGUAGES
    c['SELECTEDLANG'] = request.LANGUAGE_CODE
    try:
        c['slidesImages'] = SlidesImages.objects.all()
        c['productCategory'] = ProductCategory.objects.all()
        c['products'] = Product.objects.all()
        c['FAQs'] = FAQ.objects.all()
        c['gallery'] = Gallery.objects.all()
        c['articles'] = Article.objects.all()[0:3]
        c['team'] = Team.objects.all()
        c['slogan'] = Slogan.objects.all().order_by('priority')
        c['resellers'] = Dealership.objects.filter(type='1')
        c['representatives'] = Dealership.objects.filter(type='2')
        c['catalog'] = Catalog.objects.all()[0]
    except:
        print (u'داده ها وارد نشده!')
    return render_to_response('index.html', c)

def product_details(request, product_id):
    request.session[translation.LANGUAGE_SESSION_KEY] = user_language
    c = {}
    c['LANGUAGES'] = settings.LANGUAGES
    c['SELECTEDLANG'] = request.LANGUAGE_CODE
    try:
        c['product'] = Product.objects.get(pk=product_id)
    except Exception as e:
        print e
        c['product'] = u'محصولی با این id وجود ندارد!'
    try:
        c['products'] = Product.objects.all()
    except:
        c['products'] = u'محصولی وارد نشده!'
    try:
        c['productCategory'] = ProductCategory.objects.all()
    except:
        c['productCategory'] = u'دسته بندی وجود ندارد!'
    try:
        c['catalog'] = Catalog.objects.all()[0]
    except:
        c['catalog'] = u'کاتالوگ اضافه نشده'

    return render_to_response('product_details.html', c)

def article_single(request, article_id):
    request.session[translation.LANGUAGE_SESSION_KEY] = user_language
    c = {}
    c['LANGUAGES'] = settings.LANGUAGES
    c['SELECTEDLANG'] = request.LANGUAGE_CODE
    try:
        c['article'] = Article.objects.get(pk=article_id)
    except Exception as e:
        print e
        c['article'] = u'مقاله ای با این id وجود ندارد!'
    try:
        c['articles'] = Article.objects.all()
    except:
        c['articles'] = u'مقاله ای وارد نشده!'
    try:
        c['catalog'] = Catalog.objects.all()[0]
    except:
        c['catalog'] = u'کاتالوگ اضافه نشده'

    return render_to_response('article_single.html', c)

def articles(request):
    request.session[translation.LANGUAGE_SESSION_KEY] = user_language
    c = {}
    c['LANGUAGES'] = settings.LANGUAGES
    c['SELECTEDLANG'] = request.LANGUAGE_CODE
    try:
        c['articles'] = Article.objects.all()
    except:
        c['articles'] = u'مقاله ای وارد نشده!'
    try:
        c['catalog'] = Catalog.objects.all()[0]
    except:
        c['catalog'] = u'کاتالوگ اضافه نشده'

    return render_to_response('articles.html', c)
<file_sep>/govarab/myapp/migrations/0007_articles.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-09 09:34
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0006_auto_20170609_1309'),
    ]

    operations = [
        migrations.CreateModel(
            name='Articles',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(default=b'', max_length=100, verbose_name='\u0639\u0646\u0648\u0627\u0646')),
                ('text', models.TextField(verbose_name='\u0645\u062a\u0646')),
                ('image', models.ImageField(blank=True, null=True, upload_to=b'images/articles/', verbose_name='\u0639\u06a9\u0633')),
                ('link', models.URLField(verbose_name='source link')),
                ('updated_at', models.DateTimeField(auto_now=True)),
            ],
            options={
                'verbose_name': 'article',
                'verbose_name_plural': 'articles',
            },
        ),
    ]
<file_sep>/govarab/locale/fa/LC_MESSAGES/django.po
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <<EMAIL>>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-06-11 15:39+0430\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <<EMAIL>>\n"
"Language-Team: LANGUAGE <<EMAIL>>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: config/settings.py:123
msgid "Farsi"
msgstr ""

#: config/settings.py:124
msgid "Arabic"
msgstr ""

#: config/settings.py:125
msgid "English"
msgstr ""

#: myapp/models.py:11 myapp/models.py:82
msgid "small image"
msgstr "تصویر کوچک"

#: myapp/models.py:13 myapp/models.py:84
msgid "large image"
msgstr "تصویر بزرگ"

#: myapp/models.py:14 myapp/models.py:149 myapp/models.py:162
msgid "title"
msgstr "عنوان"

#: myapp/models.py:30 myapp/models.py:31
msgid "Gallery"
msgstr "گالری"

#: myapp/models.py:38 myapp/models.py:120 myapp/models.py:164
msgid "image"
msgstr "عکس"

#: myapp/models.py:44
msgid "Slides image"
msgstr "تصویر اسلاید"

#: myapp/models.py:45
msgid "Slides Images"
msgstr "تصاویر اسلایدر"

#: myapp/models.py:52
msgid "category name"
msgstr "نام دسته بندی"

#: myapp/models.py:58 myapp/models.py:59
msgid "Product Category"
msgstr "دسته بندی محصولات"

#: myapp/models.py:65
msgid "product name"
msgstr "نام محصول"

#: myapp/models.py:66
msgid "product category"
msgstr "دسته بندی محصول"

#: myapp/models.py:67 myapp/models.py:189
msgid "description"
msgstr "توضیحات"

#: myapp/models.py:74
msgid "Product"
msgstr "محصول"

#: myapp/models.py:75
msgid "Products"
msgstr "محصولات"

#: myapp/models.py:81
msgid "product"
msgstr "محصول"

#: myapp/models.py:93
msgid "Product Image"
msgstr "تصویر محصول"

#: myapp/models.py:94
msgid "Products Images"
msgstr "تصویر محصول"

#: myapp/models.py:99
msgid "question"
msgstr "پرسش"

#: myapp/models.py:100
msgid "answer"
msgstr "پاسخ"

#: myapp/models.py:108
msgid "FAQ"
msgstr "سؤالات متداول"

#: myapp/models.py:109
msgid "FAQs"
msgstr "سؤالات متداول"

#: myapp/models.py:116 myapp/models.py:184
msgid "name"
msgstr "نام"

#: myapp/models.py:117
msgid "post"
msgstr "سمت"

#: myapp/models.py:118
msgid "CV"
msgstr ""

#: myapp/models.py:119
msgid "email"
msgstr "ایمیل"

#: myapp/models.py:122 myapp/models.py:135
msgid "priority"
msgstr "ترتیب چیدمان"

#: myapp/models.py:128 myapp/models.py:129
msgid "Team"
msgstr "تیم فنی"

#: myapp/models.py:134 myapp/models.py:163
msgid "text"
msgstr "متن"

#: myapp/models.py:141 myapp/models.py:142
msgid "Slogan"
msgstr "شعار تبلیغاتی"

#: myapp/models.py:150
msgid "file"
msgstr "فایل"

#: myapp/models.py:156 myapp/models.py:157
msgid "catalog"
msgstr "کاتالوگ"

#: myapp/models.py:165
msgid "Reference link"
msgstr "لینک منبع"

#: myapp/models.py:166
msgid "Reference title"
msgstr "عنوان منبع"

#: myapp/models.py:174
msgid "article"
msgstr "مقاله"

#: myapp/models.py:175
msgid "articles"
msgstr "مقالات"

#: myapp/models.py:181
msgid "Resellers"
msgstr "نمایندگان فروش"

#: myapp/models.py:182
msgid "Representatives"
msgstr "عاملین فروش"

#: myapp/models.py:185
msgid "phone"
msgstr "تلفن"

#: myapp/models.py:186
msgid "address"
msgstr "آدرس"

#: myapp/models.py:187
msgid "Latitude"
msgstr "عرض جغرافیایی"

#: myapp/models.py:188
msgid "Longitude"
msgstr "طول جغرافیایی"

#: myapp/models.py:190
msgid "type"
msgstr "نوع"

#: myapp/models.py:197
msgid "dealership"
msgstr "نمایندگی"

#: myapp/models.py:198
msgid "dealerships"
msgstr "نمایندگی ها"

#: templates/article_single.html:18 templates/articles.html:18
#: templates/index.html:14 templates/product_details.html:18
msgid "دانلود کاتالوگ"
msgstr ""

#: templates/article_single.html:27 templates/articles.html:27
#: templates/index.html:23 templates/product_details.html:27
msgid "خانه"
msgstr ""

#: templates/article_single.html:28 templates/articles.html:28
#: templates/index.html:24 templates/product_details.html:28
msgid "درباره ما"
msgstr ""

#: templates/article_single.html:29 templates/articles.html:29
#: templates/index.html:25 templates/product_details.html:29
msgid "محصولات"
msgstr ""

#: templates/article_single.html:30 templates/articles.html:30
#: templates/index.html:26 templates/index.html:290
#: templates/product_details.html:30
msgid "سؤالات متداول"
msgstr ""

#: templates/article_single.html:31 templates/articles.html:31
#: templates/articles.html:53 templates/index.html:27
#: templates/product_details.html:31
msgid "مقالات علمی"
msgstr ""

#: templates/article_single.html:32 templates/articles.html:32
#: templates/index.html:28 templates/product_details.html:32
msgid "گالری"
msgstr ""

#: templates/article_single.html:33 templates/articles.html:33
#: templates/index.html:29 templates/index.html:395
#: templates/product_details.html:33
msgid "نمایندگی ها"
msgstr ""

#: templates/article_single.html:34 templates/articles.html:34
#: templates/index.html:30 templates/product_details.html:34
msgid "اعضای تیم"
msgstr ""

#: templates/article_single.html:35 templates/articles.html:35
#: templates/index.html:31 templates/product_details.html:35
msgid "تماس با ما "
msgstr ""

#: templates/article_single.html:58
msgid "لیست مقالات علمی"
msgstr ""

#: templates/article_single.html:87
msgid "منبع"
msgstr ""

#: templates/article_single.html:100 templates/articles.html:79
#: templates/index.html:569 templates/product_details.html:115
msgid "GOWARAB"
msgstr "گواراب"

#: templates/articles.html:67 templates/index.html:342
msgid "بیشتر بخوانید"
msgstr ""

#: templates/base.html:9
msgid "گواراب"
msgstr ""

#: templates/index.html:93
msgid "درباره گواراب"
msgstr ""

#: templates/index.html:96
msgid ""
"شرکت گواراب سازان دشت سبز که بطور کلّی ساختار خویش را بر فعّالیّت در صنعت تصفیه "
"ی آب؛ با همه ی گرایش های تخصّصی و مؤلّفه های علمی دربرگیرنده ی این صنعت، طرح "
"ریزی کرده است، در تدوین چشم انداز، اهداف کلان و راه های دستیابی به آن ها و "
"در همه جای فعّالیّت خویش از تأمین موادّ اوّلیّه تا تولید محصولات نهایی و از "
"مستندسازی تا اجرای فرایندهای متعدّد سازمانی و از تأمین و آموزش نیروهای انسانی "
"تا شاخص های انتخاب منابع برون سازمانی مانند شعب و نمایندگان فروش و خدمات پس "
"از فروش و نیز فعّالیّت های برون سپاری شده مانند صنایع میانی، نصّاب ها و عوامل "
"لجستیک، به رویکردهای ذیل که نقشی ارزشی و غیر قابل اغماض دارد پایبندی کامل "
"دارد:"
msgstr ""

#: templates/index.html:99
msgid "پاسخگویی"
msgstr ""

#: templates/index.html:101
msgid ""
"در شرکت گواراب سازان دشت سبز، مسؤولیّت ها به نحوی مستند، آموزش و پایش شده اند "
"که چه در فرایندهای درون سازمانی و چه فرایندهای مرتبط با مشتری، پاسخگویی به "
"عنوان یک رویکرد راهبردی و در جهت بهبود اثربخش کار تعریف شده است."
msgstr ""

#: templates/index.html:106
msgid "خدمات"
msgstr ""

#: templates/index.html:108
msgid ""
"شرکت گواراب سازان دشت سبز در رویکرد ارزشی خود، برخورداری مشتریان را نه تنها "
"به بایسته های خدمات مرتبط با محصولات خویش مانند پاسخگویی اثربخش و ضمانت "
"معتبر رسمیّت سازمانی داده است بلکه افزایش دانش و آگاهی از صنعت آب را بخصوص در "
"زمینه ی آب شرب و استانداردهای لازم آن و نیز آنچه که برای مصرف کنندگان این "
"مادّه حیاتی تصمیم سازی می نماید در زمره ی خدمات خویش می داند."
msgstr ""

#: templates/index.html:113
msgid "پژوهش و توسعه"
msgstr ""

#: templates/index.html:115
msgid ""
"این شرکت در راستای پیشرفت تمام علوم و صنایع، بر خود می داند نسبت به شناسایی "
"آنچه کیفیّت ضروری ترین نیاز زیستی مصرف کنندگان را داراست مطالعه نماید؛ مطالعه "
"ای که طبق هدف گذاری واحد R&D منجر به طرح های قابل اجرای صنعتی گردد. مصرف "
"کنندگان محصولات این شرکت از چنان ارزشی برخوردازند که سهمی از فروش شرکت صرف "
"مطالعه، طراحی و ساخت ملزومات ارتقایی کیفیّت آب مصرفی ایشان گردد."
msgstr ""

#: templates/index.html:120
msgid "کیفیّت"
msgstr ""

#: templates/index.html:122
msgid ""
"کیفیّت به عنوان یکی از اصلی ترین و قدرتمندترین فرایندهای سازمانی این شرکت، "
"تصمیم سازی کار، ابزارهای پایش و کنترل دائمی، اقدامات اصلاحی و بهبود مستمرّ را "
"در کلّیه ی مراحل پیش، حین و پس از تولید ایجاد می کند."
msgstr ""

#: templates/index.html:136
msgid "چشم انداز شرکت "
msgstr ""

#: templates/index.html:146
msgid ""
"تا پایان سال ۱۳۹۸، ارائه دهنده محصولات و خدمات با مزیت رقابتی ویژه در کشور و "
"وسعت بخشی به قلمروی حضور در خارج از مرزهای کشور و تبدیل شدن به شرکتی سرآمد و "
"جهانی در صنعت پالایش آب باشیم بطوریکه نام تجاری شرکت در بازارهای منطقه "
"همواره مورد توجه قرار گیرد."
msgstr ""

#: templates/index.html:163
msgid "درباره درم"
msgstr ""

#: templates/index.html:166
msgid ""
"شرکت گواراب سازان دشت سبز دارای پروانه بهره برداری شماره ی … از سازمان صنعت، "
"معدن و تجارت، فیلترهای کربنی خود را با شناسه ی صنعتی (برند) درم عرضه می "
"نماید. محصولاتی که تاکنون تحت این  برند تولید شده اند همگی دارای کد انحصاری "
"ایران در زمره کالاهای ثبت شده در سازمان ایران کد هستند. برند درم در داخل و "
"خارج از کشور ثبت شده و شرکت گواراب سازان دشت سبز صاحب امتیاز مادّی و معنوی آن "
"است و حقّ تولید صنعتی این محصول با برند درم فقط و فقط در انحصار این شرکت می "
"باشد. بنابراین هرگونه کپی برداری، تولید و توزیع محصولات شرکت توسطّ اشخاص "
"حقیقی یا حقوقی با این شناسه ی صنعتی غیر مجاز و پیگرد قانونی دارد."
msgstr ""

#: templates/index.html:175
msgid "مأموریت گواراب"
msgstr ""

#: templates/index.html:182
msgid "در افق این سند تا پایان سال ۱۳۹۸، ماموريت شرکت گواراب به شرح زیر است:"
msgstr ""

#: templates/index.html:187 templates/index.html:188
msgid "فناوری"
msgstr ""

#: templates/index.html:190
msgid ""
"از این نظر شركت همواره اقدام به پایش مستمر فناوری های روز محصولات و "
"فرایندهای تولید نموده و توسعه و بهبود محصولات و بومی سازی تولید ماشین آلات "
"تولیدی با رویکرد مکانیزه نمودن تولید و افزایش بهره وری تولید را سرلوحه کار "
"خود قرار می دهد."
msgstr ""

#: templates/index.html:194 templates/index.html:195
msgid "بازارها"
msgstr ""

#: templates/index.html:197
msgid ""
"ما با تمام توان ميكوشيم شركت گواراب را در صحنه رقابت جهاني موفق كنيم. "
"بازارهای مد نظر شرکت در افق این ماموریت عبارتند از: بازار ایران، شمال "
"آفریقا، خاور میانه و اروپا"
msgstr ""

#: templates/index.html:201 templates/index.html:202
msgid "محصولات يا خدمات"
msgstr ""

#: templates/index.html:204
msgid ""
" انواع فیلترهای کربنی، انواع فیلترهای الیافی، تولید کربن اکتیو، تولید انواع "
"دستگاه های تصفیه آب، خدمات آزمایشگاهی، ارایه مشاوره های فنی و مهندسی، تولید "
"محصولاتي با كيفيت بسيار بالا از لحاظ ویژگی های عملکردی، سلامتی و ایمنی و "
"ظاهری متناسب با آب منطقه با استفاده از مواد اولیه متناسب با سلامت آب شرب."
msgstr ""

#: templates/index.html:208 templates/index.html:209
msgid "مشتريان"
msgstr ""

#: templates/index.html:211
msgid ""
"ما بر اين باوريم كه پيش از هر چيز در برابر نیازهای حال و آینده مشتریان و "
"سلامت جامعه ملی و جهانی مسئول هستیم و خود را پاسخگوی مشتریان در قبال محصولات "
"و خدمات خود می دانیم و احترام به مشتریان و جلب اعتماد آنها را سر لوحه کار "
"خود قرار می دانیم و به دنبال خلق مشتریان وفادار از طریق ارزش آفرینی پایدار "
"برای آنها هستیم."
msgstr ""

#: templates/index.html:217 templates/index.html:218
msgid "توجه به كاركنان"
msgstr ""

#: templates/index.html:220
msgid ""
"آموزش دادن؛ ايجاد انگيزه؛ حفظ و نگهداري كاركناني كه از نظر توانايي، اخلاق و "
"تعهد به سازمان داراي ويژگي ممتاز هستند؛ ایجاد محيط كار مناسب؛ جبران خدمت بر "
"مبناي عملكرد جهت رشد و تأمين امنيت شغلي براي كاركنان؛ایجاد حس تعلق به سازمان "
"و حس افتخار نسبت به کار در شرکت."
msgstr ""

#: templates/index.html:224 templates/index.html:225
msgid "ويژگي های ممتاز"
msgstr ""

#: templates/index.html:227
msgid ""
"توان علمی و دانش فنی و تواناييهاي خلاق و سازنده مدیران؛پایبندی به مباحث کیفی "
"محصولات و مشتری مداری برای حفظ فاصله از رقبا؛ توانمندی در تولید محصولات "
"متنوع؛"
msgstr ""

#: templates/index.html:231 templates/index.html:232
msgid "فلسفه"
msgstr ""

#: templates/index.html:234
msgid ""
"ما بر اين باوريم كه حرکت در جهت سلامت انسانها از ارزشمندترين هدفهاي بشریت "
"است و فلسفه گواراب در اين جمله خلاصه ميشود: تقويت روح مشاركت صنعتگر، ایده "
"پرداز و بازاریاب و توجه به مكاني كه افراد بتوانند دانش كسب و تولید كنند، "
"تجربه بياموزند و وقت خود را با مسرت و خوشي بگذرانند."
msgstr ""

#: templates/index.html:238 templates/index.html:239
msgid "توجه به بقا، رشد و سودآوري"
msgstr ""

#: templates/index.html:241
msgid ""
"از اين نظر شركت عمليات خود را با احتياط انجام ميدهد و ميزان سود و رشد خود را "
"به گونه اي تنظيم مينمايد كه در نهايت موفقيت بلند مدت تضمين شود. به عبارت "
"دیگر شركت با چشم داشتي به سودي منصفانه، ميكوشد بهگونهاي كه منافع مشتريان، "
"كاركنان، سهامداران،تامین کنندگان و جامعه تأمين شود."
msgstr ""

#: templates/index.html:254
msgid "محصولات گواراب"
msgstr ""

#: templates/index.html:264
msgid "همه"
msgstr ""

#: templates/index.html:301
msgid "پرسش های مشتریان و پاسخ آنها"
msgstr ""

#: templates/index.html:327
msgid "آخرین مقالات علمی"
msgstr ""

#: templates/index.html:336
msgid "خواندن کامل مقاله"
msgstr ""

#: templates/index.html:347
msgid "خواندن تمامی مقاله ها"
msgstr ""

#: templates/index.html:358
msgid "گالری تصاویر"
msgstr ""

#: templates/index.html:387
msgid ""
"ما اکنون می توانیم با معتبرترین شرکتهای عرصه آب دنیا بر سر کیفیت محصول و "
"خدمات خود به رقابت بپردازیم"
msgstr ""

#: templates/index.html:402
msgid "نمایندگان فروش"
msgstr ""

#: templates/index.html:405
msgid "عاملین فروش"
msgstr ""

#: templates/index.html:417 templates/index.html:460
msgid "نام"
msgstr ""

#: templates/index.html:420 templates/index.html:463
msgid "تلفن"
msgstr ""

#: templates/index.html:423 templates/index.html:466
msgid "آدرس"
msgstr ""

#: templates/index.html:426 templates/index.html:469
msgid "توضیحات"
msgstr ""

#: templates/index.html:436 templates/index.html:479
msgid "مشاهده در نقشه گوگل"
msgstr ""

#: templates/index.html:505
msgid "اعضای تیم فنی"
msgstr ""

#: templates/index.html:517
msgid "دانلود رزومه"
msgstr ""

#: templates/index.html:538
msgid "تماس با ما"
msgstr ""

#: templates/index.html:558
msgid "025 - 36647647"
msgstr "۰۲۵ - ۳۶۶۴۷۶۴۷"

#: templates/index.html:558
msgid "0912 651 2267"
msgstr "۰۹۱۲ ۶۵۱ ۲۲۶۷"

#: templates/index.html:560
msgid "قم، کیلومتر ۴ جاده قدیم قم-تهران، جنب مجتمع بعثت"
msgstr ""

#: templates/product_details.html:58
msgid "دسته بندی"
msgstr ""

#: templates/product_details.html:88
msgid "تصاویر محصول"
msgstr ""

#~ msgid "Read the full article"
#~ msgstr "خواندن کامل مقاله"

#~ msgid "Read more"
#~ msgstr "بیشتر بخوانید"

#~ msgid "Read our full blog"
#~ msgstr "خواندن تمامی مقاله ها"

#~ msgid "category description"
#~ msgstr "توضیح دسته بندی"

#~ msgid "category image"
#~ msgstr "تصویر دسته بندی"

#~ msgid "product model"
#~ msgstr "مدل محصول"

#~ msgid "product specification"
#~ msgstr "مشخصات محصول"

#~ msgid "product price"
#~ msgstr "قیمت محصول"
<file_sep>/govarab/myapp/migrations/0014_auto_20170610_2329.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-10 18:59
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0013_auto_20170610_2322'),
    ]

    operations = [
        migrations.AlterField(
            model_name='dealership',
            name='type',
            field=models.CharField(choices=[(1, '\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0641\u0631\u0648\u0634'), (2, '\u0639\u0627\u0645\u0644\u06cc\u0646 \u0641\u0631\u0648\u0634')], max_length=30, verbose_name='\u0646\u0648\u0639'),
        ),
    ]
<file_sep>/govarab/myapp/admin.py
from django import forms
import myapp.translation
from modeltranslation.admin import TranslationAdmin
from django.contrib import admin
from .models import *

class ProductImageInline(admin.TabularInline):
    model = ProductImage
    extra = 1

class ExampleAdmin(TranslationAdmin):
    pass

@admin.register(Product)
class ProductAdmin(ExampleAdmin, admin.ModelAdmin):
    inlines = [ProductImageInline, ]
    formfield_overrides = {models.TextField: {'widget': forms.Textarea(attrs={'class': 'ckeditor'})}, }

    class Media:
        js = ('ckeditor/ckeditor.js',)

@admin.register(Article, Dealership)
class ArticleAdmin(ExampleAdmin, admin.ModelAdmin):
    formfield_overrides = {models.TextField: {'widget': forms.Textarea(attrs={'class': 'ckeditor'})}, }

    class Media:
        js = ('ckeditor/ckeditor.js',)

@admin.register(Gallery, ProductCategory, FAQ, Team, Slogan, Catalog, SlidesImages)
class ExampleAdmin(TranslationAdmin):
    pass
<file_sep>/govarab/static/js/navigation.js

/*-----------------------------------
Show Active Navigation
-----------------------------------*/

var sections = $('.section'),
    links = $('.scroll.link');

$(window).scroll(function() {
  "use strict";
  var currentPosition = $(this).scrollTop();
  links.removeClass('selected');

  sections.each(function() {
      var top = $(this).offset().top - 75,
          bottom = top + $(this).height();

      if (currentPosition >= top && currentPosition <= bottom) {
          $('a[href="#' + this.id + '"]').addClass('selected');
      }
  });
});

/*-----------------------------------
Show Navigation Bar on Scroll Down
-----------------------------------*/

$(document).ready(function () {
  "use strict";
  var menu = $('#navigation');
  var logo = $('#logo');

  $(window).scroll(function () {
    "use strict";
    var y = $(this).scrollTop();
    var z = $('#about').offset().top - 250;

    if (y >= z) {
        menu.removeClass('hide-nav').addClass('show-nav');
        logo.removeClass('hide-nav').addClass('show-nav');
    }
    else {
        menu.removeClass('show-nav').addClass('hide-nav');
        logo.removeClass('show-nav').addClass('hide-nav');
    }
  });
});<file_sep>/govarab/myapp/migrations/0017_auto_20170611_1541.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-11 11:11
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0016_auto_20170611_1540'),
    ]

    operations = [
        migrations.AddField(
            model_name='article',
            name='reference_title_ar',
            field=models.CharField(default=b'', max_length=300, null=True, verbose_name='Reference title'),
        ),
        migrations.AddField(
            model_name='article',
            name='reference_title_en',
            field=models.CharField(default=b'', max_length=300, null=True, verbose_name='Reference title'),
        ),
        migrations.AddField(
            model_name='article',
            name='reference_title_fa',
            field=models.CharField(default=b'', max_length=300, null=True, verbose_name='Reference title'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0012_dealership.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-10 15:50
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0011_auto_20170610_1949'),
    ]

    operations = [
        migrations.CreateModel(
            name='Dealership',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100, verbose_name='\u0646\u0627\u0645')),
                ('name_fa', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645')),
                ('name_ar', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645')),
                ('name_en', models.CharField(max_length=100, null=True, verbose_name='\u0646\u0627\u0645')),
                ('tel', models.CharField(max_length=14, verbose_name='phone')),
                ('address', models.CharField(max_length=300, verbose_name='address')),
                ('address_fa', models.CharField(max_length=300, null=True, verbose_name='address')),
                ('address_ar', models.CharField(max_length=300, null=True, verbose_name='address')),
                ('address_en', models.CharField(max_length=300, null=True, verbose_name='address')),
                ('description', models.TextField(verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('description_fa', models.TextField(null=True, verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('description_ar', models.TextField(null=True, verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('description_en', models.TextField(null=True, verbose_name='\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0645\u062d\u0635\u0648\u0644')),
                ('type', models.CharField(choices=[('Resellers', 'Resellers'), ('Representatives', 'Representatives')], max_length=30, verbose_name='type')),
            ],
            options={
                'ordering': ['name'],
                'verbose_name': 'dealership',
                'verbose_name_plural': 'dealerships',
            },
        ),
    ]
<file_sep>/govarab/myapp/migrations/0011_auto_20170610_1949.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-10 15:19
from __future__ import unicode_literals

from django.db import migrations

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0010_auto_20170609_1807'),
    ]

    operations = [
        migrations.AlterModelOptions(
            name='slidesimages',
            options={'verbose_name': '\u062a\u0635\u0648\u06cc\u0631 \u0627\u0633\u0644\u0627\u06cc\u062f', 'verbose_name_plural': '\u062a\u0635\u0627\u0648\u06cc\u0631 \u0627\u0633\u0644\u0627\u06cc\u062f\u0631'},
        ),
    ]
<file_sep>/govarab/myapp/migrations/0015_auto_20170611_0507.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-11 00:37
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0014_auto_20170610_2329'),
    ]

    operations = [
        migrations.AddField(
            model_name='dealership',
            name='lat',
            field=models.FloatField(blank=True, null=True, verbose_name='Latitude'),
        ),
        migrations.AddField(
            model_name='dealership',
            name='lon',
            field=models.FloatField(blank=True, null=True, verbose_name='Longitude'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='type',
            field=models.CharField(choices=[(b'1', '\u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u0627\u0646 \u0641\u0631\u0648\u0634'), (b'2', '\u0639\u0627\u0645\u0644\u06cc\u0646 \u0641\u0631\u0648\u0634')], max_length=30, verbose_name='\u0646\u0648\u0639'),
        ),
    ]
<file_sep>/govarab/myapp/migrations/0016_auto_20170611_1540.py
# -*- coding: utf-8 -*-
# Generated by Django 1.10.4 on 2017-06-11 11:10
from __future__ import unicode_literals

from django.db import migrations, models

class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0015_auto_20170611_0507'),
    ]

    operations = [
        migrations.AddField(
            model_name='article',
            name='reference_title',
            field=models.CharField(default=b'', max_length=300, verbose_name='Reference title'),
        ),
        migrations.AlterField(
            model_name='article',
            name='link',
            field=models.URLField(verbose_name='Reference link'),
        ),
        migrations.AlterField(
            model_name='article',
            name='title',
            field=models.CharField(default=b'', max_length=300, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AlterField(
            model_name='article',
            name='title_ar',
            field=models.CharField(default=b'', max_length=300, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AlterField(
            model_name='article',
            name='title_en',
            field=models.CharField(default=b'', max_length=300, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AlterField(
            model_name='article',
            name='title_fa',
            field=models.CharField(default=b'', max_length=300, null=True, verbose_name='\u0639\u0646\u0648\u0627\u0646'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='lat',
            field=models.FloatField(blank=True, null=True, verbose_name='\u0639\u0631\u0636 \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc'),
        ),
        migrations.AlterField(
            model_name='dealership',
            name='lon',
            field=models.FloatField(blank=True, null=True, verbose_name='\u0637\u0648\u0644 \u062c\u063a\u0631\u0627\u0641\u06cc\u0627\u06cc\u06cc'),
        ),
    ]
<file_sep>/govarab/myapp/translation.py
from modeltranslation.translator import register, TranslationOptions
from myapp.models import *

@register(Gallery)
class GalleryTranslationOptions(TranslationOptions):
    fields = ('alt',)

@register(SlidesImages)
class TeamTranslationOptions(TranslationOptions):
    fields = ()

@register(ProductCategory)
class ProductCategoryTranslationOptions(TranslationOptions):
    fields = ('name',)

@register(Product)
class ProductTranslationOptions(TranslationOptions):
    fields = ('name', 'description',)

@register(FAQ)
class FAQTranslationOptions(TranslationOptions):
    fields = ('question', 'answer',)

@register(Team)
class TeamTranslationOptions(TranslationOptions):
    fields = ('name', 'post',)

@register(Slogan)
class TeamTranslationOptions(TranslationOptions):
    fields = ('text',)

@register(Catalog)
class TeamTranslationOptions(TranslationOptions):
    fields = ()

@register(Article)
class TeamTranslationOptions(TranslationOptions):
    fields = ('title', 'text', 'reference_title')

@register(Dealership)
class TeamTranslationOptions(TranslationOptions):
    fields = ('name', 'address', 'description',)

branch_name: refs/heads/master

languages:
Markdown
JavaScript
Gettext Catalog
Python


text:
<file_sep># tictac
TicTac - a TicToc Pebble watchface variant
<file_sep>#include <pebble.h>

#define COLORS PBL_IF_COLOR_ELSE(true, false)
#define ANTIALIASING true

#define HAND_MARGIN 8
#define FINAL_RADIUS 60

#define ANIMATION_DURATION 600
#define ANIMATION_DELAY 600

typedef struct {
  int hours;
  int minutes;
} Time;

static Window *s_main_window;
static Layer *s_canvas_layer;
static TextLayer *s_hour_layer, *s_minute_layer;

static GPoint s_center;
static Time s_last_time, s_anim_time;

static int background_color, s_radius = 0;

static bool s_animating = false, background_on_conf = false;

/*************************** appMessage **************************/

static void inbox_received_callback(DictionaryIterator *iterator,
                                    void *context) {
  // Read tuples for data
  Tuple *background_color_tuple =
      dict_find(iterator, MESSAGE_KEY_BACKGROUND_COLOR);
  Tuple *background_on_tuple = dict_find(iterator, MESSAGE_KEY_BACKGROUND_ON);

  // If background color and enabled
  if (background_color_tuple && background_on_tuple) {
    // Set background on/off
    background_on_conf = (bool)background_on_tuple->value->int16;
    persist_write_bool(MESSAGE_KEY_BACKGROUND_ON, background_on_conf);
    // Set background color if enabled, otherwise we load the default one - red
    background_color = background_on_conf
                           ? (int)background_color_tuple->value->int32
                           : 0x0055FF;
    persist_write_int(MESSAGE_KEY_BACKGROUND_COLOR, background_color);
  }

  // Redraw
  if (s_canvas_layer) {
    layer_mark_dirty(s_canvas_layer);
  }
}

static void inbox_dropped_callback(AppMessageResult reason, void *context) {
  APP_LOG(APP_LOG_LEVEL_ERROR, "Message dropped!");
}

static void outbox_failed_callback(DictionaryIterator *iterator,
                                   AppMessageResult reason, void *context) {
  APP_LOG(APP_LOG_LEVEL_ERROR, "Outbox send failed!");
}

static void outbox_sent_callback(DictionaryIterator *iterator, void *context) {
  APP_LOG(APP_LOG_LEVEL_INFO, "Outbox send success!");
}

/************************************ UI **************************************/

static int hours_to_minutes(int hours_out_of_12) {
  return (int)(float)(((float)hours_out_of_12 / 12.0F) * 60.0F);
}

static void tick_handler(struct tm *tick_time, TimeUnits changed) {

  // Store time
  s_last_time.hours = tick_time->tm_hour;
  s_last_time.hours -= (s_last_time.hours > 12) ? 12 : 0;
  s_last_time.minutes = tick_time->tm_min;

  // Redraw
  if (s_canvas_layer) {
    layer_mark_dirty(s_canvas_layer);
  }
}

static void update_proc(Layer *layer, GContext *ctx) {

  GRect bounds = layer_get_bounds(layer);

  graphics_context_set_fill_color(ctx, GColorWhite);
  graphics_fill_rect(ctx, bounds, 0, GCornerNone);
  graphics_context_set_stroke_color(ctx, GColorWhite);
  graphics_context_set_antialiased(ctx, ANTIALIASING);

  // the 12 dot
  graphics_context_set_fill_color(ctx, GColorBlack);
  graphics_context_set_stroke_color(ctx, GColorBlack);
  graphics_fill_circle(ctx, GPoint(bounds.size.w / 2, 12), 6);
  graphics_draw_circle(ctx, GPoint(bounds.size.w / 2, 12), 6);

  // Don't use current time while animating
  Time mode_time = (s_animating) ? s_anim_time : s_last_time;

  // Adjust for minutes through the hour
  float minute_angle = TRIG_MAX_ANGLE * mode_time.minutes / 60;
  float hour_angle;
  if (s_animating) {
    // Hours out of 60 for smoothness
    hour_angle = TRIG_MAX_ANGLE * mode_time.hours / 60;
  } else {
    hour_angle = TRIG_MAX_ANGLE * mode_time.hours / 12;
  }
  hour_angle += (minute_angle / TRIG_MAX_ANGLE) * (TRIG_MAX_ANGLE / 12);

  // Plot hands
  GPoint minute_hand = (GPoint){
      .x = (int16_t)(sin_lookup(TRIG_MAX_ANGLE * mode_time.minutes / 60) *
                     (int32_t)(s_radius - HAND_MARGIN + 2) / TRIG_MAX_RATIO) +
           s_center.x,
      .y = (int16_t)(-cos_lookup(TRIG_MAX_ANGLE * mode_time.minutes / 60) *
                     (int32_t)(s_radius - HAND_MARGIN + 2) / TRIG_MAX_RATIO) +
           s_center.y,
  };
  GPoint hour_hand = (GPoint){
      .x = (int16_t)(sin_lookup(hour_angle) *
                     (int32_t)(s_radius - (2 * HAND_MARGIN) - 5) /
                     TRIG_MAX_RATIO) +
           s_center.x,
      .y = (int16_t)(-cos_lookup(hour_angle) *
                     (int32_t)(s_radius - (2 * HAND_MARGIN) - 5) /
                     TRIG_MAX_RATIO) +
           s_center.y,
  };

  graphics_context_set_stroke_width(ctx, 10);

  graphics_context_set_stroke_color(ctx, GColorBlack);
  if (s_radius > HAND_MARGIN) {
    graphics_draw_line(ctx, s_center, minute_hand);
  }

  graphics_context_set_stroke_width(ctx, 10);

  graphics_context_set_stroke_color(ctx, GColorFromHEX(background_color));
  // Draw hands with positive length only
  if (s_radius > 2 * HAND_MARGIN) {
    graphics_draw_line(ctx, s_center, hour_hand);
  }
}

static int anim_percentage(AnimationProgress dist_normalized, int max) {
  return (
      int)(float)(((float)dist_normalized / (float)ANIMATION_NORMALIZED_MAX) *
                  (float)max);
}

static void radius_update(Animation *anim, AnimationProgress dist_normalized) {
  s_radius = anim_percentage(dist_normalized, FINAL_RADIUS);

  layer_mark_dirty(s_canvas_layer);
}

static void hands_update(Animation *anim, AnimationProgress dist_normalized) {
  s_anim_time.hours =
      anim_percentage(dist_normalized, hours_to_minutes(s_last_time.hours));
  s_anim_time.minutes = anim_percentage(dist_normalized, s_last_time.minutes);

  layer_mark_dirty(s_canvas_layer);
}

static void animation_started(Animation *anim, void *context) {
  s_animating = true;
}

static void animation_stopped(Animation *anim, bool stopped, void *context) {
  s_animating = false;
}

static void animate(int duration, int delay,
                    AnimationImplementation *implementation, bool handlers) {
  Animation *anim = animation_create();
  animation_set_duration(anim, duration);
  animation_set_delay(anim, delay);
  animation_set_curve(anim, AnimationCurveEaseInOut);
  animation_set_implementation(anim, implementation);
  if (handlers) {
    animation_set_handlers(anim,
                           (AnimationHandlers){.started = animation_started,
                                               .stopped = animation_stopped},
                           NULL);
  }
  animation_schedule(anim);
}

static void window_load(Window *window) {
  Layer *window_layer = window_get_root_layer(window);
  GRect window_bounds = layer_get_bounds(window_layer);

  s_center = grect_center_point(&window_bounds);

  s_canvas_layer = layer_create(window_bounds);

  layer_set_update_proc(s_canvas_layer, update_proc);

  layer_add_child(window_layer, s_canvas_layer);

  // Create time Layer
  s_hour_layer =
      text_layer_create(GRect(0, PBL_IF_ROUND_ELSE(0, 0),
                              window_bounds.size.w / 2, window_bounds.size.h));

  s_minute_layer =
      text_layer_create(GRect(window_bounds.size.w / 2, PBL_IF_ROUND_ELSE(0, 0),
                              window_bounds.size.w / 2, window_bounds.size.h));

  // Style the time text
  text_layer_set_background_color(s_hour_layer, GColorClear);
  // text_layer_set_text_color(s_hour_layer, GColorBlueMoon);
  text_layer_set_text_alignment(s_hour_layer, GTextAlignmentCenter);

  text_layer_set_background_color(s_minute_layer, GColorClear);
  // text_layer_set_text_color(s_minute_layer, GColorBlack);
  text_layer_set_text_alignment(s_minute_layer, GTextAlignmentCenter);

  // Add layers
  layer_add_child(window_get_root_layer(window),
                  text_layer_get_layer(s_hour_layer));
  layer_add_child(window_get_root_layer(window),
                  text_layer_get_layer(s_minute_layer));
}

static void window_unload(Window *window) {
  layer_destroy(s_canvas_layer);
  // Destroy weather elements
  text_layer_destroy(s_hour_layer);
  text_layer_destroy(s_minute_layer);
}

/*********************************** App **************************************/

static void init() {
  srand(time(NULL));

  time_t t = time(NULL);
  struct tm *time_now = localtime(&t);
  tick_handler(time_now, MINUTE_UNIT);

  s_main_window = window_create();

  background_on_conf = persist_exists(MESSAGE_KEY_BACKGROUND_ON)
                           ? persist_read_bool(MESSAGE_KEY_BACKGROUND_ON)
                           : false;
  background_color = persist_exists(MESSAGE_KEY_BACKGROUND_COLOR)
                         ? persist_read_int(MESSAGE_KEY_BACKGROUND_COLOR)
                         : 0x0055FF;

  window_set_window_handlers(s_main_window,
                             (WindowHandlers){
                                 .load = window_load, .unload = window_unload,
                             });

  window_stack_push(s_main_window, true);

  tick_timer_service_subscribe(MINUTE_UNIT, tick_handler);

  // Prepare animations
  AnimationImplementation radius_impl = {.update = radius_update};
  animate(ANIMATION_DURATION, ANIMATION_DELAY, &radius_impl, false);

  AnimationImplementation hands_impl = {.update = hands_update};
  animate(2 * ANIMATION_DURATION, ANIMATION_DELAY, &hands_impl, true);

  // Register callbacks
  app_message_register_inbox_received(inbox_received_callback);
  app_message_register_inbox_dropped(inbox_dropped_callback);
  app_message_register_outbox_failed(outbox_failed_callback);
  app_message_register_outbox_sent(outbox_sent_callback);

  app_message_open(app_message_inbox_size_maximum(),
                   app_message_outbox_size_maximum());
}

static void deinit() { window_destroy(s_main_window); }

int main() {
  init();
  app_event_loop();
  deinit();
}
<file_sep>// Import the Clay package
var Clay = require('pebble-clay');
// Load our Clay configuration file
var clayConfig = require('./config');
// Initialize Clay
var clay = new Clay(clayConfig);
var messageKeys = require('message_keys');

// Listen for when the watchface is opened
Pebble.addEventListener(
    'ready', function(e) { console.log('PebbleKit JS ready!'); });

// Listen for when an AppMessage is received
Pebble.addEventListener('appmessage', function(e) {
  console.log('AppMessage received!');
  getWeather();
});

Pebble.addEventListener('webviewclosed', function(e) {
  if (e && !e.response) {
    return;
  }

  // Get the keys and values from each config item
  var dict = clay.getSettings(e.response);

  Pebble.sendAppMessage(
      dict, function(e) { console.log('Sent config data to Pebble'); },
      function(e) {
        console.log('Failed to send config data!');
        console.log(JSON.stringify(e));
      });
});

languages: Markdown C JavaScript

repo_name: twaider/tictac


text:
<file_sep><!DOCTYPE html>

    <title>Exercise #8</title>

    Jumb to bottom

Why do we use it?
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).

Jump to top

    Jumb to top

repo_language: HTML

repo_name: laithzayed/html-exersices


text:
<repo_name>depaulcdm/hw3-joezaksheske<file_sep>/README.md
## <NAME>

_This is my edit from Branch A_

*This is a different edit on the same line from branch B*

To resolve the conflict I moved the changes from branch B to line 6