<div dir="ltr"><div><div>This may be getting tenuous, but here's another example of  what I think of as a "no-business-logic" app, and how we test-drove it:<br><br><a href="http://www.obeythetestinggoat.com/test-driving-a-docker-based-postgres-service-using-pytest.html">http://www.obeythetestinggoat.com/test-driving-a-docker-based-postgres-service-using-pytest.html</a><br><br></div>Part of my blockage may come from the words "business logic" -- we don't have much in the way of "business rules" here, so maybe Brandon's definition -- business logic is all the stuff that can be expressed in purely functional terms, with no side-effects -- could help me... But even using that, so far all I've got is that we generate some paths on disks by concatenating some strings together with some constants, so that's really clutching at straws...<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On 15 August 2014 17:01, Jonathan Hartley <span dir="ltr"><<a href="mailto:tartley@tartley.com" target="_blank">tartley@tartley.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div text="#000000" bgcolor="#FFFFFF">
    I think what you describe is a common situation. When I reorganised
    that application in a Django project, that was one aspect that
    bugged some of my coworkers.<br>
    <br>
    But I think there is potentially still some value there. The
    resulting one line business functions create a well-defined seam
    between your app's (slender) business logic and each of your
    interfaces to  external systems. That way, you make it easy for
    developers to avoid accidentally mixing 'django' code into the same
    module as code which talks to ElasticSearch.<br>
    <br>
    If you already have the discipline to maintain great separation of
    concerns (along these or other lines), which I'm guessing
    PythonAnywhere still does, then perhaps you don't need this
    particular constraint to help you maintain it.<br>
    <br>
    Is there also value in helping you plug in fake external services
    for testing purposes? I believe there is, but again, I'm not sure
    this value is greater than zero if you *already* have well
    thought-out mechanisms for plugging in fake external systems.<br>
    <br>
        Jonathan<div><div class="h5"><br>
    <br>
    <br>
    <br>
    <br>
    <div>On 15/08/14 11:22, Harry Percival
      wrote:<br>
    </div>
    <blockquote type="cite">
      <pre>Thanks Peter!  I was speaking to Brandon at Pycon this year and he was
telling me this was going to be his next talk to take on the road, and I
was definitely looking forward to seeing it.  Matt O'Donnell was also
there, and he's done a talk on this sort of thing recently too (
<a href="https://www.youtube.com/watch?v=NGhL7IA6Dik" target="_blank">https://www.youtube.com/watch?v=NGhL7IA6Dik</a>). It's definitely in the air.

My own modest attempts to approach the subject are in my book -- in chapter
19, where I show how striving for test isolation can (theoretically) push
you towards something like a lean architecture (
<a href="http://chimera.labs.oreilly.com/books/1234000000754/ch19.html" target="_blank">http://chimera.labs.oreilly.com/books/1234000000754/ch19.html</a>) and in
chapter 21, the wrap-up, where I waffle on about all these things (
<a href="http://chimera.labs.oreilly.com/books/1234000000754/ch22.html" target="_blank">http://chimera.labs.oreilly.com/books/1234000000754/ch22.html</a>)

I don't think I managed to broach the subject nearly as cleanly as Brandon
did.  I really admire his talks.  His data structures talk was one of the
top 3 I saw at Pycon this year (
<a href="http://pyvideo.org/video/2571/all-your-ducks-in-a-row-data-structures-in-the-s" target="_blank">http://pyvideo.org/video/2571/all-your-ducks-in-a-row-data-structures-in-the-s</a>).
Perfect pace, slides that complement rather than repeat the talk,
fascinating and useful content...

Anyways, back to our onions - I guess the thing that's always bothered me a
bit about the "clean architecture" is that my main project (pythonanywhere)
is "all boundaries", to use Gary Bernhardt's terminology.  Or, to put it
differently, I don't think we really have much in the way of "business
logic".  We just turn Http requests into commands that go to processes.
There's really not much in the way of "logic" in the way.  No calculations
or business rules to speak of.  So it's never seemed worth it, to us.

And sometimes I think -- aren't many web projects just thin CRUD wrappers
around a database?  Is going to all the trouble of isolating your business
logic from, eg, django, really worth it in most cases?




On 13 August 2014 13:09, Daniel Pope <a href="mailto:lord.mauve@gmail.com" target="_blank"><lord.mauve@gmail.com></a> wrote:

</pre>
      <blockquote type="cite">
        <pre>Coincidentally, I blogged on the topic of Django project organisation at
the weekend.

<a href="http://mauveweb.co.uk/posts/2014/08/organising-django-projects.html" target="_blank">http://mauveweb.co.uk/posts/2014/08/organising-django-projects.html</a>

May be of interest?

_______________________________________________
python-uk mailing list
<a href="mailto:python-uk@python.org" target="_blank">python-uk@python.org</a>
<a href="https://mail.python.org/mailman/listinfo/python-uk" target="_blank">https://mail.python.org/mailman/listinfo/python-uk</a>


</pre>
      </blockquote>
      <pre>
</pre>
      <br>
      <fieldset></fieldset>
      <br>
      <pre>_______________________________________________
python-uk mailing list
<a href="mailto:python-uk@python.org" target="_blank">python-uk@python.org</a>
<a href="https://mail.python.org/mailman/listinfo/python-uk" target="_blank">https://mail.python.org/mailman/listinfo/python-uk</a>
</pre>
    </blockquote>
    <br>
    </div></div><pre cols="72"><span class="HOEnZb"><font color="#888888">-- 
Jonathan Hartley    <a href="mailto:tartley@tartley.com" target="_blank">tartley@tartley.com</a>    <a href="http://tartley.com" target="_blank">http://tartley.com</a></font></span><span class="">
Made of meat.       <a href="tel:%2B44%207737%20062%20225" value="+447737062225" target="_blank">+44 7737 062 225</a>       twitter/skype: tartley

</span></pre>
  </div>

<br>_______________________________________________<br>
python-uk mailing list<br>
<a href="mailto:python-uk@python.org">python-uk@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-uk" target="_blank">https://mail.python.org/mailman/listinfo/python-uk</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>------------------------------<br>Harry J.W. Percival<br>------------------------------<br>Twitter: @hjwp<br>Mobile:  +44 (0) 78877 02511<br>Skype:         harry.percival
</div>