Git Product home page Git Product logo

sforgcompare's Introduction

sforgcompare

Django + Heroku application which compares metadata between two Salesforce environments and presents the differences

Addons

  1. Heroku Postgres
  2. Heroku Redis
  3. Heroku Scheduler (for clearing database)

Config Variables

  1. DEFAULT_FROM_EMAIL (eg. [email protected])
  2. EMAIL_HOST (eg. smtp.gmail.com)
  3. EMAIL_HOST_PASSWORD
  4. EMAIL_HOST_USER (eg. [email protected])
  5. EMAIL_PORT (eg. 587)
  6. SALESFORCE_API_VERSION (eg. 39)
  7. SALESFORCE_CONSUMER_KEY (from Salesforce Connected App)
  8. SALESFORCE_CONSUMER_SECRET (from Salesforce Connected App)

sforgcompare's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sforgcompare's Issues

standardvalueset not showing

A compare did not show me the differences for StandardValueSet-s, then looking at all Metadata, it seems they are not listed at all.

There is no mention of which API is being used? Looking at the source in Github, I did find a WSDL for api 39, which includes this. Just I do not know what is being used at https://sforgcompare.herokuapp.com

Unable to logout session & removed Job ID

How can I remove the job Id or the URL from getting publicly accessed? I shared the URL from the results i.e. after comparison and the other person could see my results without even login?

This is disgusting that now they have access to my org metadata.

Please share the solution to clear out my comparisons & code scans through sforgcompare.
Thanks.

Deployment failing

-----> Python app detected
-----> Installing python-2.7.16
-----> Installing pip
-----> Installing SQLite3
-----> Installing requirements with pip
Collecting boto==2.38.0 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 1))
Downloading https://files.pythonhosted.org/packages/ed/bb/52b97bed7daf481fcf355fca49655e3f2b44bb8da079a94a9da420eeda06/boto-2.38.0-py2.py3-none-any.whl (1.3MB)
Collecting Django==1.6.5 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 2))
Downloading https://files.pythonhosted.org/packages/43/6c/7fffbe73fe5703125aa1c9e3279ad3a5e542128ee55a4aa83669db1985cd/Django-1.6.5-py2.py3-none-any.whl (6.7MB)
Collecting django-storages==1.1.8 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 3))
Downloading https://files.pythonhosted.org/packages/4b/b3/f8c4018ea66a66b28dda2f973d1b8032111504af2cb3cf4b945207e856e1/django-storages-1.1.8.tar.gz
Collecting dj-database-url==0.3.0 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 4))
Downloading https://files.pythonhosted.org/packages/ef/b6/9283fcf61ced22bf90e7b4a84ba5b53d126b2c9b0dc9b667347698097026/dj_database_url-0.3.0-py2.py3-none-any.whl
Collecting dj-static==0.0.5 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 5))
Downloading https://files.pythonhosted.org/packages/16/97/3c61f4e78f9608afa65019deffeaf814bb3cd88ed3da89a9d37bd652bcd2/dj-static-0.0.5.tar.gz
Collecting django-toolbelt==0.0.1 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 6))
Downloading https://files.pythonhosted.org/packages/f0/d5/c7be87a43b5b15181134a4b035c226110266acd6a4b6079ba3b797f697fa/django-toolbelt-0.0.1.tar.gz
Collecting gunicorn==18.0 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 7))
Downloading https://files.pythonhosted.org/packages/cc/8f/82d9d1ae8cd417421f4ccb04bf8a8d75767b324c50bc83a9be9d4122c01a/gunicorn-18.0.tar.gz (366kB)
Collecting psycopg2==2.7.5 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 8))
Downloading https://files.pythonhosted.org/packages/7c/e6/d5161798a5e8900f24216cb730f2c2be5e4758a80d35c8588306831c0c99/psycopg2-2.7.5-cp27-cp27mu-manylinux1_x86_64.whl (2.7MB)
Collecting pystache==0.5.4 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 9))
Downloading https://files.pythonhosted.org/packages/d6/fd/eb8c212053addd941cc90baac307c00ac246ac3fce7166b86434c6eae963/pystache-0.5.4.tar.gz (75kB)
Collecting requests==2.3.0 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 10))
Downloading https://files.pythonhosted.org/packages/f7/51/7aa1e337862118bee783c0249debd64cb07b8fbdfef154b1e185754b02d5/requests-2.3.0-py2.py3-none-any.whl (452kB)
Collecting static==1.0.2 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 11))
Downloading https://files.pythonhosted.org/packages/0c/53/7bda95b51d3ca71ffdd64b03f6ea18b024f3a111f2c465f9b6e077f03227/static-1.0.2.tar.gz
Collecting redis==2.10.3 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 13))
Downloading https://files.pythonhosted.org/packages/37/a8/42e2f2785339cd0a4b4f42316b767ccbf68acf05eb1ba20d737599cccecd/redis-2.10.3.tar.gz (86kB)
Collecting whitenoise==1.0.3 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 14))
Downloading https://files.pythonhosted.org/packages/cf/e8/adcf21db017a0a20df69d97a5077d158128973be67536d8c76a99204a5e2/whitenoise-1.0.3-py2.py3-none-any.whl
Collecting celery==3.1.0 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 15))
Downloading https://files.pythonhosted.org/packages/4c/41/73889bb38bce56ace75772fe253eeb2b5f27317acbf946573b83d55aa602/celery-3.1.0.tar.gz (1.3MB)
Collecting django-sslify==0.2.4 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 16))
Downloading https://files.pythonhosted.org/packages/2e/ba/45db1446410919f5323e41520f199d52429228c6eecd831ba2dddb88234e/django-sslify-0.2.4.tar.gz
Collecting python-postmark==0.4.4 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 17))
Downloading https://files.pythonhosted.org/packages/24/aa/a859f74bb4662215e8f479695ae366188b5c5abab176a36dfe8ad33be663/python-postmark-0.4.4.tar.gz
Collecting suds==0.4 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 18))
Downloading https://files.pythonhosted.org/packages/bc/d6/960acce47ee6f096345fe5a7d9be7708135fd1d0713571836f073efc7393/suds-0.4.tar.gz (104kB)
Collecting django-s3direct==0.3.10 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 19))
Downloading https://files.pythonhosted.org/packages/33/59/9101ba981a90024ef45c477cfd48b6bd564afe4dc68eeaa53eb7b1955822/django-s3direct-0.3.10.tar.gz
Collecting django-redis-cache==1.6.0 (from -r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 20))
Downloading https://files.pythonhosted.org/packages/cb/b7/2f5a0b6cbdfab7bb87f7ba6d07db332e76544f0d7171bf5d68a1e49a27d8/django-redis-cache-1.6.0.tar.gz
Collecting pytz>dev (from celery==3.1.0->-r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 15))
Downloading https://files.pythonhosted.org/packages/87/76/46d697698a143e05f77bec5a526bf4e56a0be61d63425b68f4ba553b51f2/pytz-2019.2-py2.py3-none-any.whl (508kB)
Collecting billiard<3.4,>=3.3.0.3 (from celery==3.1.0->-r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 15))
Downloading https://files.pythonhosted.org/packages/64/a6/d7b6fb7bd0a4680a41f1d4b27061c7b768c673070ba8ac116f865de4e7ca/billiard-3.3.0.23.tar.gz (151kB)
Collecting kombu<4.0,>=3.0.4 (from celery==3.1.0->-r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 15))
Downloading https://files.pythonhosted.org/packages/4d/0e/73ac0df8949bdb6ad81812110962b38e6bb4243c3bfdad2d9e90b5509e2e/kombu-3.0.37-py2.py3-none-any.whl (240kB)
Collecting amqp<2.0,>=1.4.9 (from kombu<4.0,>=3.0.4->celery==3.1.0->-r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 15))
Downloading https://files.pythonhosted.org/packages/ed/09/314d2788aba0aa91f2578071a6484f87a615172a98c309c2aad3433da90b/amqp-1.4.9-py2.py3-none-any.whl (51kB)
Collecting anyjson>=0.3.3 (from kombu<4.0,>=3.0.4->celery==3.1.0->-r /tmp/build_4345788c5a6349c2bb5cfb31c58b7667/requirements.txt (line 15))
Downloading https://files.pythonhosted.org/packages/c3/4d/d4089e1a3dd25b46bebdb55a992b0797cff657b4477bc32ce28038fdecbc/anyjson-0.3.3.tar.gz
Installing collected packages: boto, Django, django-storages, dj-database-url, pystache, static, dj-static, psycopg2, gunicorn, django-toolbelt, requests, redis, whitenoise, pytz, billiard, amqp, anyjson, kombu, celery, django-sslify, python-postmark, suds, django-s3direct, django-redis-cache
Running setup.py install for django-storages: started
Running setup.py install for django-storages: finished with status 'done'
Running setup.py install for pystache: started
Running setup.py install for pystache: finished with status 'done'
Running setup.py install for static: started
Running setup.py install for static: finished with status 'done'
Running setup.py install for dj-static: started
Running setup.py install for dj-static: finished with status 'done'
Running setup.py install for gunicorn: started
Running setup.py install for gunicorn: finished with status 'done'
Running setup.py install for django-toolbelt: started
Running setup.py install for django-toolbelt: finished with status 'done'
Running setup.py install for redis: started
Running setup.py install for redis: finished with status 'done'
Running setup.py install for billiard: started
Running setup.py install for billiard: finished with status 'done'
Running setup.py install for anyjson: started
Running setup.py install for anyjson: finished with status 'done'
Running setup.py install for celery: started
Running setup.py install for celery: finished with status 'done'
Running setup.py install for django-sslify: started
Running setup.py install for django-sslify: finished with status 'done'
Running setup.py install for python-postmark: started
Running setup.py install for python-postmark: finished with status 'done'
Running setup.py install for suds: started
Running setup.py install for suds: finished with status 'done'
Running setup.py install for django-s3direct: started
Running setup.py install for django-s3direct: finished with status 'done'
Running setup.py install for django-redis-cache: started
Running setup.py install for django-redis-cache: finished with status 'done'
Successfully installed Django-1.6.5 amqp-1.4.9 anyjson-0.3.3 billiard-3.3.0.23 boto-2.38.0 celery-3.1.0 dj-database-url-0.3.0 dj-static-0.0.5 django-redis-cache-1.6.0 django-s3direct-0.3.10 django-sslify-0.2.4 django-storages-1.1.8 django-toolbelt-0.0.1 gunicorn-18.0 kombu-3.0.37 psycopg2-2.7.5 pystache-0.5.4 python-postmark-0.4.4 pytz-2019.2 redis-2.10.3 requests-2.3.0 static-1.0.2 suds-0.4 whitenoise-1.0.3
-----> $ python manage.py collectstatic --noinput
Traceback (most recent call last):
File "manage.py", line 10, in
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/init.py", line 399, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/init.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/init.py", line 261, in fetch_command
commands = get_commands()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/init.py", line 107, in get_commands
apps = settings.INSTALLED_APPS
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/init.py", line 54, in getattr
self._setup(name)
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/init.py", line 49, in _setup
self._wrapped = Settings(settings_module)
File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/init.py", line 128, in init
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
import(name)
File "/tmp/build_4345788c5a6349c2bb5cfb31c58b7667/sforgcompare/settings.py", line 92, in
redis_url = urlparse.urlparse(os.environ.get('REDIS_URL'))
File "/app/.heroku/python/lib/python2.7/urlparse.py", line 143, in urlparse
tuple = urlsplit(url, scheme, allow_fragments)
File "/app/.heroku/python/lib/python2.7/urlparse.py", line 182, in urlsplit
i = url.find(':')
AttributeError: 'NoneType' object has no attribute 'find'
! Error while running '$ python manage.py collectstatic --noinput'.
See traceback above for details.
You may need to update application code to resolve this error.
Or, you can disable collectstatic for this application:
$ heroku config:set DISABLE_COLLECTSTATIC=1
https://devcenter.heroku.com/articles/django-assets
! Push rejected, failed to compile Python app.
! Push failed

Heroku Deploy fails to compile app: AttributeError: 'NoneType' object has no attribute 'find'

     $ python manage.py collectstatic --noinput
       Traceback (most recent call last):
         File "manage.py", line 10, in <module>
           execute_from_command_line(sys.argv)
         File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
           utility.execute()
         File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
           self.fetch_command(subcommand).run_from_argv(self.argv)
         File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
           commands = get_commands()
         File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 107, in get_commands
           apps = settings.INSTALLED_APPS
         File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__
           self._setup(name)
         File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 49, in _setup
           self._wrapped = Settings(settings_module)
         File "/app/.heroku/python/lib/python2.7/site-packages/django/conf/__init__.py", line 128, in __init__
           mod = importlib.import_module(self.SETTINGS_MODULE)
         File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
           __import__(name)
         File "/app/sforgcompare/settings.py", line 92, in <module>
           redis_url = urlparse.urlparse(os.environ.get('REDIS_URL'))
         File "/app/.heroku/python/lib/python2.7/urlparse.py", line 143, in urlparse
           tuple = urlsplit(url, scheme, allow_fragments)
         File "/app/.heroku/python/lib/python2.7/urlparse.py", line 182, in urlsplit
           i = url.find(':')
       AttributeError: 'NoneType' object has no attribute 'find'
 !     Error while running '$ python manage.py collectstatic --noinput'.
       See traceback above for details.
       You may need to update application code to resolve this error.
       Or, you can disable collectstatic for this application:
          $ heroku config:set DISABLE_COLLECTSTATIC=1
       https://devcenter.heroku.com/articles/django-assets
 !     Push rejected, failed to compile Python app

Org Compare

Org Compare does not seem to be working we have tried many times over the past few days and have not been able to get any results

large org comparison - Postgres error: smallest out of range

I'm comparing two full sandboxes with a large amount of metadata, and am getting this error via email:

There was an error processing your job:
smallint out of range

Please try again.

It looks like something in the pgsql table is using a smallint for a counter maybe, and is running over the upper bound. Maybe this can be adjusted to a full integer type?

Compare not working anymore ?

I'm trying to compare a production and a pre-production org, and except for labels, all items are declared to be existing on one side and not on the other, whereas they clearly physically exist on both sides

image

Is there some workaround ?

Thanks !

Deploying to Heroku fails

Not sure if I'm doing something wrong or if this is a deployment bug.

During the "Run scripts & scale dynos" step receiving the error:
Postdeploy exit code was not 0
bash: manage.py: command not found

Showing new files as difference

I tried to compare 2 orgs Sandbox and Production, It shows new Classes/Components instead of difference though the files are exist in both orgs and having difference in the code. Please verify. Thanks!
sforgcompare 1

Cannot login to Sandbox for Org One in Salesforce Org Compare Tool

Hi. I created two empty sandboxes in two different Salesforce instances for the meta data compare. I can login to the sandbox for Org Two. But I cannot login to the Sandbox in Org One. I tried the reverse of Sandboxes for Org One and Two so I know the sandbox login and access works. It's just that when I select Org One and Sandbox it does not complete the login.

Make google analytics accounts a variable

Google-assigned account code within html page such as https://github.com/benedwards44/sforgcompare/blob/master/sforgcompare/templates/base.html are specific for a specific website:

ga('create', 'UA-18288189-22', 'auto');

Another organization which uses this code would need to change it.
This means if someone forks this for their own use, it would confuse Google Analytics for this website.

So if the code is converted to a variable, this code base would be less error-prone to modify.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.